処理の実行
SNSトピックのARNを取得します。
変数の設定:
SNS_TOPIC_ARN=$( \
aws sns list-topics \
--query "Topics[?contains(TopicArn, \`${SNS_TOPIC_NAME}\`)].TopicArn" \
--output text \
) \
&& echo ${SNS_TOPIC_ARN}
結果(例):
arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:handson-cli-sns-1st-topic
SNSトピックの購読者にメールアドレスを登録します。
変数の確認:
cat << END
# SNS_TOPIC_ARN:"arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:handson-cli-sns-1st-topic"
SNS_TOPIC_ARN="${SNS_TOPIC_ARN}"
# SNS_SUBSCRIPTION_PROTOCOL:"email"
SNS_SUBSCRIPTION_PROTOCOL="${SNS_SUBSCRIPTION_PROTOCOL}"
# SNS_SUBSCRIPTION_ENDPOINT:"<送信先のメールアドレス>"
SNS_SUBSCRIPTION_ENDPOINT="${SNS_SUBSCRIPTION_ENDPOINT}"
END
コマンド:
aws sns subscribe \
--topic-arn ${SNS_TOPIC_ARN} \
--protocol ${SNS_SUBSCRIPTION_PROTOCOL} \
--notification-endpoint ${SNS_SUBSCRIPTION_ENDPOINT}
結果(例):
{
"SubscriptionArn": "pending confirmation"
}
登録したメールアドレスに"AWS Notification - Subscription Confirmation"という標題のメールが届きます。
確認メールの"Confirm subscription"リンクをクリックすると、"Subscription Confirmed!"という画面が表示され、承認プロセスが完了します。
Webブラウザ画面(例):
注釈
承認プロセスが完了することで、SNSサブスクリプションARNが"PendingConfirmation"からARN形式のARNに変わります。
"click here to unsubscribe"(リンク)をクリックすると購読中止となり、通知を受けることができなくなります。
完了確認
「SNSトピック"handson-cli-sns-1st-topic"にプロトコル"email"のエントポイント(メールアドレス)"<送信先のメールアドレス>"が存在する。」ことを確認します。
コマンド:
aws sns list-subscriptions-by-topic \
--topic-arn ${SNS_TOPIC_ARN} \
--query "Subscriptions[?Endpoint == \`${SNS_SUBSCRIPTION_ENDPOINT}\`].Endpoint" \
--output text
結果(例):
「SNSトピック"handson-cli-sns-1st-topic"に登録されているエントポイント"<送信先のメールアドレス>"のサブスクリプションARNが存在する。("PendingConfirmation"ではない。)」ことを確認します。
コマンド:
aws sns list-subscriptions-by-topic \
--topic-arn ${SNS_TOPIC_ARN} \
--query "Subscriptions[?Endpoint == \`${SNS_SUBSCRIPTION_ENDPOINT}\`].SubscriptionArn" \
--output text
結果(例):
arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:handson-cli-sns-1st-topic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx