はじめに
Vonage SMS APIを使用し、Amazon API Gateway & AWS LambdaでREST APIを作成してブラウザから無料でSMSメッセージを送信する方法を作成してみました。
同じように作成する場合は、Vonageの無料アカウントを作成しお試しください。
Vonageとは
SMS、認証、Voice/音声通話、ビデオなど、様々なチャネルをクラウドAPIで提供しているコミュニケーションプラットフォームCPaasです。
Vonage
構成図

今回はシンプルにAmazon API Gateway & AWS LambdaをSAMを使用し作成しています。
コード
ファイル構成
. ├── function │ └── app.py ├── layers │ └── requirements.txt ├── samconfig.toml └── template.yaml
app.py
import json
import os
import vonage
def lambda_handler(event, context):
try:
client = vonage.Client(key=os.environ['VONAGE_API_KEY'], secret=os.environ['VONAGE_API_SECRET'])
response_data = vonage.Sms(client).send_message(
{
"from": "Vonage APIs",
"to": event['queryStringParameters']['phone_number'],
"text": event['queryStringParameters']['message'],
}
)
if response_data["messages"][0]["status"] == "0":
return {
'statusCode': 200,
'body': json.dumps('Message sent successfully.')
}
else:
raise Exception(f"{response_data['messages'][0]['error-text']}")
except Exception as e:
return {
'statusCode': 400,
'body': json.dumps(f"Message failed with error: {str(e)}")
}
template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
SendSmsInVonageFunction:
Type: 'AWS::Serverless::Function'
Properties:
FunctionName: send-sms-in-vonage
Handler: app.lambda_handler
Runtime: python3.11
CodeUri: ./function/
MemorySize: 128
Timeout: 30
Environment:
Variables:
VONAGE_API_KEY: "13ae9e6f"
VONAGE_API_SECRET: "3pyF2RuLMKJXUF62"
Layers:
- !Ref VonageLayer
Events:
VonageSmsApi:
Type: Api
Properties:
Path: /send
Method: get
VonageLayer:
Type: AWS::Serverless::LayerVersion
Properties:
Description: VonageLayer
ContentUri: ./layers/
CompatibleRuntimes:
- python3.11
LayerName: !Sub vonage-layer
RetentionPolicy: DELETE
Metadata:
BuildMethod: python3.11
作成時の注意点
- vonageをレイヤーに追加するようにする
- Vonageアカウントを作成したらVonage API DashboardからAPI keyとAPIシークレットを取得し環境変数に追加するようにする
- 電話番号は国番号+電話番号(最初の0は除く) 例:日本で09012345678なら819012345678になる
動作確認
- コードの作成ができたらsam build & sam deployをする。
- コンソールでリソースができていることを確認する。
- 作成したAPIにGETリクエストをする。
- SMSが送られてきたら成功!


終わりに
以上のように、誰でも無料で簡単にSMSを送信するAPIを作ることができます。画面に組み込んだりAPI以外の方法でSMSを送信したりと様々なユースケースで活用することができます。
Vonageを使えば簡単にブラウザから電話の発信をすることができ、様々なコミュニケーションツールの作成に活用することができます。
通話機能に関しては、無料アカウントでは使用できなかったり対象国の法律による制限があるので注意が必要です。