AMIのリージョン間コピーで失敗

暗号化されたEBSを含むAMIを別リージョンへコピーしたところ、コピー先のAMIが"失敗"となり、次のエラーが発生しました。

 

AMI snapshot copy failed with error: Given key ID is not accessible

 

 

今回は、このエラーの原因と対応方法を簡単に紹介します。

 

 

AMIのコピーに失敗

■原因はKMSの権限不足

CloudTrailでAMIコピー実行時のイベントを確認したところ、次のKMS APIがAccessDeniedとなっていました。

    "eventTime": "2026-08-01T09:22:12Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKeyWithoutPlaintext",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "ec2-frontend-api.amazonaws.com",
    "userAgent": "ec2-frontend-api.amazonaws.com",

 

IAMポリシーにはkms:GenerateDataKeyを設定していましたが、kms:GenerateDataKeyWithoutPlaintextは設定していませんでした。

 

この2つは別のKMSアクションなので、kms:GenerateDataKeyだけではGenerateDataKeyWithoutPlaintextを実行できません。

 

AWS公式ドキュメントの「Amazon EBS スナップショットのコピー」では、暗号化されたスナップショットをコピーするために、次のKMS権限が必要と記載されています。

kms:DescribeKey
kms:CreateGrant
kms:GenerateDataKey
kms:GenerateDataKeyWithoutPlaintext
kms:ReEncrypt
kms:Decrypt

 

今回はIAMポリシーに次の権限を追加しました。

"kms:GenerateDataKeyWithoutPlaintext"

 

追加後に再度AMIコピーを実行したところ、正常にコピーできることを確認しました。

 

 

まとめ

暗号化AMIをリージョン間コピーすると、AMIに紐づくEBSスナップショットもコピー先リージョンで暗号化されます。

 

その際に必要なKMS権限が不足していると、

AMI snapshot copy failed with error: Given key ID is not accessible

 

となる場合があります。

 

このエラーだけでは不足している権限までは分からないため、CloudTrailでKMSのAccessDeniedイベントを確認すると原因を特定しやすいです。

 

今回のケースでは、kms:GenerateDataKeyWithoutPlaintextの不足が原因でした。

 

参考サイトリンク:about-aws

 

↓ほかの協栄情報メンバーもAmazon EC2に関する記事を公開しています。ぜひ参考にしてみてください。

 

想像と違った”AMI Usage” ~運用で使えるようにスクリプト化してみた~(齊藤弘樹)

 

Amazon EC2 Capacity Managerを使ってみた(齊藤弘樹)

 

 

 

Last modified: 2026-08-09

Author