跳至內容

當我在不同區域或帳戶之間複製 AMI 時,如何對錯誤進行疑難排解?

2 分的閱讀內容
0

我想要將 Amazon Machine Image (AMI) 從一個 AWS 區域或 AWS 帳戶複製到另一個 AWS 區域或帳戶。但我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體中發生錯誤。

解決方法

若要在區域之間複製 AMI,請設定 AMI 及其元件的權限,例如快照和 AWS Key Management Service (AWS KMS) 加密金鑰。

疑難排解權限錯誤

缺少 IAM 權限

如果您的 AWS Identity and Access Management (IAM) 使用者或角色沒有複製 AMI 所需的權限,那麼您可能會收到下列錯誤:

"You are not authorized to perform this operation" (「您未獲授權執行此作業」)

若要對此問題進行疑難排解,請確認您的 IAM 實體具有所需的權限

缺少 AMI 儲存體存取權

如果您複製共用 AMI 且目的地帳戶無法存取關聯的快照,您可能會收到以下錯誤:

"You do not have permission to access the storage of this AMI" (「您未獲授權存取此 AMI 的儲存體」)

若要解決此問題,請完成下列步驟:

  1. 若要共用來源 AMI,請選擇 Edit AMI permissions (編輯 AMI 權限)。
  2. 選取 Add 'Create volume' permission to associated snapshots when creating account permissions (建立帳戶權限時向關聯快照新增「建立磁碟區」權限)。
  3. 與目的地帳戶共用來源 AMI。
    **注意:**如果您已共用 AMI,請刪除該 AMI,然後從來源帳戶重新共用到目的地帳戶,並選取 Create volume (建立磁碟區) 權限。

對加密 AMI 和 AWS KMS key 問題進行疑難排解

對於加密的 AMI,目的地帳戶必須在複製過程中存取來源 AWS KMS key 進行解密。目的地帳戶也必須使用相同的金鑰或在目的地區域中具有相符的金鑰。

若要設定加密 AMI 的權限,請授予目的地帳戶對 KMS 金鑰的存取權限,然後建立金鑰存取的 IAM 政策。

授予目的地帳戶存取金鑰的權限

若要處理加密的 AMI,請在來源帳戶中完成下列步驟:

  1. 開啟 AWS KMS console (AWS KMS 主控台)。
  2. 從導覽窗格選擇 Customer managed keys (客戶自管金鑰)。
  3. 選取您用來加密 AMI 的 KMS key。
  4. Key policy (金鑰政策) 下的 Default view (預設檢視) 下,選擇 Add other AWS accounts (新增其他 AWS 帳戶)。
  5. 輸入目的地帳戶 ID。
  6. 選擇 Save changes (儲存變更)。
  7. Policy view (政策檢視) 中,選擇 Edit (編輯)。
  8. 輸入以下存取政策:
            {
              "Sid": "Allow use of the key",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::[SOURCE_ACCOUNT_ID]:user/KeyUser",
                "arn:aws:iam::[TARGET_ACCOUNT_ID]:root"
              ]},
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
              ],
             "Resource": "*"
            },
            {
              "Sid": "Allow attachment of persistent resources",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::SOURCE_ACCOUNT_ID:user/KeyUser",
                "arn:aws:iam::DESTINATION_ACCOUNT_ID:root"  
              ]},
              "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
              ],
              "Resource": "*",
              "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
            }
    **注意:**將 SOURCE_ACCOUNT_ID 替換為您的來源帳戶 ID,並將 DESTINATION_ACCOUNT_ID 替換為您的目的地帳戶 ID。

為目的地帳戶建立 IAM 政策,以取得金鑰存取權

在目的地帳戶中建立 IAM 政策

政策範例:

      {
          "Version": "2012-10-17",
          "Statement": [{
           "Sid": "AllowUseOfTheKey",
           "Effect": "Allow",
           "Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
           "Resource": ["KEY_ARN"]
      }, {
           "Sid": "AllowAttachmentOfPersistentResources",
           "Effect": "Allow",
           "Action": ["kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant"],
           "Resource": ["KEY_ARN"],
           "Condition": {
               "Bool": {
                   "kms:GrantIsForAWSResource": true
              }
           }
       }]
   }

**注意:**將 KEY_ARN 替換為您 AWS KMS key 的 Amazon Resource Name (ARN)。

然後,將政策附加到需要使用加密 AMI 的 IAM 使用者或角色。

相關資訊

共用用於加密共用 Amazon EBS 快照的 KMS key

為什麼我無法從複製的 AMI 啟動 EC2 執行個體?

AWS 官方已更新 10 個月前