mcpField
M
mastering-aws-cli

mastering-aws-cli

github.com/spillwavesolutionsクラウド・DevOps92.6k 回インストール43 週間前に更新
リポジトリ

mastering-aws-cli について

mastering-aws-cliは、AWS CLI v2でAWSサービスを管理する経験豊富な開発者向けのリファレンススキルです。コマンド例、サービス別ガイド、設定方法に加え、スクリプト作成やトラブルシューティングの手法をまとめています。

主な機能

  1. 01AWS CLI v2コマンドリファレンス
  2. 02サービス選択ツリーとガイド
  3. 03プロファイル、SSO、認証情報
  4. 04JMESPathによる絞り込みと出力設定
  5. 05ウェイター、エイリアス、コマンドスケルトン
  6. 06セキュリティ対策とトラブルシューティング

活用シーン

  1. 01ターミナルからのAWSサービス管理
  2. 02スクリプトでのリソース出力の絞り込み
  3. 03プロファイルとSSOアクセスの設定
  4. 04一般的なCLIエラーの診断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/spillwavesolutions/mastering-aws-cli --skill mastering-aws-cli

インストール後、Claude Code で/mastering-aws-cliを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
README.md
references/
advanced-patterns.md
eks.md
bastion-tunneling.md
ecr.md
dynamodb.md
github-cicd.md
aurora.md
ecs.md
lambda.md
kinesis.md
msk.md
glue.md
s3.md
iam-security.md
private-parameters.md
vpc-networking.md
setup.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 EXPRJMESPath 式を使って出力をフィルタリングします
--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)

リファレンスファイルの案内

リファレンス説明主な検索キーワード
セットアップインストール、設定、プロファイル、SSOinstall、configure、sso、profile
IAM とセキュリティロール、ポリシー、STS、MFA、クロスアカウントiam、role、policy、sts、assume-role
Lambda関数、レイヤー、エイリアス、URL、イベントlambda、serverless、function
ECSクラスター、タスク、サービス、Fargateecs、fargate、task、container
EKSクラスター、ノードグループ、kubeconfig、IRSAeks、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
MSKKafka クラスター、サーバーレス、設定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/CDOIDC、GitHub Actions、CodeBuildgithub、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 は次の順序で認証情報を解決します(最初に一致したものが使用されます)。

  1. コマンドラインオプション(--profile、明示的に指定した認証情報)
  2. 環境変数(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
  3. ウェブ ID トークン(EKS IRSA、OIDC)
  4. SSO 認証情報(IAM Identity Center)
  5. 認証情報ファイル(~/.aws/credentials)
  6. 設定ファイル(credential_process を含む ~/.aws/config)
  7. コンテナ認証情報(ECS タスクロール)
  8. インスタンスメタデータ(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 を実行します
AccessDeniedIAM 権限の不足IAM ポリシーを確認します。必要なアクションを確認するには --debug を使用します
InvalidClientTokenId無効なアクセスキーAWS_ACCESS_KEY_ID を確認するか、aws configure を実行します
UnauthorizedAccessリージョンまたはアカウントの誤り--region フラグと aws sts get-caller-identity を確認します
ThrottlingExceptionAPI のレート制限超過指数バックオフによる再試行ロジックを追加します
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

コメント