日々のリソース管理に不可欠なAWS CLIコマンド トップ10
はじめに
クラウドコンピューティングのダイナミックな世界において、Amazon Web Services (AWS) は、幅広いサービスを提供する主要なプラットフォームとして際立っています。AWSマネジメントコンソールはユーザーフレンドリーなグラフィカルインターフェースを提供しますが、AWSコマンドラインインターフェース (CLI) は、リソース管理において比類ないパワーと柔軟性を提供します。CLIは、ターミナルでコマンドを使用してAWSサービスと対話できるオープンソースツールであり、自動化、スクリプト作成、および効率的な日常業務に不可欠です。
AWS CLIを習得することで、生産性を大幅に向上させ、AWSアカウント全体でリソースを迅速に検査、作成、変更、削除できるようになります。この記事は、日常のリソース管理のためにすべてのAWSユーザーが知っておくべき、Amazon S3(ストレージ)、Amazon EC2(コンピューティング)、およびAWS IAM(IDおよびアクセス管理)に特化した、不可欠なAWS CLIコマンドのトップ10に焦点を当てた重要なチートシートとして機能します。
あなたが開発者であろうと、運用エンジニアであろうと、クラウド管理者であろうと、これらのコマンドはAWS環境をより効果的に管理し、問題をより迅速にトラブルシューティングし、反復的なタスクを自動化するためのツールを提供します。日々のワークフローを加速させるコマンドについて見ていきましょう。
前提条件
始める前に、AWS CLIがシステムにインストールされ、設定されていることを確認してください。まだの場合は、公式のAWSドキュメントに従ってインストールし、資格情報(アクセスキーID、シークレットアクセスキー、デフォルトリージョン)を設定してください。
# AWS CLIのバージョンを確認
aws --version
# AWS CLIを設定(まだ設定していない場合)
aws configure
Amazon S3 (Simple Storage Service) のための必須AWS CLIコマンド
Amazon S3は、高いスケーラビリティ、耐久性、可用性を持つオブジェクトストレージサービスです。これらのコマンドは、バケットとオブジェクトを管理するために不可欠です。
1. aws s3 ls - S3バケットとオブジェクトのリスト表示
このコマンドを使用すると、S3バケットまたは特定のバケット内のオブジェクトをリスト表示できます。これは、ストレージの状況を把握するための最初の一歩となることがよくあります。
目的: S3バケットまたはバケットの内容を表示する。
例:
# アカウント内のすべてのS3バケットをリスト表示
aws s3 ls
# 特定のバケット内のオブジェクトをリスト表示
aws s3 ls s3://your-bucket-name/
# 人間が読めるサイズと日付でオブジェクトを再帰的にリスト表示
aws s3 ls s3://your-bucket-name/ --recursive --human-readable --summarize
ヒント:
* --recursive を使用して、すべてのオブジェクトとサブフォルダをリスト表示します。--summarize は合計カウントとサイズを提供します。
* バケット内のパスも指定できます: aws s3 ls s3://your-bucket-name/prefix/。
2. aws s3 cp - ファイルをS3にコピー、S3からコピー
cp コマンドは、ローカルファイルシステムとS3の間、またはS3バケット間でファイルを転送するための基本です。
目的: ローカルファイルをS3に、S3オブジェクトをローカルに、またはS3オブジェクトをバケット間でコピーする。
例:
# ローカルファイルをS3バケットにコピー
aws s3 cp local-file.txt s3://your-bucket-name/folder/remote-file.txt
# S3からローカルマシンにオブジェクトをコピー
aws s3 cp s3://your-bucket-name/folder/remote-file.txt local-copy.txt
# あるS3バケットから別のS3バケットにオブジェクトをコピー
aws s3 cp s3://source-bucket/file.txt s3://destination-bucket/new-file.txt
# ローカルディレクトリをS3に再帰的にコピー
aws s3 cp --recursive local-folder/ s3://your-bucket-name/remote-folder/
ヒント:
* --recursive は、ディレクトリ全体をコピーするのに不可欠です。
* --exclude と --include を使用して、再帰コピー中にファイルをフィルタリングします。
3. aws s3 sync - ローカルディレクトリとS3の同期
sync は、ディレクトリの内容をS3プレフィックスと同期したり、その逆を行ったりする強力なコマンドです。新しく作成または変更されたファイルのみをコピーするため、バックアップやデプロイに非常に効率的です。
目的: ローカルディレクトリとS3バケット/プレフィックスを効率的に同期する。
例:
# ローカルディレクトリをS3バケットと同期
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/
# S3バケットをローカルディレクトリと同期
aws s3 sync s3://your-bucket-name/remote-path/ local-directory/
# 実際に変更を実行せずに、どのような変更が行われるかを確認するためのドライラン
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/ --dryrun
ベストプラクティス: 重要なデータの場合、sync 操作を実行する前に、必ず最初に --dryrun を使用して変更をプレビューしてください。
4. aws s3 rm - S3オブジェクトとバケットの削除
このコマンドは、S3バケットからオブジェクトを削除したり、空のバケットを削除したりするために使用されます。
目的: S3からオブジェクトまたは空のバケットを削除する。
例:
# バケットから単一のオブジェクトを削除
aws s3 rm s3://your-bucket-name/path/to/object.txt
# フォルダ(プレフィックス)内のすべてのオブジェクトを再帰的に削除
aws s3 rm s3://your-bucket-name/folder/ --recursive
# 空のバケットを削除
aws s3 rb s3://your-bucket-name/
# バケットとそのすべてのコンテンツを強制的に削除(極めて注意して使用してください!)
aws s3 rb s3://your-bucket-name/ --force
警告: aws s3 rb --force コマンドは破壊的で元に戻すことはできません。指定されたバケット内のすべてのオブジェクトとバージョンが削除されるため、極めて注意して使用してください。
Amazon EC2 (Elastic Compute Cloud) のための必須AWS CLIコマンド
EC2は、AWSクラウドでスケーラブルなコンピューティング能力を提供します。これらのコマンドは、仮想サーバーを管理するのに役立ちます。
5. aws ec2 describe-instances - EC2インスタンスの詳細取得
これは、EC2インスタンスの状態、パブリック/プライベートIP、タグなど、インスタンスに関する情報を収集するための頼りになるコマンドです。
目的: 1つ以上のEC2インスタンスに関する詳細情報を取得する。
例:
# 現在のリージョン内のすべてのEC2インスタンスを記述
aws ec2 describe-instances
# 特定のタグ(例: Environment=Production)を持つインスタンスを記述
aws ec2 describe-instances \n --filters "Name=tag:Environment,Values=Production"
# インスタンスIDでインスタンスを記述
aws ec2 describe-instances --instance-ids i-0abcdef1234567890
# JMESPathを使用して特定の情報(例: PublicIpAddress)をフィルタリングしてインスタンスを記述
aws ec2 describe-instances \n --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \n --output table
ヒント:
* --filters は、インスタンスの状態、タグ、インスタンスタイプなどに基づいて結果を絞り込むのに強力です。
* --query を使用すると、特定のデータフィールドを抽出し、出力を再フォーマットできます(例: JMESPath式を使用)。
6. aws ec2 start-instances - 停止中のEC2インスタンスの開始
このコマンドを使用して、停止中の1つ以上のEC2インスタンスを開始します。インスタンスはプライベートIPアドレスを保持します。
目的: 停止中のEC2インスタンスの開始プロセスを開始する。
例:
# 単一のEC2インスタンスを開始
aws ec2 start-instances --instance-ids i-0abcdef1234567890
# 複数のEC2インスタンスを開始
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
7. aws ec2 stop-instances - 実行中のEC2インスタンスの停止
このコマンドは、実行中のEC2インスタンスを停止します。停止中はインスタンスの使用料金は発生せず、アタッチされたEBSボリュームに対してのみ課金されます。
目的: 実行中のEC2インスタンスを停止する。
例:
# 単一のEC2インスタンスを停止
aws ec2 stop-instances --instance-ids i-0abcdef1234567890
# 複数のEC2インスタンスを停止
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
# インスタンスを強制的に停止(本番システムでは注意して使用してください)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force
警告: インスタンスの強制停止は、アプリケーションが正常にシャットダウンされなかった場合、データ損失やファイルシステムの破損につながる可能性があります。
8. aws ec2 terminate-instances - EC2インスタンスの終了
インスタンスを終了すると、インスタンスとその関連するEBSボリューム(終了時に永続するように設定されていない限り)が完全に削除されます。この操作は元に戻すことはできません。
目的: EC2インスタンスを完全に削除する。
例:
# 単一のEC2インスタンスを終了
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890
# 複数のEC2インスタンスを終了
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210
警告: 終了は永久的で元に戻せない操作です。インスタンスを終了する前に、重要なデータのバックアップまたはスナップショットがあることを確認してください。
IAM (Identity and Access Management) のための必須AWS CLIコマンド
IAMを使用すると、AWSサービスとリソースへのアクセスを安全に制御できます。これらのコマンドは、ユーザーとその権限を管理するのに役立ちます。
9. aws iam list-users - IAMユーザーのリスト表示
このコマンドは、AWSアカウント内のすべてのIAMユーザーのリストを、そのARN、作成日、ユーザーIDとともに提供します。
目的: AWSアカウントに設定されているすべてのIAMユーザーを表示する。
例:
# すべてのIAMユーザーをリスト表示
aws iam list-users
# JMESPathを使用して特定のフィールドを抽出してユーザーをリスト表示
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table
ベストプラクティス: 必要不可欠なユーザーのみが存在し、古く使用されていないアカウントが削除されていることを確認するために、IAMユーザーリストを定期的に確認してください。
10. aws iam list-attached-user-policies - IAMユーザーにアタッチされたポリシーのリスト表示
IAMユーザーがどのような権限を持っているかを理解することは、セキュリティとアクセス問題のトラブルシューティングにとって重要です。このコマンドは、特定のユーザーに直接アタッチされているマネージドポリシーをリスト表示します。
目的: IAMユーザーにアタッチされているマネージドポリシーを表示する。
例:
# 特定のIAMユーザーにアタッチされているすべてのマネージドポリシーをリスト表示
aws iam list-attached-user-policies --user-name YourIAMUserName
# 特定のIAMユーザーにアタッチされているインラインポリシーをリスト表示
aws iam list-user-policies --user-name YourIAMUserName
ヒント:
* ユーザーは、グループ(aws iam list-groups-for-user)やロールから権限を継承したり、インラインポリシー(aws iam list-user-policies)を持ったりできることを覚えておいてください。
* 特定のポリシーの詳細を取得するには、aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess を使用し、次に aws iam get-policy-version を使用します。
結論
AWS CLIは、Amazon Web Services上のリソースを管理するすべての人にとって信じられないほど強力なツールです。このガイドで概説したS3、EC2、IAMをカバーする10のコマンドは、日常の運用タスクの基盤を形成し、クラウドのリソースを効率的かつ正確にリスト表示、作成、変更、削除することを可能にします。
これらのコマンドを日々のルーチンに統合することで、ワークフローを合理化し、反復的なタスクを自動化し、AWS環境に関するより深い洞察を得ることができます。AWS CLIはこれらの必須コマンド以外にも広範な機能を提供しています。ツールキットをさらに拡張し、より高度な機能を発見するために、公式のAWS CLIドキュメントを探索することをお勧めします。定期的な練習と探索が専門知識を確固たるものにし、AWSの可能性を最大限に活用できるようになります。
今日からこれらのコマンドの練習を開始し、クラウド管理の生産性が飛躍的に向上するのを見てください!