これはなに
AWS CLIを使ってAmazonSNSからiOSのVoIPプッシュ通知(PushKit通知)を送る手順について、主にデバッグ用途です。
当方、AWSに詳しくないので内容に誤りがある場合はご指摘ください。
準備
- AWS CLIをインストールする
- AmazonSNS full access権限のあるIAMを払い出す(もしくは最小限のアクセス権限)
- 環境変数にIAMの情報をセットする
# env | grep AWS
AWS_SECRET_ACCESS_KEY=XXXXX....
AWS_DEFAULT_REGION=ap-northeast-1
AWS_DEFAULT_OUTPUT=json
AWS_ACCESS_KEY_ID=YYYYY...
エンドポイントの登録
試験用であればAmazonSNSのGUIから登録すればよい、手順は省略。
注意点とし、手元の環境では東京リージョンに登録したエンドポイントへはcliから送信できなかった。米国東部 (バージニア北部)にアプリケーションを作成して登録したら送信できた(要調査)。
aws cli からVoIPプッシュ通知を送る
開発環境(sandbox)の例
endpointのarnが arn:aws:sns:us-east-1:xxxxxxxxx:endpoint/APNS_VOIP_SANDBOX/your_app_name/yyyy....
の場合のコマンド
aws sns publish \
--target-arn arn:aws:sns:us-east-1:xxxxxxxxx:endpoint/APNS_VOIP_SANDBOX/your_app_name/yyyy.... \
--message-attributes \
'{ "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"voip"}}' \
--message '{"APNS_VOIP_SANDBOX":"{\"aps\":{\"foo\":\"bar\"}}"}' \
--message-structure json
ポイントは
-
--message-attributes
で"AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"voip"}
を指定すること -
--message
でAPNS_VOIP_SANDBOX
キーにaps
を含むデータを入れること
本番環境の例
基本的に開発用の場合と同じ、ただし APNS_VOIP_SANDBOX
を APNS_VOIP
に変更すること。
要調査
- 東京リージョンに登録した場合にcliで送信できない件、仕様なのか手順ミスなのか