AWS CLIを利用して、CloudWatch Logsからの通知用トピックを作成してみます
。
前提条件
SNSへの権限
- SNSに対してフル権限があること。
AWS CLIのバージョン
-
以下のバージョンで動作確認済
- AWS CLI 1.7.26
コマンド
aws --version
結果(例):
aws-cli/1.7.26 Python/2.7.5 Darwin/13.4.0
- 準備
=======
0.1. リージョンの決定
トピックを作成するリージョンを決めます。
(カレントユーザが利用するカレントリージョンも切り変わります。)
コマンド(アイルランドリージョンの場合)
export AWS_DEFAULT_REGION='eu-west-1'
0.2. 変数の確認
プロファイルとリージョンが想定のものになっていることを確認します。
変数の確認
aws configure list
結果(例):
Name Value Type Location
---- ----- ---- --------
profile snsFull-prjZ-mbp13iamFull-prjZ-mbp13 env AWS_DEFAULT_PROFILE
access_key ****************XXXX shared-credentials-file
secret_key ****************XXXX shared-credentials-file
region eu-west-1 env AWS_DEFAULT_REGION
0.3. AWS IDの確認
変数の確認
cat << ETX
AWS_ID: ${AWS_ID}
ETX
- 事前作業
===========
トピック名の決定
通知先を登録するトピック名を決定します。
コマンド
SNS_TOPIC_NAME="trail-alarm"
同名のトピックが存在しないことを確認します。
コマンド
SNS_TOPIC_ARN=$(aws sns list-topics --query "Topics[?contains(TopicArn,\`${SNS_TOPIC_NAME}\`)].TopicArn" --output text) \
&& echo ${SNS_TOPIC_ARN}
結果:
(戻り値なし)
- 本作業
=========
2.1. SNSトピックの作成
手順: http://qiita.com/tcsh/items/e05e21e7338668cbf3b8
2.2. トピックポリシーの確認
SNSトピックのトピックポリシーを確認します。
コマンド
aws sns get-topic-attributes --topic-arn ${SNS_TOPIC_ARN}
結果:
{
"Attributes": {
"SubscriptionsConfirmed": "1",
"DisplayName": "",
"SubscriptionsDeleted": "0",
"EffectiveDeliveryPolicy": "{\"http\":{\"defaultHealthyRetryPolicy\":{\"minDelayTarget\":20,\"maxDelayTarget\":20,\"numRetries\":3,\"numMaxDelayRetries\":0,\"numNoDelayRetries\":0,\"numMinDelayRetries\":0,\"backoffFunction\":\"linear\"},\"disableSubscriptionOverrides\":false}}",
"Policy": "{\"Version\":\"2008-10-17\",\"Id\":\"__default_policy_ID\",\"Statement\":[{\"Sid\":\"__default_statement_ID\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"*\"},\"Action\":[\"SNS:Publish\",\"SNS:RemovePermission\",\"SNS:SetTopicAttributes\",\"SNS:DeleteTopic\",\"SNS:ListSubscriptionsByTopic\",\"SNS:GetTopicAttributes\",\"SNS:Receive\",\"SNS:AddPermission\",\"SNS:Subscribe\"],\"Resource\":\"arn:aws:sns:eu-west-1:XXXXXXXXXXXX:trail-alarm\",\"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"XXXXXXXXXXXX\"}}}]}",
"Owner": "XXXXXXXXXXXX",
"TopicArn": "arn:aws:sns:eu-west-1:XXXXXXXXXXXX:trail-alarm",
"SubscriptionsPending": "0"
}
}
- 事後作業
===========
トピックの購読
CloudTrailの動作確認のため、SNSトピックを購読しておきましょう。
手順: http://qiita.com/tcsh/items/ca81576b0018bfa32cbe