目次

AWS

AWS CLIの利用例



AWS CLIの利用例

関連ページ


AWS CLIで、IAM操作

aws iam list-users IAMユーザーの確認
aws iam list-groups IAMグループの確認
aws iam list-roles IAMロールの一覧

IAMユーザ

IAMユーザの作成作業
aws iam create-user --user-name ******** --tags Key=department,Value=******** Key=location,Value=**********
 
aws iam create-access-key --user-name ********

aws iam create-login-profile --user-name ******** --password '************' --password-reset-required
aws iam attach-user-policy --user-name ******** --policy-arn arn:aws:iam::aws:policy/IAMUserChangePassword
 
aws iam add-user-to-group --user-name ******** --group-name ********
aws iam add-user-to-group --user-name ******** --group-name ********
IAMユーザーの一覧
aws iam list-users --query "Users[].[UserName,CreateDate,PasswordLastUsed]" --output text


IAMグループ

IAMグループの一覧
aws iam list-groups --query "Groups[].[GroupName,GroupId,CreateDate]" --output text
echo "GroupName GroupId Arn CreateDate" > /tmp/awscli.tmp
aws iam list-groups --query "Groups[].[GroupName,GroupId,Arn,CreateDate]" --output text | sort >> /tmp/awscli.tmp
column -t /tmp/awscli.tmp
rm /tmp/awscli.tmp
ユーザーが所属しているグループを表示
echo "UserName Groups" > /tmp/awscli.tmp

aws iam list-users --query "Users[].[UserName]" --output text | sort | while read line
do
   echo ${line} > /tmp/awscli-group.tmp

   aws iam list-groups-for-user --user-name ${line} --query "Groups[].[GroupName]" --output text >> /tmp/awscli-group.tmp

   cat /tmp/awscli-group.tmp | tr "\n" " " | sed 's/$/\n/g' >> /tmp/awscli.tmp
done

column -t /tmp/awscli.tmp
rm /tmp/awscli.tmp /tmp/awscli-group.tmp


IAMロール

IAMロールの一覧
aws iam list-roles --query "Roles[].[RoleName,CreateDate]" --output text
IAMロールの信頼関係
aws iam list-roles --query "Roles[].[RoleName,AssumeRolePolicyDocument][]"


IAMポリシー

カスタマー管理ポリシー一覧
aws iam list-policies --scope Local
aws iam list-policies --scope Local --query "Policies[].[PolicyName,CreateDate,AttachmentCount,DefaultVersionId,UpdateDate]" --output text
IAMユーザーにアタッチされているポリシー
aws iam list-users --query "Users[].[UserName]" --output text | while read line
do
   echo UserName:$line
   aws iam list-attached-user-policies --user-name $line --query "AttachedPolicies[].[PolicyName,PolicyArn]" --output text
   echo ""
done
IAMグループにアタッチされているポリシー
aws iam list-groups --query "Groups[].[GroupName]" --output text | while read line
do
   echo GroupName:$line
   aws iam list-attached-group-policies --group-name $line --query "AttachedPolicies[].[PolicyName,PolicyArn]" --output text
   echo ""
done
IAMロールにアタッチされているポリシー
aws iam list-roles --query "Roles[].[RoleName]" --output text | while read line
do
   echo RoleName:$line
   aws iam list-attached-role-policies --role-name $line --query "AttachedPolicies[].[PolicyName,PolicyArn]" --output text
   echo ""
done


IAMアクセスキー

IAMアクセスキー一覧
aws iam list-access-keys --query "AccessKeyMetadata[].[UserName,AccessKeyId,Status,CreateDate]" --output text
アクセスキーの利用履歴一覧
echo "AccessKey LastUsedDate  ServiceName Region"

for access_key in $(aws iam list-access-keys --query "AccessKeyMetadata[].AccessKeyId" --output text); 
do
   IAMTEMP=$(aws iam get-access-key-last-used  --access-key-id $access_key --query "AccessKeyLastUsed.[LastUsedDate,ServiceName,Region]" --output text);

   echo "$access_key $IAMTEMP" >> /tmp/awscli.tmp
done

column -t /tmp/awscli.tmp
rm /tmp/awscli.tmp


AWS CLIで、VPC操作

VPC

VPCの確認
aws ec2 describe-vpcs
aws ec2 describe-vpcs --vpc-ids vpc-xxxxxxx
VPCの作成
aws ec2 create-vpc --cidr-block 10.0.0.0/16
VPC削除
aws ec2 delete-vpc --vpc-id vpc-xxxxxxx
VPCタグ追加
aws ec2 create-tags --resources vpc-xxxxxxx --tags Key=Name,Value=VPC-TEST


サブネット

サブネットの作成
aws ec2 create-subnet --vpc-id vpc-xxxxxxx --cidr-block 10.0.1.0/24 --availability-zone ap-northeast-1a
サブネットの削除
aws ec2 delete-subnet --subnet-id subnet-xxxxxxx


AWS CLIで、EC2操作

インスタンスの情報を取得

#リージョン内で稼働している全インスタンスの情報を取得
aws ec2 describe-instances
基本情報
echo "NameTag InstanceId ImageId InstanceType  AvailabilityZone KeyName PrivateIpAddress State VpcId SubnetId" > /tmp/awscli.tmp

aws ec2 describe-instances --query "Reservations[].Instances[].[Tags[?Key=='Name'] | [0].Value,InstanceId,ImageId,InstanceType,Placement.AvailabilityZone,KeyName,PrivateIpAddress,State.Name,VpcId,SubnetId]" --output text >> /tmp/awscli.tmp

column -t /tmp/awscli.tmp
rm /tmp/awscli.tmp
全インスタンスで必要な箇所のみ取得

GlobalIP,Name,Platform,PrivateIp,SecurityGroupId,State

aws ec2 describe-instances --output=table --query 'Reservations[].Instances[].{PrivateIp: join(`, `, NetworkInterfaces[].PrivateIpAddress), GlobalIP: join(`, `, NetworkInterfaces[].Association.PublicIp), Platform:Platform, State: State.Name, SecurityGroupId: join(`, `, SecurityGroups[].GroupId) ,Name: Tags[?Key==`Name`].Value|[0]}'

Org:
https://qiita.com/Raccoon-san/items/497fb3ba49bcf870e4e6
aws ec2 describe-instances --output=table --query 'Reservations[].Instances[].{InstanceId: InstanceId, PrivateIp: join(`, `, NetworkInterfaces[].PrivateIpAddress), GlobalIP: join(`, `, NetworkInterfaces[].Association.PublicIp), Platform:Platform, State: State.Name, SecurityGroupId: join(`, `, SecurityGroups[].GroupId) ,Name: Tags[?Key==`Name`].Value|[0]}'
インスタンスIDを指定して取得
aws ec2 describe-instances --instance-ids ${instance-id}
aws ec2 describe-instances --instance-ids ${instance-id} ${instance-id-2} ${instance-id-3}
filter指定
#インスタンスの状態が「running」のもののみ取得
aws ec2 describe-instances --filter "Name=instance-state-name,Values=running"
「pending」「shutting-down」「terminated」「stopping」「stopped」

aws ec2 describe-instances --filter "Name=instance-type,Values=m3.xlarge"

aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" "Name=instance-type,Values=m3.xlarge"

#タグを条件に指定
aws ec2 describe-instances --filter "Name=tag:Name,Values=web"
jqコマンドで絞込
#インスタンスIDのみ取得
aws ec2 describe-instances | jq '.Reservations[].Instances[].InstanceId'

#インスタンスID、インスタンスタイプ、プライベートIPを取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, InstanceType, PrivateIpAddress}'

#インスタンスID、プライベートIP、タグ名(Key=Name)を取得
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId, PrivateIpAddress, InstanceName: (.Tags[] | select(.Key=="Name").Value)}'


AWS CLIで、S3操作

aws s3 ls バケットの一覧を表示
aws s3 ls s3://バケット名/パス バケットの内容を表示
aws s3 mb s3://バケット名
aws --region リージョン s3 mb s3://バケット名
aws --region ap-northeast-1 s3 mb s3://バケット名
バケットを作成
aws s3 rb s3://バケット名 バケットを削除
(空でない場合は削除されない)
aws s3 rb s3://バケット名 --force バケットを削除
(空でなくても削除)
aws s3 sync フォルダ s3://バケット名/パス バケットの内容をローカルのフォルダと同期
(追加・更新のみで削除されない)
aws s3 sync フォルダ s3://バケット名/パス --delete バケットの内容をローカルのフォルダと同期
(削除もされる)
aws s3 cp ファイルパス s3://バケット名/パス/ ローカルのファイルをバケットにコピー
aws s3 mv ファイルパス s3://バケット名/パス/ ローカルのファイルをバケットに移動
aws s3 rm s3://バケット名/ファイル バケットのファイルを削除
aws s3 rm s3://バケット名/フォルダ --recursive バケットのフォルダを削除
aws s3 sync /xxxx/dir/  s3://test-bucket/dir1/ --exclude "*" --include "*.txt"
S3バケット一覧をJSONやTABLEで表示
aws s3api list-buckets --output talbe
aws s3api list-buckets --output json


参考