他アカウントで検知した CloudWatch アラームをトリガーに AWS Lambda を実行する方法を教えてください

他アカウントで検知した CloudWatch アラームをトリガーに AWS Lambda を実行する方法を教えてください

Clock Icon2023.05.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていること

他アカウントで EC2 インスタンスの CPU 使用率を監視する Cloudwatch アラームを設定しています。
その CloudWatch アラームが発生したら主アカウントの AWS Lambda が実行されるようにしたいです。
どのようにすれば実現可能でしょうか、教えてください。

どう対応すればいいの?

  • 「他アカウント」を アカウント A
  • 「主アカウント」を アカウント B

上記仮定の基、以下の手順を参考に想定となる挙動となるかお試しください。

1. アカウント B にて Lambda を通知先に設定した SNS トピックを作成
2. ドキュメントAWS re:Post を参考にアカウント B の SNS トピックのアクセスポリシーに以下を追記

※ "REGION" "ACCOUNT_ID" "TOPIC_NAME" "ALARM_NAME" は環境によって書き換えてください。

{
	"Sid": "Allow_Publish_Alarms",
	"Effect": "Allow",
	"Principal": {
		"Service": [
			"cloudwatch.amazonaws.com"
		]
	},
	"Action": "sns:Publish",
	"Resource": "arn:aws:sns:<REGION>:<ACCOUNT_ID>:<TOPIC_NAME>",
	"Condition": {
		"ArnLike": {
			"aws:SourceArn": "arn:aws:cloudwatch:<REGION>:<ACCOUNT_ID>:alarm:<ALARM_NAME>"
		}
	}
}


3. アカウント A にてアカウント B の SNS トピックをアクションに設定した CloudWatch アラームを作成

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.