EventBridge スケジューラで暗号化 EBS を使用する EC2 が起動しない場合の対処法

EventBridge スケジューラで暗号化 EBS を使用する EC2 が起動しない場合の対処法

2026.04.03

困っていた内容

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については適宜修正してください

IAMポリシーの例
{
    "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
    }
  }
}

参考資料

IAM ポリシーを使用して KMS キーへのアクセスを制御するには、IAM ポリシーを使用するアクセス許可を、キーポリシーによりアカウントに付与する必要があります。IAM ポリシー を有効にするキーポリシーステートメントを指定するか、もしくはキーポリシー内で許可対象のプリンシパルを明示的に指定できます。

この記事をシェアする

関連記事