AWS CloudFormation で Amazon SNS の配信ステータスのログ記録を有効化できるようになりました

2023.12.08

こんにちは、森田です。

以下のアップデートで、AWS CloudFormation で Amazon SNS の 配信ステータスのロギングを有効化できるようになりました。

本ブログでは、実際に AWS CloudFormation を使って、Amazon SNS の 配信ステータスのログ記録を有効化してみます。

Amazon SNS の 配信ステータスのログ

Amazon SNS の 配信ステータスのログには、詳細な配信ステータス情報が含まれており、運用時のトラブルシューティングの際などにログを活用することができます。

また、以下のブログでも紹介してありますが、AWS基礎セキュリティのベストプラクティスにも含まれていますので、基本は有効化すると良いです。

やってみる

CloudFormationテンプレート

使用するテンプレートは以下となります。

Parameters:
  TopicName:
    Type: String
    Default: TestTopic 
  DisplayName:
    Type: String
    Default: Test
  # 成功した配信の内、どれくらいをログに残すか(0~100%)
  SuccessFeedbackSampleRate:
    Type: Number
    MaxValue: 100
    MinValue: 0

Resources:
  MySNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: !Ref TopicName
      DisplayName: !Ref DisplayName
      SignatureVersion: 2
      DeliveryStatusLogging:
       - Protocol: sqs
         SuccessFeedbackSampleRate: !Ref SuccessFeedbackSampleRate
         SuccessFeedbackRoleArn: !GetAtt FeedbackRole.Arn
         FailureFeedbackRoleArn: !GetAtt FeedbackRole.Arn

  FeedbackRole:
    Type: 'AWS::IAM::Role'
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - sns.amazonaws.com
            Action:
              - 'sts:AssumeRole'
      Path: '/'
      Policies:
        - PolicyName: 'MyPolicy'
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'logs:*'
                  - 'logs:CreateLogGroup'
                  - 'logs:CreateLogStream'
                  - 'logs:PutLogEvents'
                  - 'logs:PutMetricFilter'
                  - 'logs:PutRetentionPolicy'
                Resource: '*'

上記のパラメータにしているSuccessFeedbackSampleRateですが、これは、成功した配信の内、どれくらいをログに残すかを指定します。

失敗したログは全て残すので、0を指定すると、失敗した配信のみのログを取得できます。

100を指定すると、失敗した配信と成功した配信の全てのログを取得できます。

CloudFormation スタックの作成

では、実際に CloudFormation テンプレートから、スタックの作成を行います。

コンソールを開き、作成した CloudFormation テンプレートを選択します。

今回は、全てのログを残すように、SuccessFeedbackSampleRateを100とします。

あとは、そのまま作成完了まで進め、しばらく待つと以下のようにCREATE_COMPLETEとなります。

実際にリソースから SNS Topicを確認すると、配信ステータスのログ記録も有効化されていることが確認できます。

最後に

今までは、CloudFormation で SNS Topic を作成する場合は、後から手動等で設定する必要がありましたが、今回のアップデートで配信ステータスのログ記録の有効化を CloudFormation 一撃でできるようになりました。

便利なアップデートですので、ぜひ試してみてください。

参考