AWS CLI

目次

インストールから認証・出力・自動化・関連 CLI まで

AWS CLI は、ターミナルから AWS API を呼び出す公式コマンドラインツールです。本稿は AWS CLI v2 を前提に、設定・認証、グローバルオプション、JMESPathサービス別コマンド例ユースケース別レシピ、シェル連携、AWS 公式/準公式のその他 CLI、運用上の注意をまとめます。

公式: https://docs.aws.amazon.com/cli/latest/userguide/ 引数の正は aws <service> <op> help と上記を優先してください。


1. 概要とバージョン

項目 内容
AWS CLI v1 メンテナンスモード。新規採用は非推奨。
AWS CLI v2 現行。単体バンドル、SSO 統合など。
確認 aws --version
aws --version

2. インストールと更新

2.1 macOS

方法 備考
公式 .pkg User Guide の手順に従う
Homebrew brew install awscli

2.2 Linux / Windows

公式インストーラまたはパッケージマネージャ。CI では バージョン固定 を推奨。

brew upgrade awscli   # Homebrew の場合

3. 設定ファイルの構造

ファイル 役割
~/.aws/credentials アクセスキー、セッション、credential_process機密
~/.aws/config リージョン、出力、role_arn、SSO 等
aws configure --profile dev
aws sts get-caller-identity --profile dev

ロールチェーン例(config):

[profile base]
region = ap-northeast-1

[profile app-admin]
role_arn = arn:aws:iam::123456789012:role/AppAdmin
source_profile = base
region = ap-northeast-1

IAM Identity Center(SSO)構成の例:

[profile corp-dev]
sso_session = corp
sso_account_id = 123456789012
sso_role_name = Developer
region = ap-northeast-1
output = json

[sso-session corp]
sso_start_url = https://example.awsapps.com/start
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access

credential_process の例:

[profile vault-prod]
credential_process = /usr/local/bin/my-credential-helper prod
region = ap-northeast-1
output = json

configcredentials のどちらに何を書くか迷ったら、次の整理で考えると事故が減ります。

置き場所 向く内容
credentials 秘密情報、短期セッション、補助ツールが吐く認証情報
config リージョン、出力形式、ロール、SSO、CLI の振る舞い

4. 認証のパターン

方式 用途
アクセスキー ローカル/レガシー CI(ローテーション必須)
AssumeRole クロスアカウント・職務分離
IAM Identity Center(SSO) 企業ユーザー
credential_process Vault / 社内 IdP 連携
IMDS(EC2 等) インスタンスプロファイル
aws configure sso
aws sso login --profile corp

クレデンシャル解決の 優先順位 は User Guide の Configuration and credential precedence を参照。


5. コマンドの基本形

aws <サービス名> <オペレーション> [オプション…] [グローバルオプション]
aws help
aws ec2 describe-instances help

6. グローバルオプション

オプション 説明
--profile プロファイル切替
--region リージョン上書き
`–output json yaml yaml-stream text table` 出力形式
--no-cli-pager ページャ無効(CI)
--endpoint-url LocalStack 等
--no-verify-ssl 本番禁止
--debug HTTP リクエスト、再試行、署名周辺まで追う
--no-cli-auto-prompt 補完 UI を無効化。CI やスクリプトで有用
--cli-auto-prompt 対話的にパラメータ入力。慣れない操作の補助
--cli-read-timeout レスポンス読取タイムアウト秒数
--cli-connect-timeout 接続タイムアウト秒数
--ca-bundle 独自 CA バンドルを指定
--no-sign-request 署名を付けない。公開 S3 など特殊用途のみ
--cli-binary-format file:// の解釈方式を制御
環境変数 意味
AWS_PROFILE 既定プロファイル
AWS_REGION 既定リージョン
AWS_PAGER 空でページャ無効化しやすい
AWS_ACCESS_KEY_ID 短期/長期クレデンシャル
AWS_DEFAULT_OUTPUT 既定出力形式
AWS_CA_BUNDLE 既定の CA バンドル
AWS_MAX_ATTEMPTS 再試行回数の上書き
AWS_RETRY_MODE standard / adaptive など
AWS_EC2_METADATA_DISABLED IMDS 参照を止めたいとき
aws_cli_auto_prompt auto-prompt の有効化

6.1 実務でよく効くオプションの見方

場面 よく使うもの 何に効くか
手元で安全に確認 --output table, --query, --profile 見やすさと誤操作防止
CI / cron --no-cli-pager, --output json, --no-cli-auto-prompt 非対話で安定実行
社内 Proxy / 独自 CA --ca-bundle, AWS_CA_BUNDLE TLS 検証の整合
LocalStack / エミュレータ --endpoint-url 宛先切替
API が重い / 不安定 --cli-connect-timeout, --cli-read-timeout, AWS_RETRY_MODE 失敗時の挙動調整
原因調査 --debug 署名、再試行、HTTP ステータスの可視化

