通过 CLI 自动化 AWS Marketplace 发布

Automate AWS Marketplace publishing through CLI

我通过 Hashicorp 的 Packer 将我的产品作为 AMI 上传到 AWS。现在我想自动化最后一步,将其发布到市场。该产品已经存在,只是添加修订版。

阅读 this article, the API_StartChangeSet doc, this add revisions user guide 和摆弄市场控制台后,我想我只需要

aws marketplace-catalog start-change-set --catalog AWSMarketplace --change-set-name "$VERSION" --change-set '[ {"ChangeType": "AddRevisions", "Entity": {"Identifier": "REDACTED@29","Type": "ServerProduct@1.0"}, "Details": "{\"DataSetArn\": \"?????\", \"RevisionArns\": [\"?????\"] }" ]'

我很难想出“详细信息”部分。我有我的 AMI ID。我想这会出现在 RevisionsArns 中吗?我应该在 DataSetArn 中放入什么,即 aws marketplace-catalog describe-entity --catalog AWSMarketplace --entity-id REDACTED 输出的“EntityArn”?

Details 这里的 facet 只是产品类型特定的 facet,编码为 json 字符串。对于您在 AWS Marketplace 中提供的 AMI,它可能包括支持信息、区域可用性或提供有关您的更改的描述性文本的任何其他信息。例如:

  "Details": "{\"Description\":{}, \"PromotionalResources\":{}, \"RegionAvailability\":{}, \"SupportInformation\":{}}",

你找到的例子并不一定意味着你必须有EntityArnRevisionsArnsDetails 方面用作描述更改详细信息的信息。

检查here

原来我没有找到好的文档,我的最后一个 link 是关于 AWS Data Exchange 的,其“详细信息”字段的内容令人困惑。

这里是相关文档:Marketplace catalog AMI add version,这是我要找的片段

      "Details": "{
        \"Version\": {
          \"VersionTitle\": \"*My new title*\",
          \"ReleaseNotes\": \"*My new Release notes*\"
        },
        \"DeliveryOptions\": [
          {
            \"Details\": {
              \"AmiDeliveryOptionDetails\": {
                \"AmiSource\": {
                  \"AmiId\": \"ami-1234567890abcdef\",
                  \"AccessRoleArn\": \"arn:aws:iam::12345678901:role/AwsMarketplaceAmiIngestion\",
                  \"UserName\": \"ec2-user\",
                  \"OperatingSystemName\": \"AMAZONLINUX\",
                  \"OperatingSystemVersion\": \"Amazon Linux 2 AMI 2.0.20210126.0 x86_64 HVM gp2\"
                },
                \"UsageInstructions\": \"Easy to use AMI\",
                \"RecommendedInstanceType\": \"m4.xlarge\",
                \"SecurityGroups\": [
                  {
                    \"IpProtocol\": \"tcp\",
                    \"FromPort\": 443,
                    \"ToPort\": 443,
                    \"IpRanges\": [
                      \"0.0.0.0/0\"
                    ]
                  }
                ]
              }
            }
          }
        ]
      }"