Cela faisait quelques années que je n'avais pas fait de travail sérieux utilisant le nuage Amazon. Il m'a fallu un petit moment pour retrouver mes marques et m'adapter aux changements. En particulier, les instances à plus petit prix, t2.nano ne sont plus accessible que depuis les nuages virtuels privés (« Virtual Private Cloud », VPC), et j'ai eu un peu de mal à trouver comment en créer un simple. Je pense qu'une des raisons est que les utilisateurs arrivés après le 18 mars 2013 on automatiquement un VPC par défaut et que les autres ont déjà créé leur VPC depuis longtemps. Au final, ce n'était pas compliqué du tout. C'est certainement pour ça que je n'avais pas trouvé de tutoriel à ce sujet.

En résumé il faut d'abords créer un VPC. Pour lancer une instance de temps en temps, la plage IP privée importe peu. Les VPCs par défaut utilisent 172.31.0.0/16; alors faisons de même.

CIDR_BLOCK=172.31.0.0/16
aws ec2 create-vpc --cidr-block $CIDR_BLOCK

La commande renvoie un identifiant de VPC, que je stocke à la main dans la variable VPC par copié-collé. Le même principe sera répété pour chaque commande créant quelque chose. On peut retrouver l'identifiant avec la commande aws ec2 describe-vpcs.

VPC=vpc-XXXXXXXX  # Et ainsi de suite

Après, créer un sous-réseau. Là encore, pas la peine de faire compliqué, on peut lui donner la plage IP entière. Je récupère l'identifiant renvoyé et le stocke dans la variable SUBNET. Pour que les instances reçoivent une IP publique comme dans les VPCs par défaut et l'ancien comportement du nuage sans VPC, il faut activer l'attribut MapPublicIpOnLaunch.

aws ec2 create-subnet --vpc-id $VPC --cidr-block $CIDR_BLOCK
SUBNET=subnet-XXXXXXXX
aws ec2 modify-subnet-attribute --subnet-id $SUBNET --map-public-ip-on-launch 

Ensuite, créer une passerelle (je récupère l'identifiant dans GATEWAY) et l'attacher au VPC.

aws ec2 create-internet-gateway
GATEWAY=igw-XXXXXXXX
aws ec2 attach-internet-gateway --internet-gateway-id $GATEWAY --vpc-id $VPC

Une table de routage a été créée automatiquement, et on peut trouver son identifiant via la commande describe-route-tables, pour créer ensuite une route par défaut vers la passerelle.

aws ec2 describe-route-tables
ROUTETABLE=rtb-XXXXXXXX
aws ec2 create-route --route-table-id $ROUTETABLE --destination-cidr-block 0.0.0.0/0 --gateway-id $GATEWAY

Bien sûr, si on n'ouvre pas le trafic, on ne pourra pas contacter la machine... Ici, j'ouvre le port 22 pour un accès SSH.

aws ec2 describe-security-groups
SECURITY_GROUP=sg-XXXXXXXX
aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP --protocol tcp --port 22 --cidr 0.0.0.0/0

Autre changement, Amazon distribue maintenant des outils libres pour la ligne de commande, qui sont plus complets qu'euca2ools.

Prochaine étape, je vais recommencer les tests utilisant l'installeur Debian dans le Nuage.