Permissões de instantâneo
O Boto3 possui uma função que permite criar permissões de volume, que é o que o compartilhamento da AMI com o AWS Marketplace exige que você faça. snapshot.modify_attribute
permitirá que você compartilhe sua AMI com a conta do marketplace da seguinte maneira (você também pode usar uma representação JSON, se preferir, está nos documentos):
response = snapshot.modify_attribute(
Attribute = 'createVolumePermission',
OperationType = 'add',
UserIds = [
'679593333241', # Marketplace user ID
]
)
Também existe uma função oficial da API que ajudará a atingir os requisitos de permissão listados no Compartilhamento da AMI com o AWS Marketplace se você decidir migrar do boto3 (ou se um leitor não estiver usando o boto3). Se a sua AMI for privada, você só precisa fazer esta chamada de API:
https://ec2.amazonaws.com/?Action=ModifySnapshotAttribute
&SnapshotId=ID_HERE
&CreateVolumePermission.Add.1.UserId=679593333241
&AUTHPARAMS
Isso deve adicionar a permissão de que o mercado precisa para acessar sua AMI. Quanto à substituição ID_HERE
pelo ID do snapshot, você pode fazer isso com o boto3 usando a propriedade snapshot_id do objeto snapshotsnapshot.snapshot_id
antes de fazer a chamada da API (dito isso, há poucas razões para você usar essa API, pois é necessário usar o boto3 de qualquer maneira).
Metadados do produto
Você deve poder usar as funções relevantes do ServiceCatalog no boto3, como create_product
fazer upload de metadados do produto. Também existem funções oficiais da API equivalentes (essa é apenas CreateProduct, elas não estão listadas de uma maneira que me permita vinculá-las adequadamente). Vale a pena notar que a API oficial aceita apenas JSON, enquanto o boto3 gera o próprio JSON. Qual deles é mais útil para você depende de como seus dados estão estruturados nos arquivos de metadados do produto. Como eu não sei, não posso escrever diretamente o código para fazê-lo.