AWS CLI 辞典
AWS CLI コースで覚えるサービスとオプションの一覧です。ファイルの操作・シェルの構文・curl は最初から使えます。
awsAWS を操作するLv1 で覚える
aws <サービス> <操作> [--パラメータ 値 ...] aws --version aws help / aws ec2 help
AWS CLI v2。Amazon Linux 2023 には最初から入っています。サービス(ec2・s3・iam…)と操作(describe-instances など)を並べて使います。終了コードは 0 成功、252 書き方の誤り、253 設定・認証、254 AWS からのエラー。
$ aws --version
aws sts誰として操作しているかLv1 で覚える
aws sts get-caller-identity
今の認証情報が、どのアカウントのどのユーザー(ロール)かを表示します。権限が無くても必ず使えるので、設定の確認に最初に打つコマンドです。
$ aws sts get-caller-identity
aws configure認証情報と既定値を設定Lv2 で覚える
aws configure(4 つの質問に答える) aws configure --profile 名前 aws configure set region ap-northeast-1 aws configure get region / list / list-profiles
アクセスキー・シークレットキー・リージョン・出力形式を ~/.aws/credentials と ~/.aws/config に書きます。Enter だけ押すと今の値のまま。
$ aws configure $ aws configure list
--regionリージョンを選ぶLv3 で覚える
--region ap-northeast-1 export AWS_REGION=us-east-1 aws configure set region …
EC2 や CloudWatch Logs のリソースはリージョンごとに別々です。--region、環境変数 AWS_REGION / AWS_DEFAULT_REGION、設定ファイルの順で決まります。IAM はリージョンに関係しません。
$ aws ec2 describe-availability-zones --region us-east-1
aws ec2EC2 と VPC を操作するLv3 で覚える
aws ec2 describe-instances / run-instances / stop-instances / start-instances / terminate-instances aws ec2 wait instance-running --instance-ids ID aws ec2 create-vpc / create-subnet / create-security-group …
インスタンス・AMI・キーペア・セキュリティグループ・VPC・サブネット・インターネットゲートウェイ・経路表を扱います。--dry-run で権限だけ確かめられます。
$ aws ec2 describe-instances --output table
--output出力の形を選ぶLv4 で覚える
--output json(既定)| text | table | yaml
json は機械向け、text はタブ区切りでシェルと相性がよく、table は人が読みやすい表です。aws configure set output text で既定を変えられます。
$ aws ec2 describe-vpcs --output table
--profile複数の認証情報を使い分けるLv5 で覚える
aws configure --profile dev aws s3 ls --profile dev export AWS_PROFILE=dev
~/.aws/credentials の [dev]、~/.aws/config の [profile dev] が 1 つのプロファイルです。本番と開発のように、アカウントや権限ごとに分けて使います。
$ aws configure list-profiles
aws s3S3 をファイルのように扱うLv7 で覚える
aws s3 ls [s3://バケット/接頭辞] aws s3 mb / rb s3://バケット aws s3 cp 元 先 [--recursive] aws s3 sync 元 先 [--delete] [--exclude パターン] aws s3 mv / rm aws s3 presign s3://バケット/キー --expires-in 秒
高レベルのコマンド。ローカルのパスと s3://バケット/キー の間でコピーします。フォルダのように見える部分(PRE)は、キーの / までの接頭辞です。
$ aws s3 cp index.html s3://my-site/ $ aws s3 sync ./site s3://my-site --delete
aws s3apiS3 の API をそのまま呼ぶLv11 で覚える
aws s3api create-bucket --bucket 名前 --create-bucket-configuration LocationConstraint=リージョン aws s3api list-objects-v2 --bucket 名前 [--prefix p] aws s3api put-bucket-versioning / put-public-access-block / put-bucket-policy
バケットの設定(バージョニング・公開・ポリシー・タグ)など、aws s3 ではできない操作をします。出力は JSON です。
$ aws s3api get-bucket-versioning --bucket my-site
--query出力から必要なところだけ取り出すLv15 で覚える
--query 'Reservations[].Instances[].InstanceId'
--query 'Vpcs[0].VpcId' --output text
--query "Reservations[].Instances[?State.Name=='running'].InstanceId"
--query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType}'JMESPath という書き方で JSON を絞り込みます。[] で配列を広げ、[0] で 1 つ目、[?条件] で絞り込み、{名前:式} で形を作ります。手元で絞るので、AWS から返ってくる量は変わりません。
$ aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' --output text
--filtersAWS の側で絞り込むLv18 で覚える
--filters Name=instance-state-name,Values=running --filters Name=tag:Name,Values=web* --filters Name=A,Values=x Name=B,Values=y(AND)
EC2 の describe-* で使います。条件は AWS 側で判定されるので、大量のリソースでも速いです。Values を複数書くと「どれか」、Name を複数書くと「全部」の条件です。
$ aws ec2 describe-instances --filters Name=tag:Env,Values=dev
aws iamユーザーと権限を管理するLv34 で覚える
aws iam create-user / create-group / add-user-to-group aws iam attach-user-policy --user-name 名前 --policy-arn ARN aws iam create-policy --policy-name 名前 --policy-document file://p.json aws iam create-role / create-instance-profile / add-role-to-instance-profile aws iam create-access-key / update-access-key / delete-access-key
IAM はリージョンに関係なくアカウント全体で 1 つです。必要な権限だけを付ける(最小権限)のが基本です。
$ aws iam list-users --output table
aws logsCloudWatch Logs を読む・管理するLv38 で覚える
aws logs describe-log-groups aws logs tail ロググループ --since 1h aws logs filter-log-events --log-group-name 名前 --filter-pattern ERROR aws logs put-retention-policy --log-group-name 名前 --retention-in-days 30
アプリやサーバーのログを集めておく場所です。ロググループの中にログストリームがあり、そこにイベント(1 行ずつのログ)が入ります。
$ aws logs tail /app/web --since 30m