Edited at

AWS Cli自分用Tips

More than 1 year has passed since last update.


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

これめっちゃ便利です!!おすすめします。