mastering-aws-cli について
mastering-aws-cliは、AWS CLI v2でAWSサービスを管理する経験豊富な開発者向けのリファレンススキルです。コマンド例、サービス別ガイド、設定方法に加え、スクリプト作成やトラブルシューティングの手法をまとめています。
主な機能
- 01AWS CLI v2コマンドリファレンス
- 02サービス選択ツリーとガイド
- 03プロファイル、SSO、認証情報
- 04JMESPathによる絞り込みと出力設定
- 05ウェイター、エイリアス、コマンドスケルトン
- 06セキュリティ対策とトラブルシューティング
活用シーン
- 01ターミナルからのAWSサービス管理
- 02スクリプトでのリソース出力の絞り込み
- 03プロファイルとSSOアクセスの設定
- 04一般的なCLIエラーの診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spillwavesolutions/ mastering-aws-cli --skill mastering-aws-cliインストール後、Claude Code で/mastering-aws-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.mdreferences/advanced-patterns.mdeks.mdbastion-tunneling.mdecr.mddynamodb.mdgithub-cicd.mdaurora.mdecs.mdlambda.mdkinesis.mdmsk.mdglue.mds3.mdiam-security.mdprivate-parameters.mdvpc-networking.mdsetup.md詳細
AWS CLI v2 クイックリファレンス
ターミナルから AWS サービスを管理するための統合ツールです。このガイドでは、CLI v2 の機能、実践的な例、経験豊富な開発者向けの高度なパターンに焦点を当てます。
クイックスタート
# Verify installation and version
aws --version
# Interactive configuration
aws configure # Access keys + region + output format
aws configure sso # IAM Identity Center (SSO) - recommended
# Verify identity
aws sts get-caller-identity # Shows Account, UserId, ARN
# Enable auto-prompt for command discovery
aws dynamodb --cli-auto-prompt
パワーユーザー向けのヒント
# See all waiter commands for a service
aws ec2 wait help
# Generate command skeleton (fill in the blanks)
aws lambda create-function --generate-cli-skeleton > create-fn.json
# Create CLI alias for common commands
aws configure set cli_alias.whoami "sts get-caller-identity"
aws whoami # Now works!
# Disable pager for scripting
export AWS_PAGER=""
JMESPath の活用法と自動化のヒントについては、高度なパターンを参照してください。
グローバルオプション
| フラグ | 説明 |
|---|---|
--profile NAME | ~/.aws/credentials にある名前付きプロファイルを使用します |
--region REGION | デフォルトのリージョンを上書きします(例:us-east-1) |
--output FORMAT | 出力形式:json(デフォルト)、text、table、yaml、yaml-stream |
--query EXPR | JMESPath 式を使って出力をフィルタリングします |
--no-paginate | 自動ページネーションを無効にします(最初のページのみ) |
--dry-run | 実行せずに権限を確認します(EC2 など) |
--debug | 詳細な HTTP/API デバッグログを出力します |
--cli-auto-prompt | パラメーターの入力候補を対話形式で表示します |
--no-cli-pager | 出力のページ送りを無効にします |
判断ツリー
コンピューティングとコンテナ
Need compute?
├── Serverless functions ────────────► Lambda (references/lambda.md)
├── Docker containers
│ ├── Managed orchestration ───────► ECS (references/ecs.md)
│ ├── Kubernetes ──────────────────► EKS (references/eks.md)
│ └── Container registry ──────────► ECR (references/ecr.md)
└── Virtual machines ────────────────► EC2 (use aws ec2 commands)
データとストレージ
Need data storage?
├── Object/blob storage ─────────────► S3 (references/s3.md)
├── NoSQL (key-value/document) ──────► DynamoDB (references/dynamodb.md)
├── Relational SQL ──────────────────► Aurora/RDS (references/aurora.md)
├── Data catalog & ETL ──────────────► Glue (references/glue.md)
└── Data warehouse ──────────────────► Redshift (aws redshift commands)
ストリーミングとメッセージング
Need streaming/messaging?
├── Kafka-compatible ────────────────► MSK (references/msk.md)
├── Real-time streams ───────────────► Kinesis (references/kinesis.md)
├── Message queues ──────────────────► SQS (aws sqs commands)
└── Pub/Sub notifications ───────────► SNS (aws sns commands)
セキュリティとアクセス
Need security/access management?
├── Users, roles, policies ──────────► IAM (references/iam-security.md)
├── Secrets & credentials ───────────► Secrets Manager/SSM (references/private-parameters.md)
├── Private network access ──────────► VPC (references/vpc-networking.md)
└── Secure tunneling ────────────────► SSM/Bastion (references/bastion-tunneling.md)
リファレンスファイルの案内
| リファレンス | 説明 | 主な検索キーワード |
|---|---|---|
| セットアップ | インストール、設定、プロファイル、SSO | install、configure、sso、profile |
| IAM とセキュリティ | ロール、ポリシー、STS、MFA、クロスアカウント | iam、role、policy、sts、assume-role |
| Lambda | 関数、レイヤー、エイリアス、URL、イベント | lambda、serverless、function |
| ECS | クラスター、タスク、サービス、Fargate | ecs、fargate、task、container |
| EKS | クラスター、ノードグループ、kubeconfig、IRSA | eks、kubernetes、kubectl、k8s |
| ECR | リポジトリ、認証、スキャン、ライフサイクル | ecr、docker、registry、image |
| S3 | バケット、オブジェクト、同期、署名付き URL、ライフサイクル | s3、bucket、upload、sync |
| DynamoDB | テーブル、項目、クエリ、ストリーム、バックアップ | dynamodb、ddb、nosql |
| Aurora/RDS | クラスター、サーバーレス v2、クローン、ブルーグリーン | rds、aurora、mysql、postgresql |
| Glue | カタログ、クローラー、ETL ジョブ、ワークフロー | glue、etl、catalog、crawler |
| MSK | Kafka クラスター、サーバーレス、設定 | msk、kafka、streaming |
| Kinesis | データストリーム、Firehose、コンシューマー | kinesis、stream、firehose |
| シークレットとパラメーター | Parameter Store、Secrets Manager、ローテーション | ssm、secrets、parameter、rotation |
| VPC とネットワーキング | VPC、サブネット、セキュリティグループ、エンドポイント | vpc、subnet、security-group、endpoint |
| 踏み台とトンネリング | SSM Session Manager、ポートフォワーディング | bastion、tunnel、ssm、ssh |
| GitHub CI/CD | OIDC、GitHub Actions、CodeBuild | github、actions、oidc、cicd |
| 高度なパターン | JMESPath、ウェイター、スケルトン、エイリアス | jmespath、query、waiter、alias |
環境変数
| 変数 | 目的 | 例 |
|---|---|---|
AWS_ACCESS_KEY_ID | 認証用のアクセスキー | AKIAIOSFODNN7EXAMPLE |
AWS_SECRET_ACCESS_KEY | 認証用のシークレットキー | wJalrXUtnFEMI/... |
AWS_SESSION_TOKEN | セッショントークン(一時的な認証情報) | STS のロール引き受け用 |
AWS_PROFILE | 使用する名前付きプロファイル | production |
AWS_REGION | リクエスト先の AWS リージョン | us-west-2 |
AWS_DEFAULT_OUTPUT | デフォルトの出力形式 | json、text、table |
AWS_PAGER | ページャープログラム(無効にする場合は空) | "" |
AWS_CONFIG_FILE | カスタム設定ファイルのパス | ~/.aws/config |
AWS_SHARED_CREDENTIALS_FILE | カスタム認証情報ファイルのパス | ~/.aws/credentials |
AWS_CA_BUNDLE | カスタム CA 証明書バンドル | /path/to/cert.pem |
AWS_RETRY_MODE | 再試行モード | standard、adaptive |
認証情報の優先順位
CLI は次の順序で認証情報を解決します(最初に一致したものが使用されます)。
- コマンドラインオプション(
--profile、明示的に指定した認証情報) - 環境変数(
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY) - ウェブ ID トークン(EKS IRSA、OIDC)
- SSO 認証情報(IAM Identity Center)
- 認証情報ファイル(
~/.aws/credentials) - 設定ファイル(
credential_processを含む~/.aws/config) - コンテナ認証情報(ECS タスクロール)
- インスタンスメタデータ(EC2 インスタンスプロファイル、IMDSv2)
よく使われるパターン
プロファイルの切り替え
# Use specific profile for one command
aws s3 ls --profile production
# Set default profile for session
export AWS_PROFILE=production
# List configured profiles
aws configure list-profiles
JMESPath による出力のフィルタリング
# Get specific fields
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \
--output table
# Filter running instances
aws ec2 describe-instances \
--query 'Reservations[*].Instances[?State.Name==`running`].InstanceId' \
--output text
リソースの状態を待機
# Wait for instance to be running
aws ec2 wait instance-running --instance-ids i-1234567890abcdef0
# Wait for Lambda function update
aws lambda wait function-updated --function-name my-function
ベストプラクティス
| カテゴリ | 推奨事項 |
|---|---|
| セキュリティ | 長期間有効なアクセスキーよりも aws configure sso を使用します |
| セキュリティ | キーを埋め込む代わりに、コンピューティング(EC2/Lambda/ECS)には IAM ロールを使用します |
| セキュリティ | 機密性の高い操作では MFA を有効にします |
| スクリプト | 解析には --output json または --output text を使用します |
| スクリプト | --query を使用してデータをフィルタリングし、出力を減らします |
| 安全性 | 破壊的な操作の前に --dry-run を使用します |
| パフォーマンス | 大量のリストでのメモリ使用量を制御するには --page-size を使用します |
| リージョン | 予期しない動作を避けるため、スクリプトでリージョンを明示的に設定します |
| コスト | 自動クリーンアップにはライフサイクルポリシー(S3/ECR)を使用します |
| デバッグ | 生の HTTP リクエスト/レスポンスを確認するには --debug を使用します |
よくあるエラーのクイックリファレンス
| エラー | 原因 | 対処方法 |
|---|---|---|
ExpiredToken | セッション認証情報の有効期限切れ | aws sso login または aws sts get-session-token を実行します |
AccessDenied | IAM 権限の不足 | IAM ポリシーを確認します。必要なアクションを確認するには --debug を使用します |
InvalidClientTokenId | 無効なアクセスキー | AWS_ACCESS_KEY_ID を確認するか、aws configure を実行します |
UnauthorizedAccess | リージョンまたはアカウントの誤り | --region フラグと aws sts get-caller-identity を確認します |
ThrottlingException | API のレート制限超過 | 指数バックオフによる再試行ロジックを追加します |
NoCredentialProviders | 認証情報が見つからない | 認証情報チェーンを確認し、aws configure list を実行します |
詳細なトラブルシューティングについては、セットアップを参照してください。
使用しない場合
- AWS SDK のコード — boto3、AWS SDK for JavaScript などには、プログラミングドキュメントを使用します
- CloudFormation/Terraform — このスキルは CLI コマンドを対象としており、IaC テンプレートは対象外です
- コンソール UI の手順 — CLI に重点を置いています。コンソールの手順については AWS ドキュメントを使用します
- 料金/請求 — AWS の料金計算ツールまたは Cost Explorer のドキュメントを使用します
コマンドのクイックリファレンス
# Identity & Access
aws sts get-caller-identity
# → {"Account": "123456789012", "UserId": "AIDAEXAMPLE", "Arn": "arn:aws:iam::123456789012:user/dev"}
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/Admin --role-session-name mysession
# → {"Credentials": {"AccessKeyId": "ASIA...", "SecretAccessKey": "...", "SessionToken": "..."}}
# S3
aws s3 ls
# → 2024-01-15 bucket-name-1
# → 2024-02-20 bucket-name-2
aws s3 sync ./local s3://bucket/prefix --delete
# Lambda
aws lambda invoke --function-name fn response.json
# → {"StatusCode": 200, "ExecutedVersion": "$LATEST"}
aws lambda update-function-code --function-name fn --zip-file fileb://code.zip
# → {"FunctionName": "fn", "LastModified": "2024-12-28T...", "State": "Active"}
# ECS
aws ecs list-clusters
# → {"clusterArns": ["arn:aws:ecs:us-east-1:123456789012:cluster/prod"]}
aws ecs update-service --cluster prod --service api --force-new-deployment
# EKS
aws eks update-kubeconfig --name my-cluster
# → Added new context arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
aws eks list-clusters
# → {"clusters": ["my-cluster", "dev-cluster"]}
# Secrets
aws secretsmanager get-secret-value --secret-id prod/api/key --query SecretString --output text
# → sk_live_xxxxxxxxxxxxx
aws ssm get-parameter --name /app/prod/db/host --with-decryption --query Parameter.Value --output text
# → db.example.com
# Debugging
aws ssm start-session --target i-0123456789abcdef0
# → Starting session with SessionId: user-0a1b2c3d4e5f67890
コメント
Markdown 対応