AWS Cli自分用Tips


EC2

  • EC2インスタンスのNameタグを取得する
aws ec2 describe-instances --instance-ids INSTANCE_ID --query 'Reservations[].Instances[].Tags[?Key==`Name`].Value' --output text
  • 全てのインスタンスの情報を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[]'
  • 全てのインスタンスの Public IP と Public DNS Name を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {PublicDnsName, PublicIpAddress}' 
  • 全てのインスタンスのタグ名を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[]|{InstanceId, Tags}' 
  • インスンタンスへ ssh でアクセスするのに必要な情報を取得
aws ec2 describe-instances --filters Name=tag-value,Values="XXXX" |jq '.Reservations[].Instances[]|{InstanceId,PublicIpAddress,PrivateIpAddress,Tags}' 
  • PublicIpAddressを取得
aws ec2 describe-instances | jq '.Reservations [] .Instances [] .PublicIpAddress'
  • インスタンスIDを取得
aws ec2 describe-instances | jq -r '.Reservations[] .Instances[] .InstanceId'
aws ec2 describe-instances | jq '.Reservations[] .Instances[] .InstanceId'
  • Elastic IPの一覧を取得
aws ec2 describe-addresses| jq '.'
  • PublicDnsName, PublicIpAddress, Tagsの一覧を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {PublicDnsName, PublicIpAddress, Tags}'
  • AutoScalingで起動しているインスタンスの状態,InstanceID,PublicDnsName,PublicIpAddressの一覧を取得
aws ec2 describe-instances --filters "Name=tag:aws:autoscaling:groupName,Values=YOUR AUTOSCALING GROUP NAME" | jq '.Reservations[].Instances[] | {State, InstanceId, PublicDnsName, PublicIpAddress}'
  • 自分で作成したAMIのName,ImageIdの一覧を取得
aws ec2 describe-images --owners self | jq '.Images[] | {Name, ImageId}'
  • 自分で作成したAMIに特定のtagが付いているName,ImageIdの一覧を取得
aws ec2 describe-images --owners self --filter Name=tag-key,Values=YOUR TAG NAME Name=tag-value,Values=YOUR TAG VALUES | jq '.Images[] | {Name, ImageId}'
  • 自分で作成したSnapshotに特定のtagが付いているSnapshotIdの一覧を取得
aws ec2 describe-snapshots --filter Name=tag-key,Values=YOUR TAG NAME Name=tag-value,Values=YOUR TAG VALUES | jq '.Snapshots[] .SnapshotId'
  • 東京リージョンのEBSのVolumeId,SnapshotId,Sizeの一覧を取得
aws ec2 describe-volumes --region ap-northeast-1 | jq '.Volumes[]| {VolumeId, SnapshotId, Size}'
  • 対象のAutoScalingグループで稼働中のインスタンスIDを取得
aws ec2 describe-instances --filter 'Name=tag:aws:autoscaling:groupName,Values=demo-asg' "Name=instance-state-name,Values=running" | jq '.Reservations[].Instances[] | {InstanceId}'
  • Auto Scaling グループのインスタンスの更新(min, max変更)
aws autoscaling update-auto-scaling-group --auto-scaling-group-name demo-asg --min-size 2 --max-size 8
  • AutoScalingスケジュール実行
aws autoscaling put-scheduled-update-group-action --auto-scaling-group-name demo-asg --scheduled-action-name "demo-scaling-1100-1500" --recurrence "0 2 * * *" --min-size 2 --max-size 8 --desired-capacity 3
  • AutoScalingグループに設定されたインスタンスの設定
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names demo-asg | jq '.AutoScalingGroups[] | {MinSize, DesiredCapacity, MaxSize}'
  • AWS EC2 で取得しているグローバルIP(Elastic IP)を CLI で一覧する
aws ec2 describe-addresses | jq '.[] | .[] | .PublicIp' | sed 's/\"//g'
  • (add 2016/07/29) セキュリティグループID指定して設定内容確認
 aws ec2 describe-security-groups --query 'SecurityGroups[?GroupId==`sg-12345678`]'
  • (add 2016/11/15) 停止しているインスタンスIDの一覧を確認
aws ec2 describe-instances --filter "Name=instance-state-name,Values=stopped" --query 'Reservations[].Instances[].[InstanceId]'
  • (add 2016/11/15) 削除保護を無効化
aws ec2 modify-instance-attribute --instance-id i-xxxxxx --no-disable-api-termination
  • (add 2017/02/20) Parameter Storeの値設定
# 文字列
aws ssm put-parameter --name dev.db_user --type String --value devdbuser --region ap-northeast-1

# 安全な文字列
aws ssm put-parameter --name dev.db_password --type SecureString --value password --region ap-northeast-1
  • (add 2017/02/20) Parameter Storeの値取得
aws --region ap-northeast-1 ssm get-parameters --name dev.db_password --with-decryption

aws --region ap-northeast-1 ssm get-parameters --name dev.db_user --with-decryption

aws --region ap-northeast-1 ssm get-parameters --name dev.db_user --with-decryption --query "Parameters[0].Value" --output text