6.2 優先順位の考え方

ざっくり覚えるなら、コマンドライン > 環境変数 > プロファイル設定 です。つまり、

  • その場だけ変えたいものは --region--profile
  • シェルの間だけ効かせたいものは環境変数
  • 普段の既定値は ~/.aws/config

に置くと整理しやすいです。


7. パラメータの渡し方と JSON / バイナリ入力

CLI でつまずきやすいのは、AWS の API よりも シェルの quotingJSON / バイナリの渡し方 です。

7.1 文字列、配列、マップの基本

文字列 --alarm-name demo-cpu
配列 --instance-ids i-aaa i-bbb
マップ --tags Key=Env,Value=dev Key=Name,Value=web-1
JSON --cli-input-json file://input.json

7.2 file://fileb://

書き方 使いどころ
file://path.json JSON やテキストをファイルから読む
fileb://payload.bin 生バイナリをそのまま渡す

特に KMS、Lambda invoke、バイナリペイロード系では fileb:// を使うか、--cli-binary-format raw-in-base64-out を理解しておくと事故が減ります。

7.3 --cli-binary-format が必要になる場面

AWS CLI v2 では file:// の扱いが v1 と少し違うため、古い runbook をそのまま実行するとハマることがあります。

aws lambda invoke \
  --function-name my-fn \
  --payload '{"hello":"world"}' \
  --cli-binary-format raw-in-base64-out \
  /tmp/out.json

このオプションは、「JSON 文字列をそのままバイナリ入力として渡したい」系の例で特に出てきます。

7.4 --generate-cli-skeleton を先に使う

初見の API で複雑な JSON を hand-write するより、先に雛形を吐かせる方が速いことが多いです。

aws ecs create-service --generate-cli-skeleton input > create-service.json

8. 出力形式と JMESPath

--queryJMESPath。レスポンス取得のクライアント側抽出。

aws ec2 describe-instances \
  --filters "Name=instance-state-name,Values=running" \
  --query 'Reservations[].Instances[].[InstanceId,Tags[?Key==`Name`].Value|[0],Placement.AvailabilityZone]' \
  --output table
aws iam list-users --query 'Users[].UserName' --output text

注意: 大量リソースは API 側 --filters / --prefix 等で先に絞る。


8.1 よく使う JMESPath パターン

