事前作業1.3. SNSトピックの購読 (handson-cli-cloudwatch-topic)
目的
SNSトピック"handson-cli-cloudwatch-topic"を購読します。
パラメータの指定
作業に必要なパラメータを変数に格納をします。
0. リージョンの指定
リージョンを指定します。
環境変数の設定
export AWS_DEFAULT_REGION='ap-northeast-1'
1. SNSトピック名
SNSトピック名を指定します。
変数の設定:
SNS_TOPIC_NAME='handson-cli-cloudwatch-topic'
2. SNS通知プロトコル名
SNS通知プロトコル名を指定します。
変数の設定:
SNS_SUBSCRIPTION_PROTOCOL='email'
3. 通知先エンドポイント
一時ファイルを指定します。
変数の設定:
DIR_TMP="${HOME}/environment/tmp-handson-cli-cloudwatch"
変数の設定:
FILE_TMP="${DIR_TMP}/mail_address.tmp" \
&& echo ${FILE_TMP}
結果(例):
${HOME}/environment/tmp-handson-cli-cloudwatch/mail_address.tmp
一時ファイルをsourceコマンドで読み込みます。
通知先エンドポイントを指定します。
変数の設定:
SNS_SUBSCRIPTION_ENDPOINT="${MAIL_ADDRESS}" \
&& echo ${SNS_SUBSCRIPTION_ENDPOINT}
結果(例):
各変数に正しいパラメータ値が格納されていることを確認します。
変数の確認:
cat << END
# 0. AWS_DEFAULT_REGION:"ap-northeast-1"
AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION}"
# 1. SNS_TOPIC_NAME:"handson-cli-cloudwatch-topic"
SNS_TOPIC_NAME="${SNS_TOPIC_NAME}"
# 2. SNS_SUBSCRIPTION_PROTOCOL:"email"
SNS_SUBSCRIPTION_PROTOCOL="${SNS_SUBSCRIPTION_PROTOCOL}"
# 3. SNS_SUBSCRIPTION_ENDPOINT:"<通知先メールアドレス>"
SNS_SUBSCRIPTION_ENDPOINT="${SNS_SUBSCRIPTION_ENDPOINT}"
END
手順
トピック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-cloudwatch-topic
SNSトピックを購読します。
変数の確認:
cat << END
# SNS_TOPIC_ARN:"arn:aws:sns:ap-northeast-1:XXXXXXXXXXXX:handson-cli-cloudwatch-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ブラウザ画面(例):
注釈
承認プロセスが完了することで、サブスクリプションARNが"PendingConfirmation"からARN形式のARNに変わります。
"click here to unsubscribe"(リンク)をクリックすると購読中止となり、通知を受けることができなくなります。
完了確認
SNSトピック"handson-cli-cloudwatch-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-cloudwatch-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-cloudwatch-topic:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx