/shipami

CLI tool to manage AWS AMI and Marketplace

Primary LanguagePythonMIT LicenseMIT

ShipAMI - Simple AWS AMIs management

Build Status Version Coverage License

CLI for simple AWS AMIs management

Quick Start

Install with pip:

$ pip install shipami
$ shipami --help

Example: Publish AMI for AWS Marketplace

  1. List available AMIs in your default region (eg. eu-west-1)
$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin
  1. Create a release based on this image in us-east-1 region
$ shipami --region us-east-1 release ami-00000000 1.0 --source-region eu-west-1
ami-000000aa

$ shipami --region us-east-1 list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo-1.0    1.0        ami-000000aa  pending    just now     yes        eu-west-1:ami-00000000
  1. Manually share with AWS Marketplace account
$ shipami --region us-east-1 share ami-000000aa

$ shipami --region us-east-1 show ami-000000aa
id:     ami-000000aa
name:   foo-1.0
state:  available
tags:
  shipami:copied_from: eu-west-1:ami-00000000
  shipami:managed: True
  shipami:release: 1.0
devices mappings:
  /dev/xvda 8Go type:gp2
shared with:
  679593333241 (AWS MARKETPLACE) OK

Commands

You can get further help and usage instructions on any command with the --help option.

copy

$ shipami copy ami-00000000
ami-000000aa
$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin                  eu-west-1:ami-000000aa
foo                   ami-000000aa  pending    just now     yes        eu-west-1:ami-00000000

delete

$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin                  eu-west-1:ami-000000aa
foo                   ami-000000aa  available  1 day ago    yes        eu-west-1:ami-00000000

$ shipami delete ami-000000aa
ami-000000aa

$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin

list

$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin

release

$ shipami release ami-00000000 1.0
ami-000000aa
$ shipami list
NAME       RELEASE    ID            STATE      CREATED      MANAGED    COPIED FROM             COPIED TO
foo                   ami-00000000  available  5 days ago   no         origin                  eu-west-1:ami-000000aa
foo-1.0    1.0        ami-000000aa  pending    just now     yes        eu-west-1:ami-00000000

share

$ shipami share ami-000000aa 012345678912

show

$ shipami show ami-000000aa
id:     ami-000000aa
name:   foo-1.0
state:  available
tags:
  shipami:copied_from: eu-west-1:ami-00000000
  shipami:managed: True
  shipami:release: 1.0
devices mappings:
  /dev/xvda 8Go type:gp2
shared with:
  012345678912