CLIによる「SNS」構築


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆様こんにちは。
今回はCLIを利用して高可用性アーキテクトの構築をしていきます。
この記事ではCLIよりSNSの設定を行います。
このブログはCLIによるSNSの設定をする上での知識を記事としてまとめ再確認し、皆様と共有するため作成します。

1.高可用性アーキテクト構築目次

目次はこちら

2.SNSとは

Amazon Simple Notification Service (Amazon SNS) は、配信者から受信者 (または生産者から消費者) へのメッセージ配信を提供するマネージドサービスです。発行者は、論理アクセスポイントおよび通信チャネルであるトピックにメッセージを送信することで、受信者と非同期的に通信します。クライアントは、Amazon Kinesis Data Firehose、Amazon SQS、AWS Lambda、HTTP、E メール、モバイルプッシュ通知、モバイルテキストメッセージ (SMS) などのサポートされたエンドポイントを使用して SNS トピックにサブスクライブし発行されたメッセージを受信できます。
引用:Amazon SNS とは

エンドポイント

エンドポイントは通知の配信対象のことです。
EメールやAmazon Kinesis Data Firehose、Amazon SQS、AWS Lambda等といったAWSサービスも指定できます。

SNSトピック

SNSトピックは、複数のエンドポイントを一つのグループとしてまとめたものです。
トピックに通知メールを発行すると、登録しているエンドポイントに通知を配信することができます。

サブスクリプション

サブスクリプションは指定したエンドポイントをSNSトピックにサブスクライブ(登録)するデータです。

今回はCloudWatchAlarmのアラームの通知を自分のメールアドレスに配信したいためSNSを使用します。

類似サービスとしてフルマネージドのキューイングサービスの「Amazon SQS」があげられます。

3.フロー図

file
カスタムメトリクスを含むCloudWatchAlarmのアラームの通知を自分のメールアドレスに配信するには上記の図の構成でします。

今回はSNS設定のフローを以下で紹介します。

  1. CloudWatchAlarmのアラームの通知を受け取るSNSトピックを作成します。
  2. SNSトピックにエンドポイントを登録するためサブスクリプションの作成をします。

4.SNS設定

まずは通知メールの配信先となるSNSトピックを作成します。
SNSトピック作成のため、[aws sns create-topic]コマンドを使用します。

使用するオプション 設定値 説明
--name umemoto-SNS 設定したいトピックネームを入力
--tags Key=Name,Value=umemoto-SNS 設定したいタグを指定

入力

aws sns create-topic `
    --name umemoto-SNS `
    --tags Key=Name,Value=umemoto-SNS

出力

{
    "TopicArn": "arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS"
}

これでSNSトピックを作成できました。

次にエンドポイントに自分のメールアドレスを指定するためにサブスクリプションを作成します。
作成のため、[aws sns subscribe]コマンドを使用します。

使用するオプション 設定値 説明
--topic-arn arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS  先ほど作成したSNSトピックのARNを指定
--protocol email 使用するプロトコルを指定します
--notification-endpoint [自分のメールアドレス] 配信先に自分のメールアドレスを設定します。

入力

aws sns subscribe `
    --topic-arn arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS `
    --protocol email `
    --notification-endpoint [自分のメールアドレス]

出力

{
    "SubscriptionArn": "pending confirmation"
}

指定したメールアドレスにメールが届きますのでconfirmしてください。
file

サブスクリプションを有効化できました!
file

これでSNSの設定は完了しました。

5.検証

実際に作成したSNSトピックからエンドポイント(自分のメールアドレス)に対してメッセージが配信できるかの検証を行っていきたいと思います。

メッセージ送信には、[aws sns publish]コマンドを使用します。

使用するオプション 設定値 説明
--topic-arn arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS SNSトピックのARNを入力
--message  "test message" 配信するメッセージの内容を入力

入力

aws sns publish `
    --topic-arn "arn:aws:sns:ap-northeast-2:xxxxx:umemoto-SNS" `
    --message "test message"

出力

{
    "MessageId": "9169722b-46e8-5745-8d4f-2933f02b7941"
}

次に自分のメールアドレスにメッセージが配信されているかの確認をします。

file

メッセージが配信されていることを確認できました。

これで検証を終わります。

6.感想

設定自体は躓くことなくできましたが、サブスクリプションの言葉の意味を理解するのに少し時間がかかりました。
次回もよろしくお願いします。

7.参照

AWS CLI Command Reference – sns
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/index.html#cli-aws-sns

Last modified: 2022-06-09

Author