LoginSignup
9
7

More than 5 years have passed since last update.

AWS Cliメモ

Last updated at Posted at 2016-03-18

シェルスクリプトで使ったものをそのまま引用しているので
以下$のついてる変数部分は自分用に変えてください。

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

参考

AWS CLIを使ってEC2インスタンスの情報を取得する
AWS Cli自分用Tips

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7