Làm cách nào để tự động gửi lên Amazon Marketplace?


7

Có ai biết cách để tự động hóa việc gửi AMI tới Thị trường của Amazon không? Tôi muốn lấy AMI công khai và chia sẻ nó với AWS Marketplace để có thể quét nó để liệt kê và sau đó gửi bảng siêu dữ liệu của sản phẩm.

Môi trường ưa thích của chúng tôi là Python, nhưng tôi không thấy bất kỳ hook nào có liên quan trong boto3thư viện nên tôi mở cho các lựa chọn thay thế.


Tôi không chắc chắn về những gì bạn đang theo đuổi, bạn có muốn chia sẻ ami nướng của mình trên thị trường hay chỉ đăng ký một ami cho mục đích sử dụng của riêng bạn?
Tensibai

Tôi muốn chia sẻ một AMI nướng trên Thị trường. Quy trình thủ công để thực hiện việc này bao gồm chia sẻ chúng theo một cách cụ thể để chúng có thể được quét và sau đó gửi siêu dữ liệu về AMI.
lawnmowerlatte

Không thực sự là một câu trả lời, nhưng điểm khởi đầu có thể là: Xây dựng AMI cho AWS Marketplace
Tensibai 22/03/2017

@Tensibai, phần Chia sẻ AMI với AWS Marketplace có vẻ đầy hứa hẹn. Tôi sẽ cập nhật câu hỏi này khi tôi tiếp tục nghiên cứu.
lawnmowerlatte

Câu trả lời:


6

Quyền chụp nhanh

Boto3 có chức năng cho phép bạn tạo quyền truy cập âm lượng, đó là những gì AMI Sharing với AWS Marketplace yêu cầu bạn phải làm. snapshot.modify_attributesẽ cho phép bạn chia sẻ AMI của mình với tài khoản marketplace như vậy (bạn cũng có thể sử dụng một đại diện JSON nếu bạn thích, đó là trong các tài liệu):

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

Ngoài ra còn có một hàm API chính thức sẽ giúp bạn đạt được yêu cầu cấp phép được liệt kê trong Chia sẻ AMI với AWS Marketplace nếu bạn quyết định di chuyển từ boto3 (hoặc nếu người đọc không sử dụng boto3). Nếu AMI của bạn là riêng tư, bạn chỉ cần thực hiện cuộc gọi API này:

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

Điều này sẽ thêm sự cho phép mà thị trường cần để truy cập AMI của bạn. Như để thay thế ID_HEREvới ID của ảnh chụp, bạn có thể làm điều đó với boto3 bằng cách sử dụng đối tượng chụp của bạn snapshot_id sở hữu snapshot.snapshot_idtrước khi thực hiện cuộc gọi API (Nói như vậy, có rất ít lý do để bạn có thể sử dụng API này vì bạn phải sử dụng boto3 anyways).

Siêu dữ liệu sản phẩm

Bạn sẽ có thể sử dụng các hàm ServiceCatalog có liên quan trong boto3, chẳng hạn như create_productđể tải lên siêu dữ liệu của sản phẩm. Ngoài ra còn có các hàm API chính thức tương đương (cái này chỉ là Tạo sản phẩm, chúng không được liệt kê theo cách cho phép tôi liên kết với chúng một cách độc đáo). Điều đáng chú ý là API chính thức chỉ chấp nhận JSON trong khi boto3 sẽ tự tạo JSON. Cái nào hữu ích hơn cho bạn tùy thuộc vào cách dữ liệu của bạn được cấu trúc trong (các) tệp siêu dữ liệu sản phẩm của bạn. Vì tôi không biết rằng tôi không thể trực tiếp viết mã để làm điều đó.


1. Việc chia sẻ AMI & Ảnh chụp nhanh với ID thị trường có tự động xếp hàng để quét không? Dựa trên thử nghiệm thủ công của tôi, bạn vẫn cần cung cấp tên người dùng hệ điều hành và bắt đầu quét bằng tay.
lawnmowerlatte

2. Có cách nào để kiểm tra trạng thái quét AMI không?
lawnmowerlatte

3. Tôi không chắc các hàm ServiceCatalog là thứ tôi đang tìm kiếm. Sản phẩm tồn tại, tôi chỉ cần thêm một phiên bản mới. Quy trình thủ công là gửi Biểu mẫu tải sản phẩm, được tham chiếu trong Hướng dẫn người bán .
lawnmowerlatte

2
1: Tôi chỉ kiểm tra và thực tế không có. Thị trường thiếu API vì vậy đối với cái này và bạn sẽ cần phải "tự tạo" bằng tài khoản người dùng đặc biệt để kích hoạt những thứ khác nhau trong bảng điều khiển quản lý thông qua việc gửi biểu mẫu tự động. 2: Không có API, vì vậy bạn sẽ cần phải tự làm lại. 3: Có các chức năng cập nhật trong ServiceCatalog như update_product()bạn có thể sử dụng nếu nó đã tồn tại.
Peter G
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.