Cloudformationを使用してAWSでSNSトピックを作成する方法

AWSSNSはシンプルな通知サービスです。 Cloudwatchがアラートメールを送信するために使用できます。 まず、SNSトピックを作成してから、エンドポイントをサブスクライブする必要があります。

この記事では、Cloudformationを使用してSNSトピックを作成し、Eメールエンドポイントをサブスクライブします。 また、Cloudformationスタック自体を使用してSNSトピックとサブスクリプションを削除する方法についても説明します。 SNSの基本を理解し、機能していることを前提としています。 この記事は、Cloudformationスタックを使用したSNSの作成に焦点を当てています。

前提条件

  1. AWSアカウント(作成する お持ちでない場合)。
  2. SNSの基本的な理解。
  3. Cloudformationの基本的な理解。

何をしたらいいでしょう?

  1. AWSにログインします。
  2. テンプレートを作成します。
  3. スタックを作成します。
  4. サブスクリプションを確認します。
  5. スタックを削除します。

AWSにログインします

クリック ここに AWSログインページに移動します。 ユーザーの認証情報を入力して、AWSアカウントにログインします。

ログインページ

アカウントに正常にログインすると、AWS管理コンソールが次のように表示されます。

AWS管理コンソール

テンプレートを作成する

スタックの作成に進む前に、次のCloudformation構成を使用して、ローカルマシンにテンプレート「create-sns-topic.template」を作成しましょう。

CloudformationテンプレートをGithubリポジトリからダウンロードすることもできます。以下はテンプレートへのリンクです。

リンク: https://github.com/shivalkarrahul/DevOps/blob/master/aws/cloudformation/create-sns-topic/create-sns-topic.template

---
AWSTemplateFormatVersion: '2010-09-09'
Description: The SNS Topic
Parameters:
  SubscriptionEndPoint:
    Type: String
    Description: The endpoint that receives notifications.
  SubscriptionProtocol:
    Type: String
    Description: The subscription protocol
    AllowedValues:
    - http
    - https
    - email
    - email-json
    - sms
    - sqs
    - application
    - lambda
    Default: email
Mappings: {}
Conditions: {}
Resources:
  SNSTopic:
    Type: AWS::SNS::Topic
    Properties: {}
  SNSSubscription:
    Type: AWS::SNS::Subscription
    Properties:
      Endpoint:
        Ref: SubscriptionEndPoint
      Protocol:
        Ref: SubscriptionProtocol
      TopicArn:
        Ref: SNSTopic
Outputs:
  QueueName:
    Description: Name of the SNS Topic we created
    Value:
      Fn::GetAtt:
      - SNSTopic
      - TopicName
  TopicARN:
    Description: ARN of the SNS Topic we created 
    Value:
      Ref: SNSTopic

Cloudformationスタックを作成する

ローカルマシンにテンプレートを作成したら、Cloudformationスタックを作成する準備が整います。

画面の左上にある[サービス]をクリックして、管理とガバナンスの下でCloudformationを検索します。

クラウドフォーメーションを検索する

スタックを作成するには、画面の右側に[スタックの作成]オプションが表示されますので、それをクリックします。 2つのオプションが表示されます。これらの2つのオプションのうち、[新しいリソースを使用(標準)]をクリックします。「delete2」は、選択したリージョンの下のアカウントの既存のスタックであり、アカウントには表示されません。

Cloudformationスタックを作成する

「テンプレートファイルのアップロード」をクリックして、ローカルマシンからテンプレートを選択します。 「次へ」ボタンをクリックしてください。

テンプレートを選択してください

スタック名、サブスクリプションエンドポイント、サブスクリプションプロトコルなどのスタックの詳細を指定します。 SubscriptionProtocolオプションの下のドロップダウンリストからプロトコルを選択できます。 SubscriptionProtocolとして「email」を選択しました。SubscriptionProtocolが「email」の場合は、SubscriptionEndpointとして電子メールアドレスを指定する必要があります。 「次へ」ボタンをクリックして続行します。

メールアドレスを指定してください

タグはオプションであり、このページでタグを指定することは必須ではありません。[次へ]ボタンをクリックして先に進みます。

タグはオプションです

ページの最後で下にスクロールして、[スタックの作成]ボタンをクリックします。 これによりスタックが作成され、サブスクリプションエンドポイントとしてEメールを使用してSNSトピックが作成されます。

スタックを作成する

リソースの作成には数分かかります。リソースが作成されると、スタックのステータスが「CREATE_COMPLETE」と表示されます。

スタックの作成に成功

SNSトピックを確認する

SNSにアクセスして、トピックが作成されているかどうかを確認できます。 SNSコンソールに移動するSNSを検索します。

SNSを検索

ここで、左側のパネルの「トピック」をクリックして、作成されたトピックを選択します。 SNSトピックには、Cloudformationスタック名のプレフィックスが付いたトピック名があります。[サブスクリプション]タブの下に、エンドポイントも作成されていることがわかりますが、ステータスは[確認待ち]です。

サブスクリプションが作成されると、指定されたエンドポイントに確認リンクが送信されます。 ここでは、エンドポイントとしてメールアドレスを指定しているため、確認リンクが記載されたメールを受信して​​いる必要があります。

サブスクリプションステータス

サブスクリプションのエンドポイントとして指定した電子メールの受信ボックスに移動します。 電子メールを開くと、「サブスクリプションの確認」ハイパーリンクが表示されますので、それをクリックします。

サブスクリプションを確認する

サブスクリプションが確認されると、次のようなメッセージが表示されます。

サブスクリプションが確認されました

ここで、トピックに戻り、[サブスクリプション]タブでエンドポイントを確認すると、ステータスが[確認済み]として表示されます。 これで、SNSトピックとそのエンドポイントの作成が完了しました。 これで、指定されたエンドポイントにメッセージを送信するメッセージをこのSNSに公開する準備が整いました。

サブスクリプションステータスを確認する

スタックを削除します

アカウントにSNSとサブスクリプションが不要になった場合は、スタックを削除できます。これにより、スタックが作成したリソースが削除されます。 スタックに移動し、「削除」ボタンをクリックします。

スタックを削除します

「スタックの削除」ボタンをクリックして、削除アクションを確認します。 スタックが削除されると、スタックが作成したすべてのリソースも削除され、復元できなくなります。 組織またはクライアントのAWSアカウントを処理している場合は、削除操作を実行する際に注意してください。

削除の確認

削除には数分かかります。スタックが削除されると、ステータスが「DELETE_COMPLETE」と表示され、スタックは使用できなくなります。

スタックの削除に成功しました

結論

この記事では、Cloudformationスタックを使用してSNSトピックとトピックへのサブスクリプションを作成するのがいかに簡単であるかを見ました。 サブスクリプションプロトコルとして電子メールを使用しました。 使用可能なリストから選択したプロトコルを選択し、トピックへのエンドポイントを指定できます。 また、スタックを削除すると、作成したリソースがどのように削除されるかについても説明しました。

Hope this helps!

Source link