通过 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\":{}}",
你找到的例子并不一定意味着你必须有EntityArn
和RevisionsArns
。 Details
方面用作描述更改详细信息的信息。
检查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\"
]
}
]
}
}
}
]
}"
我通过 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\":{}}",
你找到的例子并不一定意味着你必须有EntityArn
和RevisionsArns
。 Details
方面用作描述更改详细信息的信息。
检查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\"
]
}
]
}
}
}
]
}"