J'ai lancé des instances EC2 en me connectant au site AWS, en cliquant sur le bouton "Lancer" et en suivant les étapes interdites. Maintenant, j'aimerais lancer l'instance à partir d'un script Ansible. Pour ce faire, j'ai besoin (je pense) de l'ID AMI de l'image que je souhaite lancer.
Le problème est que je lance une image à partir du "Marketplace" et que je ne trouve pas l'identifiant AMI. En particulier, j'utilise l'image Centos 7. C’est facile à trouver dans l’interface Web, il suffit d’aller sur le marché et de rechercher «centos», l’image que je veux est la première trouvée, mais les informations fournies à propos de l’image ne semblent pas inclure l’identifiant AMI besoin de le lancer à partir d'un script. La solution de contournement consiste à lancer manuellement une image, puis lors de l'inspection de l'image en cours d'exécution, l'ID AMI est fourni. Mais existe-t-il un moyen plus facile de le trouver?
CentOS publie ses codes de produits AMI sur leur wiki . Le wiki fournit les informations suivantes pour la dernière version de l'AMI CentOS 7:
aws-marketplace
aw0evgkw8e5c1q413zgy5pjce
En utilisant ces informations, nous pouvons interroger describe-images avec l'AWS CLI:
Exemple:
aws ec2 describe-images \
--owners 'aws-marketplace' \
--filters 'Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce' \
--query 'sort_by(Images, &CreationDate)[-1].[ImageId]' \
--output 'text'
Sortie:
AMI-6d1c2007
Cette requête renvoie un ID AMI unique, sélectionné en triant la collection par date de création, puis en sélectionnant le dernier élément (le plus récent) de la collection.
Selon le wiki CentOS, multiple AMI ids may be associated with a product key
, alors que cette requête ne renverrait actuellement qu'une seule AMI, car une seule correspondant à ce produit existe actuellement ... à l'avenir si une nouvelle AMI est créée pour ce code produit pour une raison quelconque, si cette requête le renvoie au lieu.
Si vous recherchez toutes les images 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 |
ajoutez-y une requête similaire à celle disponible pour 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 |