EventBridge スケジューラで暗号化 EBS を使用する EC2 が起動しない場合の対処法
困っていた内容
EventBridge スケジューラで、EC2 インスタンスを定期起動するスケジュールを作成しました。
指定した時間になっても、EC2 インスタンスが起動しません。
なぜでしょうか。
EC2 にアタッチした EBS はカスタマーマネージドキーで暗号化済みですが、関係ありますか?
どう対応すればいいの?
kms:CreateGrantの権限が付与されているか確認してください。
KMS のカスタマーマネージドキーで暗号化された EBS をアタッチしている場合、EC2 インスタンスの起動にはec2:StartInstancesのアクセス許可に加えて、kms:CreateGrantのアクセス許可も必要となります。
EC2 インスタンスを起動するための IAM と AWS KMS のアクセス許可の問題を解決 | AWS re:Post
EBS ボリュームを AWS Key Management Service (AWS KMS) キーで暗号化した場合、アクセス許可に問題がある可能性があります。StartInstances API アクションを呼び出す IAM プリンシパルには、Amazon EC2 に対する権限を作成するための kms:CreateGrant アクセス許可が必要です。
KMS 側でデフォルトのキーポリシーを設定している場合、EventBridge スケジューラの実行 IAM ロールに、次のようなポリシーを付与することでkms:CreateGrantのアクセス許可が付与できます。
※Resourceについては適宜修正してください
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"kms:CreateGrant"
],
"Resource": [
"arn:aws:kms:ap-northeast-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
上記のポリシーを参考に、必要なアクセス許可を付与してください。
なお、KMS のキーポリシーを細かく制御している場合、IAM ロール側の許可に加えて、明示的なキーポリシーの許可も必要となります。
{
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/EventBridge_Scheduler_Role_Name"
},
"Effect": "Allow",
"Action": [
"kms:CreateGrant"
],
"Resource": [
"*"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
参考資料
- EC2 インスタンスを起動するための IAM と AWS KMS のアクセス許可の問題を解決 | AWS re:Post
- KMS キーのアクセスとアクセス許可 - AWS Key Management Service
IAM ポリシーを使用して KMS キーへのアクセスを制御するには、IAM ポリシーを使用するアクセス許可を、キーポリシーによりアカウントに付与する必要があります。IAM ポリシー を有効にするキーポリシーステートメントを指定するか、もしくはキーポリシー内で許可対象のプリンシパルを明示的に指定できます。