aws --region ap-northeast-1 ssm get-parameters --name dev.db_password --with-decryption --query "Parameters[0].Value" --output text
  • (add 2017/03/02) AMI作成(タイムスタンプ付き)
aws ec2 --region ap-northeast-1 create-image --instance-id i-xxxxx --name base-$(date +%Y%m%d%H%M%S) --description 'created by '$(date +%Y%m%d%H%M%S) --no-reboot
  • (add 2017/03/02) EBSスナップショット作成(タイムスタンプ付き)
aws ec2 --region ap-northeast-1 create-snapshot --volume-id vol-xxxxx --description 'created by '$(date +%Y%m%d%H%M%S)
  • (add 2017/03/15) セキュリティグループのInboundへ追加
aws --region ap-northeast-1 ec2 authorize-security-group-ingress --group-id sg-xxxxxxxx --protocol tcp --port 80 --cidr 192.168.10.1/32
  • (add 2017/03/15) セキュリティグループのInboundから削除
aws --region ap-northeast-1 ec2 revoke-security-group-ingress --group-id sg-xxxxxxxx --protocol tcp --port 80 --cidr 192.168.10.1/32
  • (add 2017/09/04) 特定のタグが付いた起動中のインスタンスのprivate ipを取得する
aws ec2 describe-instances --filter "Name=tag-key,Values=prj" "Name=tag-value,Values=demo" --query 'Reservations[].Instances[?State.Name==`running`].PrivateIpAddress[]' --region ap-northeast-1

ELB

  • ELBに紐付いているInstanceId,Statusを一覧取得
aws elb describe-instance-health --load-balancer-name YOUR ELB NAME | jq '.InstanceStates[]|{InstanceId, State}'

RDS

  • RDSのインスタンスを取得
aws rds describe-db-instances 
  • RDSのEndPointとDB Instance Identifierを取得
aws rds describe-db-instances | jq '.DBInstances[] |{DBInstanceIdentifier,Endpoint}'
  • RDS SnapshotのDBSnapshotIdentifier,DBInstanceIdentifierの一覧を取得
aws rds describe-db-snapshots | jq '.DBSnapshots[] | {DBSnapshotIdentifier, DBInstanceIdentifier}'
  • RDSのログ一覧取得
aws rds describe-db-log-files --db-instance-identifier demo-db | jq '.DescribeDBLogFiles[].LogFileName'
  • RDSのログダウンロード
aws rds download-db-log-file-portion --db-instance-identifier demo-db --region ap-northeast-1 --log-file-name "slowquery/mysql-slowquery.log" --output text
  • (add 2017/02/20) RDSのマスターパスワード再設定
aws rds modify-db-instance --db-instance-identifier demo-db --master-user-password 'xxxxxxx' --region ap-northeast-1

S3

  • バケット一覧
aws s3api list-buckets | jq '.Buckets[] .Name'
  • バケットの使用量
aws s3 ls s3://demo --recursive --human-readable --summarize --region ap-northeast-1

VPC

  • VPC一覧を取得
aws ec2 describe-vpcs | jq '.Vpcs[]'
  • Subnet一覧を取得
aws ec2 describe-subnets | jq '.Subnets[]'
  • RouteTable一覧を取得
aws ec2 describe-route-tables | jq '.RouteTables[]'

IAM

  • ユーザ一覧を取得
aws iam list-users
  • 自分のAWSアカウントID確認
aws sts get-caller-identity
  • ELBへ証明書アップロード
aws iam upload-server-certificate --server-certificate-name monoqn-20170512 --certificate-body file://my-crt.pem --private-key file://my-key.pem --certificate-chain file://my-chain.pem

Elastic Beanstalk

  • ApplicationName,EnvironmentName,VersionLabel,EndpointURL,CNAMEを一覧取得
aws elasticbeanstalk describe-environments | jq '.Environments[] | {ApplicationName, EnvironmentName, VersionLabel, EndpointURL, CNAME}'
  • 特定の環境で起動しているEC2インスタンスIDを取得
aws elasticbeanstalk describe-environment-resources --environment-name YOUR ENVIRONMENT NAME | jq '.EnvironmentResources.Instances[].Id'

CloudTrail

  • 東京リージョンのCloudTrailで出力しているS3bucketを取得
aws cloudtrail describe-trails --region ap-northeast-1 | jq '.trailList[] .S3BucketName'

ESC

  • 最新のECS-optimized AMI ID取得
aws ssm get-parameters --names "/aws/service/ecs/optimized-ami/amazon-linux/recommended" --query "Parameters[0].Value" --output text --region ap-northeast-1 | jq -r .image_id

その他便利なコマンド

  • 自分のグローバルIPを取得
curl -s ipinfo.io | jq -r '.ip'
curl ifconfig.me
curl http://checkip.amazonaws.com/
  • 自分のローカルIPを取得
ifconfig en0 | grep inet

2017/01/24 追記

こういうGitHubのrepository見つけました。
https://github.com/awslabs/awscli-aliases
これめっちゃ便利です!!おすすめします。