代码之家  ›  专栏  ›  技术社区  ›  Alex Harvey

由于EC2 BillingProduct代码出现神秘错误,无法复制图像

  •  2
  • Alex Harvey  · 技术社区  · 7 年前

    我试图复制EC2图像以对其进行加密。

    命令行I问题是:

    $ aws ec2 copy-image --name encrypted-kafka-201707121432 \
      --source-region ap-southeast-2 --encrypted --source-image-id ami-2a617249 \
      --region ap-southeast-2 
    

    这会导致发出以下错误:

    An error occurred (InvalidRequest) when calling the CopyImage operation:
      Images with EC2 BillingProduct codes cannot be copied to another AWS account.
    

    我环顾四周,了解到复制Windows AMIs时通常会出现此错误(例如。 here )这与这个问题相似( here ).

    但是,此图像不是来自市场,也不是Windows AMI,并且其中没有任何产品代码:

    $ aws ec2 describe-images --image-ids ami-2a617249 --region ap-southeast-2 \
        --query '.Images[].ProductCodes'
    []
    

    $ aws ec2 describe-images --image-ids ami-00280263 --region ap-southeast-2 \
        --query '.Images[].ProductCodes'
    [
      {
        "ProductCodeType": "marketplace",
        "ProductCodeId": "dsli9z1o9amfv5g2hsmdj1pph"
      }
    ]
    

    图像是使用Packer烘焙的。

    我没有主意了。为什么会发生这种情况?是我做错了什么事,还是这种无证行为?

    1 回复  |  直到 5 年前
        1
  •  2
  •   Alex Harvey    5 年前

    事实证明,这种AMI的后代确实来自亚马逊市场。

    烘焙管道的简化版本为:

    账户B:

    我随后发布:

    aws ec2 copy-image --encrypted --source-image ami-yyyyyyyy
    

    An error occurred (InvalidRequest) when calling the CopyImage operation:
      Images with EC2 BillingProduct codes cannot be copied to another AWS account.
    

    从账户B中,我可以检查所有者,即与我共享该账户的账户:

    $ aws ec2 describe-images --image-id ami-yyyyyyyy --region ap-southeast-2 \
    >   --query 'Images[0].OwnerId'
    

    这返回帐户A的16位帐户ID。

    显然地 迷路的然而,这些产品代码仍然存在,亚马逊支持人员可以看到它们。需要致电亚马逊支持部门确认这一部分。

    为了解决这个问题,我现在维护一个脚本 encrypt_ami 在Python或Bash(AWS CLI)中,可以使用。