この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、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
以上