目的
配列から 1 列だけ抜く Users[].UserName
複数列を表にする DBInstances[].{Id:DBInstanceIdentifier,Class:DBInstanceClass}
条件に合う要素を絞る Functions[?Runtime==\python3.12`]`
ネストを平らにする Reservations[].Instances[].InstanceId
最初の 1 件だけ取る Tags[?Key==\Name`].Value

8.2 --query だけで頑張るべきか

判断基準はこうです。

  • AWS のレスポンスを少し整える程度なら --query
  • 複雑な集計や join に寄るなら jq
  • 件数が多いなら、まず API 側の --filters や prefix で絞る

9. ページネーションと Waiter

オプション 用途
--no-paginate 1 回目のページだけ取る
--page-size 1 API call あたりのページサイズを小さくする
--max-items 最終的にクライアントへ返す件数を制御
--starting-token 続き取得
aws ec2 wait instance-running --instance-ids i-0abc...
aws cloudformation wait stack-update-complete --stack-name mystack

9.1 --page-size--max-items の違い

ここは混同しやすいです。

オプション 効く場所 典型用途
--page-size サービス API 呼び出し単位 タイムアウト回避、1 回あたりの負荷調整
--max-items CLI が最終的に返す件数 手元確認、途中まで見たい

たとえば大量の S3 オブジェクト一覧でレスポンスが重いなら --page-size、とりあえず 20 件だけ見たいなら --max-items が合います。

9.2 Waiter が向く作業

Waiter は「状態を見ながら sleep-loop を自作する」代わりです。

向く場面
aws ec2 wait instance-running 起動完了待ち
aws cloudformation wait stack-create-complete デプロイ待ち
aws rds wait db-instance-available DB 変更後の復帰待ち

自分で while を書くより安全ですが、待ち時間が長い操作では timeout や失敗時の戻り値確認も合わせて考えるとよいです。


10. サービス別コマンド例(一覧寄り)

以下は 頻出パターンの例。ARN・名前は環境に合わせて置き換えること。

10.1 STS

aws sts get-caller-identity
aws sts assume-role \
  --role-arn arn:aws:iam::123456789012:role/ReadOnly \
  --role-session-name cli-$(whoami) \
  --duration-seconds 3600

10.2 S3(高レベル aws s3

操作
バケット一覧 aws s3 ls
オブジェクト一覧 aws s3 ls s3://bucket/prefix/
アップロード aws s3 cp ./a.txt s3://bucket/a.txt
ディレクトリ同期 aws s3 sync ./local/ s3://bucket/prefix/
削除(単一キー) aws s3 rm s3://bucket/key
バケット作成 aws s3 mb s3://bucket-name
バージョニング aws s3api put-bucket-versioning --bucket B --versioning-configuration Status=Enabled
静的 Web サイト(例) aws s3 website s3://bucket/ --index-document index.html

SSE 例: aws s3 cp file s3://b/k --sse AES256

10.3 S3(低レベル aws s3api

ポリシー・CORS・ライフサイクル等は s3api が多い。

aws s3api get-bucket-location --bucket my-bucket
aws s3api get-public-access-block --bucket my-bucket
aws s3api put-object --bucket my-bucket --key path/file.txt --body ./file.txt

10.4 EC2

aws ec2 describe-instances --filters "Name=tag:Env,Values=dev" --query 'Reservations[].Instances[].InstanceId' --output text
aws ec2 describe-vpcs --query 'Vpcs[].{Id:VpcId,Cidr:CidrBlock}' --output table
aws ec2 describe-security-groups --group-ids sg-0123456789abcdef0
aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 443 --cidr 203.0.113.0/24
aws ec2 create-tags --resources i-0abc --tags Key=Name,Value=web-1
# 停止・開始(本番は慎重に)
aws ec2 stop-instances --instance-ids i-0abc
aws ec2 start-instances --instance-ids i-0abc

10.5 EBS(スナップショット)

aws ec2 create-snapshot --volume-id vol-0abc --description "pre-change-$(date +%Y%m%d)"
aws ec2 describe-snapshots --owner-ids self --query 'Snapshots[?StartTime>=`2026-01-01`].[SnapshotId,VolumeId,StartTime]' --output table

10.6 ELB(ALB/NLB)

aws elbv2 describe-load-balancers
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:...

10.7 RDS

aws rds describe-db-instances --query 'DBInstances[].{Id:DBInstanceIdentifier,Class:DBInstanceClass,Endpoint:Endpoint.Address}' --output table
aws rds create-db-snapshot --db-instance-identifier mydb --db-snapshot-identifier mydb-manual-$(date +%Y%m%d)

10.8 DynamoDB

aws dynamodb list-tables
aws dynamodb describe-table --table-name T
aws dynamodb query \
  --table-name T \
  --key-condition-expression "pk = :p" \
  --expression-attribute-values '{":p":{"S":"USER#1"}}'

10.9 Lambda

aws lambda list-functions --query 'Functions[].FunctionName' --output text
aws lambda invoke --function-name my-fn --payload '{"k":"v"}' --cli-binary-format raw-in-base64-out /tmp/out.json
cat /tmp/out.json
aws lambda update-function-code --function-name my-fn --zip-file fileb://fn.zip
aws lambda publish-version --function-name my-fn

10.10 SNS

aws sns list-topics
aws sns publish --topic-arn arn:aws:sns:ap-northeast-1:123456789012:alerts --message "disk warning"

10.11 SQS

aws sqs list-queues
aws sqs get-queue-url --queue-name my-queue
aws sqs send-message --queue-url https://sqs....amazonaws.com/.../my-queue --message-body '{"event":"ping"}'
aws sqs receive-message --queue-url ... --max-number-of-messages 10 --wait-time-seconds 10
aws sqs purge-queue --queue-url ...

10.12 EventBridge

aws events list-rules --event-bus-name default
aws events put-events --entries '[{"Source":"my.app","DetailType":"test","Detail":"{\"x\":1}"}]'

10.13 Step Functions

aws stepfunctions list-state-machines
aws stepfunctions start-execution --state-machine-arn arn:aws:states:...:stateMachine:MySM --input '{"orderId":"123"}'
aws stepfunctions describe-execution --execution-arn arn:aws:states:...:execution:MySM:abc

10.14 API Gateway(REST)

aws apigateway get-rest-apis
aws apigateway get-resources --rest-api-id abc123

10.15 CloudWatch(メトリクス・アラーム)

aws cloudwatch list-metrics --namespace AWS/EC2
aws cloudwatch describe-alarms --alarm-names CPUHigh
aws cloudwatch put-metric-alarm \
  --alarm-name demo-cpu \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 60 \
  --threshold 80 --comparison-operator GreaterThanThreshold \
  --evaluation-periods 2 --dimensions Name=InstanceId,Value=i-0abc

10.16 CloudWatch Logs

aws logs describe-log-groups --log-group-name-prefix /aws/lambda/
aws logs tail /aws/lambda/my-fn --since 10m --follow
aws logs filter-log-events --log-group-name /ecs/app --filter-pattern "ERROR" --max-items 20

10.17 IAM(読み取り中心)

aws iam list-users --max-items 50
aws iam list-attached-user-policies --user-name alice
aws iam simulate-principal-policy \
  --policy-source-arn arn:aws:iam::123456789012:user/alice \
  --action-names s3:GetObject ec2:DescribeInstances \
  --resource-arns arn:aws:s3:::mybucket/*

10.18 KMS

aws kms list-keys
aws kms describe-key --key-id alias/mykey
# 暗号化データは base64 取り扱いに注意(公式例を参照)

10.19 Secrets Manager

aws secretsmanager list-secrets
aws secretsmanager get-secret-value --secret-id prod/db --query SecretString --output text

10.20 Systems Manager(Parameter Store / Run Command)

aws ssm describe-parameters --max-results 10
aws ssm get-parameter --name /app/db/host --with-decryption
aws ssm send-command \
  --document-name "AWS-RunShellScript" \
  --instance-ids "i-0abc" \
  --parameters 'commands=["uname -a"]'

10.21 ECS

aws ecs list-clusters
aws ecs list-services --cluster my-cluster
aws ecs describe-services --cluster my-cluster --services my-svc
aws ecs update-service --cluster my-cluster --service my-svc --force-new-deployment

10.22 EKS

aws eks list-clusters
aws eks describe-cluster --name my-cluster --query 'cluster.status'
aws eks update-kubeconfig --name my-cluster --region ap-northeast-1 --alias my-cluster

10.23 CloudFormation

aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE
aws cloudformation describe-stack-events --stack-name mystack --max-items 15
aws cloudformation delete-stack --stack-name mystack   # 注意: リソース削除ポリシーに依存

10.24 CloudTrail

aws cloudtrail describe-trails
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances --max-results 5

10.25 ACM

aws acm list-certificates
aws acm describe-certificate --certificate-arn arn:aws:acm:...

10.26 Route 53

aws route53 list-hosted-zones
aws route53 list-resource-record-sets --hosted-zone-id Z1234567890ABC

10.27 Organizations(管理者向け)

aws organizations describe-organization
aws organizations list-accounts --query 'Accounts[].[Id,Name,Status]' --output table

10.28 Glue / Athena(最小例)

aws glue get-databases --catalog-id 123456789012
aws athena list-work-groups

10.29 Kinesis Data Streams

aws kinesis list-streams
aws kinesis describe-stream --stream-name my-stream

10.30 API 呼び出しの --cli-input-json

大きな JSON はファイルにして渡す。

aws lambda create-function --cli-input-json file://create-fn.json

10.31 Cognito(ユーザープール)

aws cognito-idp list-user-pools --max-results 10
aws cognito-idp list-users --user-pool-id ap-northeast-1_XXXX --limit 10

10.32 App Runner

aws apprunner list-services
aws apprunner describe-service --service-arn arn:aws:apprunner:...

10.33 Batch

aws batch describe-job-queues
aws batch submit-job --job-name demo --job-queue my-queue --job-definition my-def:1

10.34 Service Quotas

aws service-quotas list-service-quotas --service-code ec2 --query 'Quotas[?QuotaName==`Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances`].[Value,Adjustable]' --output table

10.35 Resource Groups Tagging API

aws resourcegroupstaggingapi get-resources --tag-filters Key=Env,Values=prod --resource-type-filters ec2:instance
aws resourcegroupstaggingapi tag-resources --resource-arn-list arn:aws:ec2:...:instance/i-0abc --tags Project=demo

10.36 Config(設定記録)

aws configservice describe-configuration-recorders
aws configservice describe-compliance-by-config-rule

10.37 GuardDuty(一覧・結果取得の入口)

aws guardduty list-detectors
aws guardduty list-findings --detector-id <id> --max-results 5

10.38 Cost Explorer(料金分析・注意: 権限とレポート有効化)

aws ce get-cost-and-usage \
  --time-period Start=2026-04-01,End=2026-04-26 \
  --granularity MONTHLY \
  --metrics BlendedCost \
  --group-by Type=SERVICE

(初回はコンソールで Cost Explorer を有効化する必要がある場合あり。ce:GetCostAndUsage 等の IAM が必要。)

10.39 S3 Select(大きなオブジェクトのフィルタ取得・API 名は s3api

aws s3api select-object-content \
  --bucket my-bucket --key data.csv \
  --expression-type SQL \
  --expression "select s._1 from S3Object s limit 5" \
  --input-serialization CSV={FileHeaderInfo=USE} \
  --output-serialization CSV={} \
  /tmp/out.csv

10.40 EC2 Image Builder / Launch Template(参照例)

aws ec2 describe-launch-template-versions --launch-template-name my-lt

11. ユースケース別レシピ

運用・トラブルシュートで繰り返す 「やりたいこと → CLI」 の索引。コマンドは環境に合わせて調整し、help で引数を確認すること。

# ユースケース 代表コマンド / 流れ
1 初回セットアップ aws configure / aws configure ssoaws sts get-caller-identity
2 別アカウント ReadOnly へ切替 configrole_arn + source_profile--profile
3 S3 バケット間の全コピー aws s3 sync s3://src s3://dst(SSE・ACL 確認)
4 Lambda を一回実行して確認 aws lambda invokeaws logs tail
5 障害時に稼働 EC2 一覧 aws ec2 describe-instances + --filters + --query
6 RDS 変更前スナップショット aws rds create-db-snapshot
7 SQS 滞留件数確認 aws sqs get-queue-attributes(ApproximateNumberOfMessages)
8 EventBridge テスト送信 aws events put-events
9 Step Functions 実行追跡 start-executiondescribe-execution
10 シークレットをファイルに残さない get-secret-value --query SecretString --output text をパイプ
11 SSM パラメータ運用 読取ロール分離 + CloudTrail
12 ECS 強制再デプロイ aws ecs update-service --force-new-deployment
13 EKS kubeconfig 更新 aws eks update-kubeconfig
14 CloudFormation デプロイ aws cloudformation deploy + capabilities
15 CloudWatch アラーム閾値変更 aws cloudwatch put-metric-alarm
16 CloudTrail で操作洗い出し aws cloudtrail lookup-events
17 S3 パブリックブロック確認 aws s3api get-public-access-block
18 S3 クロスリージョンコピー aws s3 cp + --source-region
19 DynamoDB テーブル定義の保存 aws dynamodb describe-table を JSON で保存
20 タグ一括付与 aws ec2 create-tags / resourcegroupstaggingapi
21 コストをサービス別に確認 aws ce get-cost-and-usage + --group-by
22 タグ条件で EC2 停止 describe-instancesstop-instances(承認必須)
23 Cognito ユーザー確認 aws cognito-idp list-users
24 App Runner 状態確認 aws apprunner describe-service
25 SSM セッション接続 aws ssm start-session --target(プラグイン要)
26 Config ルール準拠 aws configservice describe-compliance-by-config-rule
27 GuardDuty 検知一覧 aws guardduty list-findings
28 サービスクォータ現況 aws service-quotas get-service-quota
29 S3 Select で先頭行のみ aws s3api select-object-content
30 Launch Template バージョン aws ec2 describe-launch-template-versions
31 Auto Scaling 希望台数変更 aws autoscaling set-desired-capacity
32 ALB リスナールール一覧 aws elbv2 describe-rules --listener-arn
33 Target Group ヘルス aws elbv2 describe-target-health
34 RDS クラスター(Aurora)状態 aws rds describe-db-clusters
35 RDS パラメータグループ aws rds describe-db-parameters
36 ElastiCache レプリケーショングループ aws elasticache describe-replication-groups
37 Redshift クラスター一覧 aws redshift describe-clusters
38 OpenSearch ドメイン状態 aws opensearch describe-domain
39 MSK クラスター一覧 aws kafka list-clusters
40 EMR クラスター一覧 aws emr list-clusters
41 SageMaker エンドポイント aws sagemaker list-endpoints
42 Batch ジョブログ aws batch describe-jobs → CloudWatch Logs
43 Glue クローラー実行 aws glue start-crawler
44 Athena クエリ実行 aws athena start-query-execution + get-query-results
45 Kinesis Firehose 配信 aws firehose describe-delivery-stream
46 DMS レプリケーション状況 aws dms describe-replication-tasks
47 Storage Gateway 一覧 aws storagegateway list-gateways
48 DataSync タスク開始 aws datasync start-task-execution
49 FSx ファイルシステム aws fsx describe-file-systems
50 Transfer Family サーバ aws transfer list-servers
51 MQ ブローカー一覧 aws mq list-brokers
52 Direct Connect 仮想インターフェース aws directconnect describe-virtual-interfaces
53 Global Accelerator aws globalaccelerator list-accelerators
54 WAFv2 WebACL 一覧 aws wafv2 list-web-acls --scope REGIONAL
55 Shield Advanced 購読 aws shield describe-subscription
56 Security Hub 有効化確認 aws securityhub describe-hub
57 Inspector2 検出 aws inspector2 list-findings
58 IAM Access Analyzer 外部アクセス aws accessanalyzer list-findings
59 Macie2 分類ジョブ aws macie2 list-classification-jobs
60 Budgets アラート閾値 aws budgets describe-budgets --account-id
61 日次コストの前後比スポット確認 aws ce get-cost-and-usage + DAILY で複数日を取得して比較
62 PI(RDS)メトリクス aws pi get-resource-metrics
63 Backup バックアップジョブ aws backup list-backup-jobs
64 DLM ポリシー aws dlm get-lifecycle-policies
65 CloudFront ディストリビューション aws cloudfront list-distributions
66 ACM 証明書検証待ち確認 aws acm describe-certificate
67 Route53 ヘルスチェック aws route53 list-health-checks
68 VPC Flow Logs 有効化確認 aws ec2 describe-flow-logs
69 NAT Gateway の IP aws ec2 describe-nat-gateways
70 Transit Gateway ルート aws ec2 describe-transit-gateway-route-tables
71 VPC Endpoints 一覧 aws ec2 describe-vpc-endpoints
72 Network Firewall aws network-firewall list-firewalls
73 Verified Access aws ec2 describe-verified-access-instances
74 RAM リソース共有 aws ram get-resource-shares
75 Service Catalog ポートフォリオ aws servicecatalog list-portfolios
76 Control Tower ランディングゾーン aws controltower list-landing-zones(要権限)
77 Organizations SCP 一覧 aws organizations list-policies --filter SERVICE_CONTROL_POLICY
78 CloudWatch Synthetics カナリア aws synthetics describe-canaries
79 X-Ray トレースグループ aws xray get-trace-summaries
80 AppConfig 設定デプロイ aws appconfig start-deployment
81 IoT Core モノ一覧 aws iot list-things
82 IoT ルール一覧 aws iot list-topic-rules
83 Greengrass コアデバイス aws greengrassv2 list-core-devices
84 Timestream DB aws timestream-write list-databases
85 QLDB 台帳 aws qldb list-ledgers
86 Neptune クラスター aws neptune describe-db-clusters
87 DocumentDB クラスター aws docdb describe-db-clusters
88 MediaConvert ジョブ aws mediaconvert list-jobs(アカウント固有エンドポイント取得が必要な場合あり)
89 IVS チャンネル aws ivs list-channels
90 Location Service トラッカー aws geo list-trackers
91 SES 送信クォータ aws ses get-send-quota
92 Pinpoint アプリ一覧 aws pinpoint get-apps
93 WorkSpaces 一覧 aws workspaces describe-workspaces
94 AppStream スタック aws appstream describe-stacks
95 WorkMail 組織 aws workmail list-organizations
96 CodePipeline パイプライン aws codepipeline list-pipelines
97 CodeBuild プロジェクト aws codebuild list-projects
98 CodeDeploy アプリ aws deploy list-applications
99 CodeCommit リポジトリ aws codecommit list-repositories
100 Device Farm プロジェクト aws devicefarm list-projects

11.1 クロスアカウント AssumeRole 後に一時クレデンシャルで続行(例)

CREDS=$(aws sts assume-role \
  --role-arn arn:aws:iam::222222222222:role/CrossRead \
  --role-session-name tmp \
  --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' \
  --output text)
read -r AK SK ST <<<"$CREDS"
AWS_ACCESS_KEY_ID=$AK AWS_SECRET_ACCESS_KEY=$SK AWS_SESSION_TOKEN=$ST \
  aws sts get-caller-identity

(運用では プロファイルcredential_process の方が安全・簡潔なことが多い。)

11.2 S3 バケットポリシー確認(読み取り)

aws s3api get-bucket-policy --bucket my-bucket --query Policy --output text | jq .

11.3 S3 同期で事故りにくい実務パターン

aws s3 sync は便利ですが、オプション次第でかなり挙動が変わります。

オプション 何が変わるか
--dryrun 実際には変更せず差分だけ表示
--delete 宛先にしかないファイルを削除
--exclude / --include 対象ファイルの絞り込み
--exact-timestamps timestamp の比較を厳密化
--size-only サイズだけで差分判定
--no-progress / --only-show-errors CI やログ向けに静かにする
aws s3 sync ./dist/ s3://my-bucket/site/ \
  --delete \
  --exclude "*.map" \
  --cache-control "public,max-age=300" \
  --dryrun

まず --dryrun で差分を確認してから、本番実行に切り替える癖をつけると安全です。

11.4 CloudFormation デプロイでよく使うオプション

aws cloudformation deploy は実務でかなり多用されます。

オプション 用途
--template-file テンプレートファイル
--stack-name 対象 stack 名
--parameter-overrides パラメータ上書き
--capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM IAM リソースを含むとき
--tags stack tags 付与
--no-execute-changeset いったん差分だけ作る
--fail-on-empty-changeset 変更なしを失敗扱いにするか
--role-arn CloudFormation 実行ロール
aws cloudformation deploy \
  --template-file infra.yaml \
  --stack-name myapp-prod \
  --parameter-overrides Env=prod ImageTag=2026-04-27 \
  --capabilities CAPABILITY_NAMED_IAM \
  --tags System=myapp Env=prod

変更前レビューを重視するなら、--no-execute-changeset を挟む運用が向きます。

11.5 CloudWatch Logs で障害を見るときの流れ

aws logs tail /aws/lambda/my-fn --since 30m --follow
aws logs filter-log-events \
  --log-group-name /ecs/app \
  --filter-pattern '"ERROR" "Timeout"' \
  --max-items 50

ログ閲覧では次の観点が実務で役立ちます。

  • まず tail --since 10m で現在の症状をつかむ
  • 特定文字列があるなら filter-log-events
  • ECS / Lambda / Batch など、実行基盤ごとに log group 名の規則を把握しておく

11.6 IAM / 権限トラブルを切るとき

aws sts get-caller-identity
aws iam simulate-principal-policy \
  --policy-source-arn arn:aws:iam::123456789012:role/AppRole \
  --action-names s3:GetObject kms:Decrypt \
  --resource-arns arn:aws:s3:::my-bucket/* arn:aws:kms:ap-northeast-1:123456789012:key/abcd...

CLI で権限トラブルを見るときは、少なくとも次を分けて考えると整理しやすいです。

  • そもそも 誰として呼んでいるか (sts get-caller-identity)
  • IAM policy で拒否されているのか
  • resource policy、KMS key policy、SCP など別の層で拒否されているのか

11.7 EKS / kubeconfig 更新の実務メモ

aws eks update-kubeconfig \
  --name my-cluster \
  --region ap-northeast-1 \
  --alias prod-my-cluster

クラスターを複数扱うなら --alias を付ける方があとで読みやすいです。kubectl config get-contexts とセットで管理すると混乱しにくくなります。

11.8 コスト確認の最小パターン

aws ce get-cost-and-usage \
  --time-period Start=2026-04-01,End=2026-04-27 \
  --granularity DAILY \
  --metrics UnblendedCost \
  --group-by Type=SERVICE

コスト系 API は、

  • 利用開始前の有効化
  • 呼び出せるリージョン / 権限
  • 時間帯や締め処理による見え方

でつまずきやすいです。レポート用途では、いきなり複雑な grouping を組むより、まず日次・サービス別から始めるのが無難です。

11.9 SSM で踏み台なし接続

aws ssm start-session --target i-0abc123456789def0

これは Session Manager Plugin が必要ですが、SSH 鍵や bastion を減らせるので、かなり実務的です。接続そのものだけでなく、誰がどこへ入ったか を監査しやすいのも利点です。


12. シェル・jq・ループ・入力ファイル

12.1 インスタンス ID ループ

for id in $(aws ec2 describe-instances --filters "Name=tag:Role,Values=web" \
  --query 'Reservations[].Instances[].InstanceId' --output text); do
  echo "$id"
done

12.2 jq と組み合わせ

aws lambda get-function-configuration --function-name my-fn --output json | jq '.Runtime, .MemorySize'

12.3 --generate-cli-skeleton / cli-input-json

aws lambda create-function --generate-cli-skeleton input > skeleton.json
# skeleton を編集後
aws lambda create-function --cli-input-json file://skeleton.json

12.4 ページネーションの手動ループ(概念)

TOKEN=""
while :; do
  OUT=$(aws s3api list-objects-v2 --bucket my-bucket --max-keys 100 ${TOKEN:+--starting-token "$TOKEN"} --output json)
  echo "$OUT" | jq -r '.Contents[].Key'
  TOKEN=$(echo "$OUT" | jq -r '.NextContinuationToken // empty')
  [ -z "$TOKEN" ] && break
done

(サービスによってトークン名が異なる。aws s3api list-objects-v2 help を参照。)


13. デバッグ・ログ・終了コード

aws sts get-caller-identity --debug 2> /tmp/aws-debug.log
終了コード 目安
0 成功
非ゼロ API エラー、権限、バリデーション、ネットワーク等

13.1 --debug で見えるもの

--debug を付けると、ざっくり次の層が見えます。

  • どの profile / region が解決されたか
  • credential chain がどこを見たか
  • どの endpoint へ飛んだか
  • 再試行したか
  • HTTP status と service error code

「権限がない」のか「リージョン違い」なのか「SSO 期限切れ」なのかを分けるときに強いです。


14. セキュリティと運用のベストプラクティス

  1. 長期キーを Git に入れない … CI は OIDC 推奨。
  2. 最小権限プロファイルAdministratorAccess を日常使いしない。
  3. history に秘密が残らないよう export 方式を避けるか HISTCONTROL を検討。
  4. --no-verify-ssl を本番で使わない
  5. リージョン明示 … グローバルサービスは別途注意。
  6. 破壊的操作terminate / delete-stack / purge-queue は二重確認・承認フロー。
  7. CLI バージョン固定 … CI イメージで揃える。
  8. --query--output text の組み合わせを過信しない … 空配列や複数件で崩れることがある。
  9. 公開用 runbook と個人用 alias を分ける … alias の癖が共有手順へ混ざると事故る。
  10. プロファイル名に権限レベルを入れる … 例: dev-readonly, prod-admin

15. AWS 関連のその他 CLI ツール

AWS CLI と 併用されることが多い 公式/準公式ツールを整理する(インストール手順は各公式ドキュメント参照)。

15.1 一覧

ツール コマンド例 用途
AWS SAM CLI sam build, sam deploy, sam local invoke サーバレス(Lambda/API 等)のローカル検証・パッケージ・デプロイ
AWS CDK CLI cdk synth, cdk deploy, cdk diff TypeScript/Python 等でインフラ定義し CloudFormation へ
AWS Copilot copilot app init, copilot svc deploy ECS ベースのアプリを対話的に構築
Amplify CLI amplify init, amplify push フロント+バックエンド連携のフルスタック開発フロー
Elastic Beanstalk CLI eb init, eb deploy PaaS スタイルのデプロイ
Session Manager Plugin (プラグイン)aws ssm start-session と併用 EC2/コンテナへのブラウザレスシェル
eksctl eksctl create cluster, eksctl utils describe-stacks EKS クラスタ作成・運用補助(Weaveworks 発、広く利用)
AWS IoT Device SDK 付属ツール 環境による デバイス接続テスト等

15.2 クレデンシャル補助(サードパーティ)

ツール 用途
aws-vault OS キーチェーン+短命クレデンシャルで安全にプロファイル利用
awsume 複数プロファイルの assume-role を簡略化

(導入は組織のセキュリティポリシーに従う。)

15.3 IaC・検証でよく併用される CLI

ツール 備考
Terraform / OpenTofu AWS 以外とも統合。terraform apply は AWS CLI とは別系統だが同一クレデンシャルチェーンを使うことが多い
Pulumi CLI pulumi up 等。言語埋め込み型 IaC。バックエンドに AWS を指定
Serverless Framework serverless deploy 等。Lambda/API Gateway 中心のワークフロー(Node 系が多い)
LocalStack aws --endpoint-url=http://localhost:4566 ... でエミュレータへ
AWS CloudShell ブラウザ上のシェル(CLI プリインストール)。ローカルに CLI を入れない検証用

15.4 コンテナ・レジストリ

ツール 備考
Docker docker push で ECR と組み合わせ
Finch 環境に応じた代替ランタイム

16. 参考リンク

この一覧について(重要)

  • 本稿の作者は、掲載 URL のページをすべて精読したうえで本文を引用したわけではありません。 リンクは 公式ドキュメントへの入口 としての整理です。
  • URL のパス変更・リダイレクト・製品世代の切替(例: Amplify Gen 1 / Gen 2)はよくあるため、実務ではリンク先の現在の目次と help の内容を正 としてください。
  • リンク先の利用条件・ライセンスは各サイトに従います。
リソース URL
AWS CLI User Guide https://docs.aws.amazon.com/cli/latest/userguide/
CLI リファレンス https://docs.aws.amazon.com/cli/latest/reference/
Global options https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html
Config / credentials precedence https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
Environment variables https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
Config file settings https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
Parameter types https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-types.html
Filtering output / JMESPath https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html
Pagination https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-pagination.html
Auto-prompt https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-prompting.html
JMESPath https://jmespath.org/
S3 cp https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
S3 sync https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
SAM CLI https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html
AWS CDK https://docs.aws.amazon.com/cdk/v2/guide/cli.html
Copilot https://aws.github.io/copilot-cli/
Amplify CLI https://docs.amplify.aws/cli/
eksctl https://eksctl.io/
Session Manager Plugin https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
Pulumi https://www.pulumi.com/docs/cli/
Serverless Framework https://www.serverless.com/framework/docs/getting-started
LocalStack https://docs.localstack.cloud/user-guide/aws/tooling/
AWS CloudShell https://docs.aws.amazon.com/cloudshell/latest/userguide/working-with-aws-cli.html