複数の AWS アカウントにわたり Amazon CloudWatch アラームを使用して、Amazon Simple Notification Service (Amazon SNS) トピックを呼び出したいです。
解決策
注: 次の解決策では 2 つのアカウントを使用します。
アカウント A を CloudWatch アラームの作成に使用し、アカウント B を Amazon SNS トピックの作成に使用します。次に、SNS トピックのアクセスポリシーを更新して、アカウント A のアラームがメッセージを公開できるようにします。
アカウント B に SNS トピックを作成する
次の手順を実行します。
- Amazon SNS コンソールを開きます。
- ナビゲーションペインで [トピック] を選択し、[トピックを作成] を選択します。
- トピックタイプで [標準] を選択し、トピックの名前を指定します。
- [トピックを作成] を選択し、トピックの Amazon リソースネーム (ARN) をコピーします。
- ナビゲーションペインで [サブスクリプション] を選択し、次に [サブスクリプションを作成] を選択します。
- トピックの ARN を [トピック ARN] セクションに追加し、プロトコルに [電子メール] を選択します。
- [サブスクリプションを作成] を選択し、メールをチェックしてサブスクリプションを確認します。
アカウント A で CloudWatch アラームを作成する
次の手順を実行します。
- CloudWatch コンソールを開きます。
- ナビゲーションペインで [アラーム]、[アラームを作成] の順に選択します。
- メトリクスを選択し、しきい値と比較パラメータの詳細を指定します。
- [アクションの設定] の [通知] で、[トピック ARN を使用して他のアカウントに通知する] を選択し、アカウント B のトピック ARN を入力します。
- アラームの名前を作成し、[アラームを作成] を選択します。
アカウント B で、SNS トピックのアクセスポリシーを更新する
アカウント B で SNS トピックのアクセスポリシーを更新すると、アラームがメッセージを公開できるようになります。
次の手順を実行します。
-
SNS コンソールを開きます。
-
ナビゲーションペインで [トピック] を選択し、該当するトピックを選択します。
-
[編集] を選択し、ポリシーに次のステートメントを追加します。
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "cloudwatch.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*"
},
"StringEquals": {
"aws:SourceAccount": "111122223333"
}
}
}]
}
注: 上記のポリシーで、例の値を実際の値に置き換えます。
アラームをテストする
アラームをテストするには、メトリクスのデータポイントに基づいてアラームのしきい値を変更するか、set-alarm-state コマンドを実行します。アラームのしきい値またはアラームの状態を変更すると、メール通知が届きます。
関連情報
Allow any CloudWatch alarm to publish to a topic in a different account (任意の CloudWatch アラームを別のアカウントのトピックに公開することを許可する)
CloudWatch アラームトリガーに関する SNS 通知が届かないのはなぜですか?