AmazonのマーケットプレイスへのAMIの提出を自動化する方法を知っている人はいますか?公開AMIを取得してAWS Marketplaceに共有し、リストをスキャンして製品メタデータシートを送信できるようにしたいと考えています。
私たちの推奨環境はPythonですが、boto3
ライブラリに関連するフックが見つからなかったため、代替手段を用意しています。
AmazonのマーケットプレイスへのAMIの提出を自動化する方法を知っている人はいますか?公開AMIを取得してAWS Marketplaceに共有し、リストをスキャンして製品メタデータシートを送信できるようにしたいと考えています。
私たちの推奨環境はPythonですが、boto3
ライブラリに関連するフックが見つからなかったため、代替手段を用意しています。
回答:
Boto3にはボリュームのアクセス許可を作成できる機能があります。これは、AWS MarketplaceとのAMI共有で必要なものです。snapshot.modify_attribute
これにより、AMIをマーケットプレイスアカウントと共有できます(必要に応じて、JSON表現を使用することもできます。ドキュメントに記載されています)。
response = snapshot.modify_attribute(
Attribute = 'createVolumePermission',
OperationType = 'add',
UserIds = [
'679593333241', # Marketplace user ID
]
)
boto3から移行する場合(またはリーダーがboto3を使用していない場合)に、AWS MarketplaceとのAMI共有にリストされているアクセス許可要件を達成するのに役立つ公式のAPI関数もあります。AMIがプライベートの場合、必要なのは次のAPI呼び出しのみです。
https://ec2.amazonaws.com/?Action=ModifySnapshotAttribute
&SnapshotId=ID_HERE
&CreateVolumePermission.Add.1.UserId=679593333241
&AUTHPARAMS
これにより、マーケットプレイスがAMIにアクセスするために必要な権限が追加されます。ID_HERE
スナップショットのIDで置き換える場合は、API呼び出しを行う前に、スナップショットオブジェクトのsnapshot_idプロパティを使用してboto3で行うことができsnapshot.snapshot_id
ます(とにかく、boto3を使用する必要があるため、このAPIを使用する理由はほとんどありません)。
製品メタデータのアップロードなど、boto3の関連するServiceCatalog関数を使用できる必要がありますcreate_product
。同等の公式API関数もあります(これは単にCreateProductであり、それらを適切にリンクできるようにリストされていません)。boto3がJSON自体を生成するのに対し、公式APIはJSONのみを受け入れることに注意してください。どちらが便利かは、製品のメタデータファイルでデータがどのように構造化されているかによって異なります。私はそれを行うためのコードを直接書くことができないことを知らないので。
update_product()
すでに存在する場合に使用できる更新機能があります。