Como encontrar AMI ID de CentOS 7 image no mercado AWS?

Tenho estado a lançar instâncias EC2 ao aceder ao site AWS, carregando no botão "lançamento" e seguindo os passos proscritos. Agora eu gostaria de lançar instância a partir de um script Ansible, e para fazer isso eu (acho que eu) preciso do ID AMI da imagem que Eu desejo lançar.

O problema é que estou lançando uma imagem do "mercado", e não consigo encontrar o ID AMI. Em particular, estou usando a imagem Centos 7. Isto é fácil de encontrar na interface web, basta ir para o mercado e procure por "centos", a imagem que eu quero é a primeira encontrada, mas a informação fornecida sobre a imagem não parece incluir o ID AMI que eu preciso para lançá-lo a partir de um script. O workaround é lançar manualmente uma imagem, e, em seguida, ao inspecionar a imagem em execução, o ID AMI é dado. Mas há uma maneira mais fácil de encontrá-lo?

Author: Anthony Neace, 2016-11-28

2 answers

Os CentOS publicam os seus códigos de produtos AMI nas suas wiki . O wiki fornece as seguintes informações para os últimos CentOS 7 AMI:

  • proprietário: aws-marketplace
  • Código Do Produto: aw0evgkw8e5c1q413zgy5pjce

Usando esta informação, podemos consultar describe-images com o AWS CLI:

Exemplo:

aws ec2 describe-images \
    --owners 'aws-marketplace' \
    --filters 'Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce' \
    --query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
    --output 'text'

Resultado:

ami-6d1c2007

Esta pesquisa devolve um único ID AMI, seleccionado ordenando a colecção pela data de criação e depois selecciona o último elemento (mais recente) da colecção.

Por cento wiki, multiple AMI ids may be associated with a product key, por isso, embora esta consulta apenas retornasse um único AMI, porque existe apenas um que corresponda a este produto... no futuro, se um novo AMI é criado para este código de produto por qualquer razão esta consulta irá devolvê-lo em vez disso.

 26
Author: Anthony Neace, 2016-11-28 02:11:48

Se está à procura de todas as imagens Centos7

$ aws --region us-west-2 ec2 describe-images --owners aws-marketplace --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce --query 'Images[*].[CreationDate,Name,ImageId]' --filters "Name=name,Values=CentOS Linux 7*" --region us-west-2 --output table | sort -r
|  2018-06-13T15:58:14.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1805_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-77ec9308.4  |  ami-3ecc8f46  |
|  2018-05-17T09:30:44.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1804_2-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-55a2322a.4   |  ami-5490ed2c  |
|  2018-04-04T00:11:39.000Z|  CentOS Linux 7 x86_64 HVM EBS ENA 1803_01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-8274d6ff.4  |  ami-0ebdd976  |
|  2017-12-05T14:49:18.000Z|  CentOS Linux 7 x86_64 HVM EBS 1708_11.01-b7ee8a69-ee97-4a49-9e68-afaee216db2e-ami-95096eef.4   |  ami-b63ae0ce  |

Adicione-lhe uma pesquisa semelhante disponível para o RedHat

aws  ec2 describe-images --owners 309956199498 --query 'Images[*].[CreationDate,Name,ImageId]' --filters "Name=name,Values=RHEL-7.?*GA*" --region us-east-1 --output table | sort -r
|  2018-03-23T20:42:08.000Z |  RHEL-7.5_HVM_GA-20180322-x86_64-1-Hourly2-GP2  |  ami-6871a115 |
|  2017-08-08T15:37:31.000Z |  RHEL-7.4_HVM_GA-20170808-x86_64-2-Hourly2-GP2  |  ami-c998b6b2 |
|  2017-07-24T15:44:39.000Z |  RHEL-7.4_HVM_GA-20170724-x86_64-1-Hourly2-GP2  |  ami-cdc999b6 |
|  2016-10-26T22:32:29.000Z |  RHEL-7.3_HVM_GA-20161026-x86_64-1-Hourly2-GP2  |  ami-b63769a1 |
|  2015-11-12T21:06:58.000Z |  RHEL-7.2_HVM_GA-20151112-x86_64-1-Hourly2-GP2  |  ami-2051294a |
|  2015-02-25T20:24:23.000Z |  RHEL-7.1_HVM_GA-20150225-x86_64-1-Hourly2-GP2  |  ami-12663b7a |
|  2015-02-09T22:54:40.000Z |  RHEL-7.0_HVM_GA-20150209-x86_64-1-Hourly2-GP2  |  ami-60a1e808 |
|  2014-10-17T20:29:24.000Z |  RHEL-7.0_HVM_GA-20141017-x86_64-1-Hourly2-GP2  |  ami-a8d369c0 |
|  2014-05-28T19:17:11.000Z |  RHEL-7.0_GA_HVM-x86_64-3-Hourly2               
|  ami-785bae10 |
 0
Author: Prashant Lakhera, 2018-08-09 04:06:21