LoginSignup
265
246

More than 5 years have passed since last update.

AWS Cli自分用Tips

Last updated at Posted at 2014-09-17

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
これめっちゃ便利です!!おすすめします。

265
246
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
265
246