AWS Step Functionsから直接Amazon SNSを使用してSMSのメッセージを送信をする
こんにちは、CX事業本部 IoT事業部の若槻です。
AWS Step Functionsでは、最近多くのAWSサービスと直接連携ができるようになるアップデートがありました。
そこで今回は、AWS Step Functionsから直接Amazon SNSを使用してSMSのメッセージを送信してみました。
確認してみた
ステートマシンの作成
Step Functions Workflow Studioでステートマシンを作成します。
Step Functionsのマネジメントコンソールで、[ステートマシン]の作成をクリックします。
[次へ]をクリックします。
すると「Workflow Studio」が開きます。[アクション]からAmazon SNS Publish
をドラッグします。
[SNS Publish]状態の設定タブを開きます。ここがポイントなのですが、既定で[API]-[Integration type]で選択されているOptimized
では発行先トピックやメッセージなどしか指定できません。これをAWS SDK
に選択を変更する必要があります。
するとAWS CDKを使用する場合と同じようにAPIパラメータを直接指定できるようになります。
電話番号とメッセージを指定するパラメータを設定します。注意点として、入力のJSONの値を使用するパラメータのプロパティは末尾に.$
を付ける必要があります。
{ "Message.$": "$.message", "PhoneNumber.$": "$.phoneNumber" }
[次へ]をクリックします。
生成されたコードを確認したら[次へ]をクリックします。
生成されたコードは下記のようになります。
{ "Comment": "A description of my state machine", "StartAt": "SNS Publish", "States": { "SNS Publish": { "Type": "Task", "Resource": "arn:aws:states:::aws-sdk:sns:publish", "Parameters": { "Message.$": "$.message", "PhoneNumber.$": "$.phoneNumber" }, "End": true } } }
[ステートマシンの作成]をクリックします。
これでステートマシンの作成ができました。
動作
作成したステートマシンで[実行の開始]をクリックします。
ステートマシンの入力を指定して、実行します。
{ "message": "Hello, Step Functions.", "phoneNumber": "+8180XXXXXXXX" }
実行が成功しました。
送信先の電話番号の端末でSMSのメッセージが受信できています。
送信者IDを指定してみる
Amazon SNSのSMSメッセージの送信者IDは既定でNOTICE
となりますが、これも入力で指定してみます。
Workflow Studioで[SNS Publish]状態の[APIパラメータ]を下記のように変更します。
{ "Message.$": "$.message", "PhoneNumber.$": "$.phoneNumber", "MessageAttributes.$": "$.messageAttributes" }
入力を下記のように指定してステートマシンを実行します。送信者IDはclassmedhod
となります。
{ "message": "Hello, Step Functions.", "phoneNumber": "+8180XXXXXXXX", "messageAttributes": { "AWS.SNS.SMS.SenderID": { "DataType": "String", "StringValue": "classmedhod" } } }
実行が成功しました。
受信したメッセージを見ると送信者IDを変更できていますね。
まとめ
AWS Step Functionsから直接Amazon SNSを使用してSMSのメッセージを送信してみました。
ステートマシンでLambdaを使わなくてもAmazon SNSのメッセージ発行ができるのはすごいですね。今後活用していきたいと思います。
参考
- Pass Parameters to a Service API - AWS Step Functions
- [Amazon SNS] SMSのメッセージの送信者IDを指定してみた | DevelopersIO
以上