シェルスクリプトで使ったものをそのまま引用しているので
以下$のついてる変数部分は自分用に変えてください。
EC2
・インスタンスの作成
aws ec2 run-instances --image-id $IMAGE_ID --security-groups $SECURITY_GROUP --instance-type $INSTANCE_TYPE --region $REGION --count 1 --key-name $KEY_NAME
・インスタンスの起動
aws ec2 start-instances --instance-ids $INSTANCE_ID --region $REGION
・インスタンスの停止
aws ec2 stop-instances --instance-ids $INSTANCE_ID --region $REGION
・インスタンスタイプ変更
aws ec2 modify-instance-attribute --instance-id $INSTANCE_ID --region $REGION --attribute instanceType --value $NEW_INSTANCE_TYPE
・インスタンスを作成し、そのインスタンスidを取得
aws ec2 run-instances --image-id $IMAGE_ID --security-groups $SECURITY_GROUP --instance-type $INSTANCE_TYPE --region $REGION --count 1 --key-name $KEY_NAME | jq -r .Instances[].InstanceId
・インスタンスのpublicIP取得
aws ec2 describe-instances --instance-id $INSTANCE_ID --region $REGION | jq -r .Reservations[].Instances[].PublicIpAddress
・インスタンスにタグを追加
aws ec2 create-tags --resources $INSTANCE_ID --tag Key=$TAG_NAME,Value=$TAG_VALUE --region $REGION
・タグ名に一致するインスタンスのidを取得
aws ec2 describe-instances --region $REGION --filter "Name=tag:$TAG_NAME,Values=$TAG_VALUE" "Name=tag:$ANOTHER_TAG_NAME,Values=$ANOTHER_TAG_VALUE" | jq -r .Reservations[].Instances[].InstanceId
・インスタンスのstateを取得
aws ec2 describe-instances --instance-id $INSTANCE_ID --region $REGION | jq -r '.Reservations[].Instances[].State.Name'
・stateがrunningのインスタンスのID取得
aws ec2 describe-instances --region $REGION --filters "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[].InstanceId'
・ElasticIPの割り当て
aws ec2 allocate-address --region $REGION
・ElasticIPの割り当て & 関連付け
ALLOCATION_ID=$(aws ec2 allocate-address --region $REGION | jq -r .AllocationId)
aws ec2 associate-address --instance-id $INSTANCE_ID --allocation-id $ALLOCATION_ID --region $REGION
ELB
・ELBに追加されているインスタンスのID取得
aws elb describe-instance-health --load-balancer-name $ELB_NAME --region $REGION | jq -r .InstanceStates[].InstanceId
・ELBにインスタンスを追加
aws elb register-instances-with-load-balancer --load-balancer-name $ELB_NAME --region $REGION --instances $INSTANCE_ID
・ELBからインスタンス削除
aws elb deregister-instances-from-load-balancer --load-balancer-name $ELB_NAME --region $REGION --instances $INSTANCE_ID
Route53
・レコードの作成(Aレコード)
# ゾーンIDの取得
ZONE_ID=$(aws route53 list-hosted-zones-by-name --dns-name $DOMAIN --max-items 1 | jq -r '.HostedZones[] | .Id')
# ゾーン ID から余計なプレフィックスを除去
ZONE_ID=${ZONE_ID##*/}
cat <<EOT > /tmp/recordset.json
{
"Comment": "create A record",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "${DOMAIN}",
"Type": "A",
"TTL": 300 ,
"ResourceRecords": [
{
"Value": "${IP_ADDRESS}"
}
]
}
}
]
}
EOT
aws route53 change-resource-record-sets --hosted-zone-id $ZONE_ID --change-batch file:///tmp/recordset.json
rm -rf /tmp/recordset.json
・レコードの作成(Alias)
# ゾーンIDの取得
ZONE_ID=$(aws route53 list-hosted-zones-by-name --dns-name $DOMAIN --max-items 1 | jq -r '.HostedZones[] | .Id')
# ゾーン ID から余計なプレフィックスを除去
ZONE_ID=${ZONE_ID##*/}
cat <<EOT > /tmp/alias_recordset.json
{
"Comment": "create alias A record",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "${ALIAS_DOMAIN}",
"Type": "A",
"AliasTarget": {
"HostedZoneId": "${ZONE_ID}",
"DNSName": "${ALIAS_TARGET}",
"EvaluateTargetHealth": false
}
}
}
]
}
EOT
aws route53 change-resource-record-sets --hosted-zone-id $ZONE_ID --change-batch file:///tmp/alias_recordset.json
rm -rf /tmp/alias_recordset.json
番外編
・指定したタグを持つインスタンスを全て起動するワンライナー
aws ec2 describe-instances --region $REGION --filter "Name=tag:$TAG_NAME,Values=$TAG_VALUE" | jq -r .Reservations[].Instances[].InstanceId | xargs aws ec2 start-instances --region $REGION --instance-ids