EventBridge で設定した EC2 自動起動が失敗した際の、トラブルシューティングについて記載していきます。
Amazon EventBridge とは
Amazon EventBridge は、イベントを使用してアプリケーションコンポーネント同士を接続するサーバーレスサービスです。これにより、スケーラブルなイベント駆動型アプリケーションを簡単に構築できます。イベント駆動型アーキテクチャとは、イベントの発信と応答によって連携する、ゆるやかに結合されたソフトウェアシステムを構築するスタイルです。イベント駆動型アーキテクチャは、俊敏性を高め、信頼性が高くスケーラブルなアプリケーションを構築するのに役立ちます。
EventBridge を使用して、自社開発アプリケーション、AWS サービス、サードパーティソフトウェアなどのソースから組織全体のコンシューマアプリケーションにイベントをルーティングできます。EventBridge では、イベントの取り込み、フィルタリング、変換、配信をシンプルかつ一貫性のある方法で行うことができるため、アプリケーションをすばやく構築できます。
引用 AWS公式サイト
■EC2起動失敗エラー
EC2の起動に関する問題が発生しました。特定の時間にEC2を自動起動するようにEventBridgeで設定したのですが、マネジメントコンソールで確認したところ、EC2が起動していないことがわかりました。
■エラーメッセージの解読と原因特定
原因を特定するために、CloudTrail のイベント履歴を確認したところ、EC2自動起動イベントの直後に【CreateGrant】というイベントが出力されていました。
・イベントレコード
"eventTime": "2024-xxxxxxxxx",
"eventSource": "kms.amazonaws.com",
"eventName": "CreateGrant",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "xxxxxxx.amazonaws.com",
"userAgent": "xxxxxxx.amazonaws.com",
"errorCode": "AccessDenied",
"errorMessage": "User: arn:aws:sts::xxxxxxxxxxxx:【IAMロールのARN】 is not authorized to perform: kms:CreateGrant on resource: 【KMSのARN】 because no identity-based policy allows the kms:CreateGrant action",
このイベントは、KMS の "CreateGrant" アクションが失敗したことを示しているエラーで、IAM ポリシーでこのアクションが許可されていないため、アクションが拒否されているという内容のメッセージでした。
■解決策
・IAMロールへの KMSキーの追加
EC2にアタッチしているEBSの暗号化で使用している、KMSキーを EventBridge の IAMロールのポリシーに追加することで解決しました。
・ポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"kms:*"
],
"Effect": "Allow",
"Resource": [
"arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:key/xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"arn:aws:kms:ap-northeast-1:xxxxxxxxxxxx:key/【EBSで使用したKMS名】"
]
}
]
}
まとめ
CloudTrail のイベント履歴の確認により、EC2 自動起動イベントの直後に "CreateGrant" イベントが検出されました。
KMS の "CreateGrant" アクションが IAM ポリシーで許可されていないことを示していました。
解決策として、EventBridge の IAM ロールに KMS キーを追加することで問題が解決し、EC2 の自動起動が成功しました。
同じ問題に遭遇した際に、この記事を見て対処できればと思い投稿しました。