Step functions SNS連携でSNS.InvalidParameterExceptionエラー
先日、Step functionsでjson形式でSNS連携ををしようとしたところ、
下記のようなメッセージでエラーとなってしまいました。
エラー
SNS.InvalidParameterException
原因
Invalid parameter: Message Structure – Failed to parse JSON
SNSのpublishでjsonを利用する際は、トップを”default”にする必要があるらしいです。
CLIやAPIのリファレンスに書いてありました。
https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html
対応
入力が下記のようになるように調整($.defaultが存在するように)
(1)stepfunctionの入力の際、defaultが含まれるようにする
例:
{
”region”: “us-west-2″,
”instance_id”: “i-xxxxxxxxxxxxxxxxx”,
”default”: “2019022717_xxxxxxxxxx_us-west-2_i-xxxxxxxxxxxxxxxxx”
}
(2)ステートメント言語を変更
ステートメント言語のParameters部分を下記のように記載
“Message.$”: “$”,
“MessageStructure”: “json”
参考ドキュメント
https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/connectors-sns.html
上記でエラーとならず、SNS配信することができました。
が、手軽な実装でしたらSNSをそのまま使うのも良いですが、
上記のようにdefautに入れる行為が、ResultPathとの相性が悪く、
(私の知識不足なのかもしれませんが)Lambdaの方が柔軟性があるように思いました。