2016年1月31日日曜日

[aws-cli] AMI 関連で、よく使うコマンド


[aws-cli] EC2 関連で、よく使うコマンド の続きです。

今回は、AMI 関連で、よく使うコマンドのメモを記載します。


AMIを作成する


以下の例では、インスタンスIDを指定して、AMIを作成しています。
"--reboot" をつけているので、インスタンスが起動中であればリブートされます。
instance_id=i-xxxx
ami_nm="AMI_node01_`date '+%Y%m%d'`"

aws ec2 create-image --instance-id ${instance_id} \
    --name "${ami_nm}" \
    --description "system backup" \
    --reboot \
    --output table


AMI名でAMIを検索する


以下の例では、AMI名でAMIを探しています。
jqコマンドを使って、実行結果からイメージIDとスナップショットIDを取得しています。
aws ec2 describe-images \
    --filters "Name=name,Values=${ami_nm}" \
    --output json > ${TMP_DIR}/$$.ami_attr

AMI_ID=`cat ${TMP_DIR}/$$.ami_attr|jq -r ".Images[0].ImageId"`
SNAP_ID1=`cat ${TMP_DIR}/$$.ami_attr|jq -r ".Images[0].BlockDeviceMappings[0].Ebs.SnapshotId"`
SNAP_ID2=`cat ${TMP_DIR}/$$.ami_attr|jq -r ".Images[0].BlockDeviceMappings[1].Ebs.SnapshotId"`


AMIにタグを設定する


以下の例では、AMIと、AMIに紐ついてるスナップショットにタグをつけています。
aws ec2 create-tags \
      --resources ${AMI_ID} \
      --tags "Key=Name,Value=${ami_nm}" "Key=System,Value=${TAG_SYSTEM}" "Key=Env,Value=${TAG_ENV}"

aws ec2 create-tags \
      --resources ${SNAP_ID1} \
      --tags "Key=Name,Value=${ami_nm} sda" "Key=System,Value=${TAG_SYSTEM}" "Key=Env,Value=${TAG_ENV}"

aws ec2 create-tags \
      --resources ${SNAP_ID2} \
      --tags "Key=Name,Value=${ami_nm} sdf" "Key=System,Value=${TAG_SYSTEM}" "Key=Env,Value=${TAG_ENV}"



AMIを削除する


以下の例では、AMIと、AMIに紐つくスナップショットを削除してます。
aws ec2 deregister-image --image-id ${AMI_ID} --output table
aws ec2 delete-snapshot --snapshot-id ${SNAP_ID1} --output table
aws ec2 delete-snapshot --snapshot-id ${SNAP_ID2} --output table