こんにちは、森田です。
以下のアップデートで、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 一撃でできるようになりました。
便利なアップデートですので、ぜひ試してみてください。