共有された AMIで作成した Amazon EC2インスタンスが「終了済み」ステータスになってしまう
はじめに
別の AWSアカウントから共有された AMIを使って EC2インスタンスを作成したところ、最初から「終了済み」ステータスとなってしまい、インスタンスが起動できない事象が発生しました。
本記事では、この事象の原因と対応方法をご紹介します。
原因
共有された AMIに含まれるストレージボリュームが、共有元 AWSアカウントのカスタマーマネージド KMSキーによって暗号化されていました。
カスタマーマネージドキーの利用権限を共有先の AWSアカウントに許可しない状態でインスタンスを作成した場合、「終了済み」ステータスとなり起動に失敗します。
共有元 AWSアカウントで対応すること
共有元 AWSアカウントにて、 EBS暗号化に使用されている カスタマーマネージドキーの利用権限を、共有先 AWSアカウントに対して許可する必要があります。
KMS > カスタマー管理型のキー
にて、EBS暗号化に使用したキーをクリックします。-
「キーポリシー」タブで「編集」をクリックします。
-
以下のポリシーを追記します。<共有先 AWSアカウントID> には、共有先の AWSアカウントID(12桁の数値)を入力します。
{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<共有先 AWSアカウントID>:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
- 「変更の保存」をクリックします。
共有先 AWSアカウントで対応すること
共有先 AWSアカウントにて、共有元カスタマーマネージドキーの利用を許可する IAMポリシーを作成し、IAMユーザーにアタッチする必要があります。
IAM > ポリシー
にて、「ポリシーを作成」をクリックします。-
「ポリシーの作成」にて「JSON」タブを選択し、以下のポリシーを記載します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUseOfKeyInAccount<共有元 AWSアカウントID>", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "<共有元カスタマーマネージドキーの ARN>" } ] }
<共有元 AWSアカウントID> には、共有元の AWSアカウントID(12桁の数値)を入力します。
<共有元カスタマーマネージドキーの ARN> は、KMS > カスタマー管理型のキー > 対象カスタマーマネージドキー
の「一般設定」にて確認できます。
-
「ポリシーの確認」画面にて任意の名前を設定し、IAMポリシーを作成します。
- EC2インスタンスを作成する IAMユーザーに対して、作成した IAMポリシーをアタッチします。
以上の対応を行うことで共有元カスタマーマネージドキーの利用が許可されますので、EC2インスタンスが起動できるようになります。
参考資料
特定の AWS アカウントとの AMI の共有 – Amazon Elastic Compute Cloud
他のアカウントのユーザーに KMS キーの使用を許可する – AWS Key Management Service
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitter2014年入社。 関東近郊の山と銭湯と飲み屋を巡り歩いてます。
Recommends
こちらもおすすめ
-
Amazon EC2 Windows をトラブルから復旧してみる
2022.9.22
-
営業が電子工作を始めてみた話(AWS IoTとかのお話)
2015.12.24
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16