有谁知道自动将AMI提交到Amazon Marketplace的方法?我想使用一个公共AMI并将其共享到AWS Marketplace,以便可以对其进行扫描以列出清单,然后提交产品元数据表。

我们的首选环境是Python,但是我没有看到任何boto3库中的相关钩子,因此我可以选择其他方法。

评论

我不确定您要做什么,是要在市场上共享烘焙的ami还是只注册自己使用的ami?

我想在市场上共享烘焙的AMI。手动执行此操作涉及以特定方式共享它们,以便可以对其进行扫描,然后提交有关AMI的元数据。

并不是一个真正的答案,而是一个起点:为AWS Marketplace构建AMIs

@Tensibai,与AWS Marketplace进行AMI共享的部分看起来很有希望。在继续研究的过程中,我将不断更新此问题。

#1 楼

快照权限

Boto3具有允许您创建卷权限的功能,这是与AWS Marketplace进行AMI共享所要求的。 snapshot.modify_attribute将允许您像这样与市场帐户共享AMI(如果您愿意,也可以在文档中使用JSON表示形式):

response = snapshot.modify_attribute(
    Attribute = 'createVolumePermission',
    OperationType = 'add',
    UserIds = [
        '679593333241', # Marketplace user ID
    ]
)


还是一个官方API函数,如果您决定从boto3迁移(或者读者不使用boto3),它将帮助您达到AMI与AWS Marketplace共享中列出的权限要求。如果您的AMI是私有的,则只需要进行以下API调用:

https://ec2.amazonaws.com/?Action=ModifySnapshotAttribute
&SnapshotId=ID_HERE
&CreateVolumePermission.Add.1.UserId=679593333241
&AUTHPARAMS


这应该添加市场访问您的AMI所需的权限。至于使用快照ID替换ID_HERE,您可以在调用API之前通过使用快照对象的snapshot_id属性snapshot.snapshot_id来使用boto3进行操作(也就是说,使用此API的理由很少,因为无论如何都必须使用boto3) 。

产品元数据

您应该能够使用boto3中的相关ServiceCatalog函数(例如create_product)上传产品元数据。还有等效的官方API函数(这只是CreateProduct,没有以允许我很好地链接到它们的方式列出它们)。值得注意的是,官方API仅接受JSON,而boto3会自行生成JSON。哪一个对您更有用取决于产品元数据文件中数据的结构。由于我不知道我不能直接编写代码来完成此操作。

评论


1.使用市场编号共享AMI和快照是否自动将其排队等待扫描?根据我的手动测试,您仍然需要提供操作系统用户名并手动启动扫描。

– Lawnmowerlatte
17 Mar 22 '17在18:39



2.是否可以检查AMI扫描的状态?

– Lawnmowerlatte
17 Mar 22 '17 at 18:40

3.我不确定ServiceCatalog函数是否在寻找。该产品存在,我只需要添加一个新版本。手动过程是提交《卖方指南》中引用的《产品装载表》。

– Lawnmowerlatte
17 Mar 22 '17 at 18:40

1:我只是检查了一下,不,实际上不是。市场上缺少API,因此您需要使用特殊的用户帐户来“滚动自己的” API,以通过自动提交表单在管理控制台中触发其他操作。 2:没有API,因此您需要自己再次进行。 3:ServiceCatalog中有一些更新功能,例如update_product(),如果已存在,则可以使用。

– Peter G
17-3-22在20:25