AWS CLI とは?初心者でもわかる基礎知識
AWS CLI の役割と重要性
AWS CLI(Command Line Interface)は、AWSのサービスをコマンドラインから操作するためのツールです。GUIのマネジメントコンソールと同様の操作が、コマンドラインから実行可能になります。
主な特徴
- 効率的な操作
- 複数のAWSサービスを一括で操作可能
- 繰り返し作業の自動化が容易
- スクリプトによるバッチ処理の実現
- 柔軟な制御
- 詳細なパラメータ設定が可能
- APIレベルでの細かな制御
- プログラマブルな環境との親和性
- 自動化・効率化のための機能
- シェルスクリプトとの連携
- 他のツールやサービスとの統合
- CICD パイプラインへの組み込み
AWS CLIの活用シーン
用途 | 具体例 | メリット |
---|---|---|
リソース管理 | S3バケットの作成・削除 | 大量のリソースを効率的に管理 |
環境構築 | EC2インスタンスの起動 | 手順の標準化と自動化が可能 |
運用自動化 | バックアップの定期実行 | 人的ミスの削減と効率化 |
開発支援 | テスト環境の構築 | 開発サイクルの短縮 |
インストールが必要な理由
AWS CLIをインストールする主な理由は以下の通りです:
- 効率的な運用管理の実現
- 複数のAWSリソースを一括管理
- 運用タスクの自動化による工数削減
- バッチ処理による大量タスクの効率化
- 開発生産性の向上
- CI/CDパイプラインとの統合
- テスト環境の素早い構築
- デプロイメントの自動化
- セキュリティとコンプライアンスの強化
- アクセス権限の一元管理
- 操作ログの取得と監査
- セキュリティポリシーの統一的な適用
- コスト最適化
- 未使用リソースの自動検出と停止
- リソース使用状況の定期的なモニタリング
- コスト管理の自動化
AWS CLIを使用しない場合の課題
- マネジメントコンソールでの手動操作による人的ミス
- 反復作業による時間の浪費
- 大規模環境での管理コストの増大
- 自動化・標準化の困難さ
これらの課題を解決するためにも、AWS CLIの導入は現代のクラウド運用において必須のツールとなっています。次章では、実際のインストール手順について詳しく解説していきます。
AWS CLI のインストール前準備
必要な権限と認証情報の確認
AWSサービスを安全に利用するために、以下の準備が必要です:
1. AWS アカウントの準備
- AWS アカウントの作成済みであること
- ルートユーザーではなく、IAMユーザーを作成して使用すること
- 多要素認証(MFA)の設定を推奨
2. 必要な認証情報
- アクセスキーID
- シークレットアクセスキー
- (オプション)セッショントークン
IAMユーザーに必要な権限
権限グループ | 説明 | 推奨ポリシー |
---|---|---|
基本実行権限 | CLI実行に最低限必要な権限 | IAMReadOnlyAccess |
サービス固有権限 | 利用するサービスに応じた権限 | 必要に応じて追加 |
セキュリティ関連 | セキュリティ設定の変更権限 | IAMUserChangePassword |
システム要件の確認方法
1. OS互換性の確認
各OSでサポートされているバージョン:
- Windows
- Windows 7 以降
- Windows Server 2008 R2 以降
- PowerShell 3.0 以降推奨
- macOS
- macOS 10.12 (Sierra) 以降
- Homebrewパッケージマネージャー推奨
- Linux
- RHEL/CentOS 7 以降
- Ubuntu 18.04 以降
- Amazon Linux 2
2. ハードウェア要件
最小要件:
- RAM: 256MB以上
- ディスク容量: 200MB以上
- インターネット接続必須
推奨要件:
- RAM: 512MB以上
- ディスク容量: 500MB以上
- 安定したインターネット接続
3. 事前インストールが必要なソフトウェア
ソフトウェア | 用途 | インストール確認コマンド |
---|---|---|
Python | AWS CLI v2では不要(組み込み) | python –version |
pip | パッケージインストール用 | pip –version |
curl | ダウンロード用 | curl –version |
インストール前チェックリスト
- [ ] AWS アカウントの作成完了
- [ ] IAMユーザーの作成と適切な権限設定
- [ ] アクセスキーとシークレットキーの取得
- [ ] システム要件の確認
- [ ] 必要なディスク容量の確保
- [ ] インターネット接続の確認
- [ ] 管理者権限でのインストールが可能か確認
これらの準備が整ったら、次章の環境別インストール手順に進んでください。準備が不十分な状態でインストールを進めると、セキュリティリスクや運用上の問題が発生する可能性があります。
環境別インストール手順
Windows環境での導入方法
Windows環境では、公式インストーラーを使用する方法を推奨します。
1. インストーラーのダウンロード
- AWS CLI 公式ページから64ビット版Windowsインストーラーをダウンロード
- ダウンロードしたMSIファイルを実行
2. インストール手順
# PowerShellを管理者権限で開き、以下のコマンドを実行 # インストールの確認 aws --version # もし認識されない場合は、環境変数のパスを確認 $env:Path -split ';'
トラブルシューティング
- インストール後にPowerShellの再起動が必要
- パスが通っていない場合は環境変数に手動で追加
- アンチウイルスソフトによるブロックに注意
Mac 環境での導入方法
macOSでは、Homebrewを使用する方法とパッケージインストーラーを使用する方法があります。
Homebrewを使用する方法(推奨)
# Homebrewのインストール(未導入の場合) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # AWS CLIのインストール brew install awscli # バージョン確認 aws --version
パッケージインストーラーを使用する方法
# パッケージのダウンロードとインストール curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target / # インストールの確認 aws --version
Linux 環境での導入方法
主要なディストリビューション別のインストール方法を解説します。
Amazon Linux 2 / RHEL
# yumを使用したインストール sudo yum update -y sudo yum install -y aws-cli # または新しいバージョンを使用する場合 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install
Ubuntu / Debian
# 必要なパッケージのインストール sudo apt-get update sudo apt-get install -y unzip # AWS CLIのダウンロードとインストール curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install # バージョン確認 aws --version
共通の注意点
- インストール時の権限
- sudo権限が必要
- システムワイドなインストールを推奨
- 依存関係の確認
- Python3が必要(AWS CLI v2では組み込み)
- unzipコマンドが必要(Linux環境)
- プロキシ環境での設定
# プロキシ環境変数の設定 export HTTP_PROXY=http://proxy.example.com:port export HTTPS_PROXY=http://proxy.example.com:port
- インストール後の確認事項
- バージョン確認
- コマンド補完機能の有効化
- 基本的なコマンドの動作確認
これで環境別のインストール手順は完了です。次章では、インストールしたAWS CLIの初期設定について解説します。
AWS CLI の初期設定ガイド
アクセスキーとシークレットキーの設定
AWS CLIを使用するには、適切な認証情報の設定が必要です。以下の手順で設定を行います。
1. 基本的な認証情報の設定
# aws configure コマンドを使用した基本設定 aws configure # 以下の情報を順番に入力 AWS Access Key ID: [アクセスキーを入力] AWS Secret Access Key: [シークレットキーを入力] Default region name: [リージョン名を入力 例: ap-northeast-1] Default output format: [出力形式を入力 例: json]
2. 複数プロファイルの設定
# 特定のプロファイル名で設定を作成 aws configure --profile project1 # プロファイルを指定してコマンドを実行 aws s3 ls --profile project1
プロファイル設定のベストプラクティス
用途 | プロファイル名の例 | 使用シーン |
---|---|---|
開発環境 | dev | 開発作業時の操作 |
本番環境 | prod | 本番環境の管理 |
個人作業 | personal | 個人の検証作業 |
特定プロジェクト | project-name | プロジェクト固有の作業 |
安全なリージョンの設定方法
1. デフォルトリージョンの設定
# 設定ファイルの直接編集 vim ~/.aws/config # 設定例[default]
region = ap-northeast-1 output = json
[profile project1]region = us-west-2 output = json
2. リージョン設定のベストプラクティス
- 主要リージョンの選択基準
- レイテンシーの考慮
- コストの最適化
- コンプライアンス要件の確認
- 利用可能なサービスの確認
規定の作成と管理
1. AWS CLI設定ファイルの構造
~/.aws/ ├── config # リージョンや出力形式の設定 └── credentials # 認証情報の保存
2. 高度な設定オプション
# タイムアウト設定の追加 aws configure set default.cli_read_timeout 120 # リトライ設定の追加 aws configure set default.cli_retry_mode adaptive
セキュリティを考慮した設定例
# ~/.aws/config の設定例[default]
region = ap-northeast-1 output = json cli_pager = max_attempts = 5 retry_mode = adaptive
[profile secure-prod]region = ap-northeast-1 output = json cli_binary_format = base64 cli_timestamp_format = iso8601
3. 設定の検証方法
# 現在の設定を確認 aws configure list # 特定のプロファイルの設定を確認 aws configure list --profile project1 # 認証情報の動作確認 aws sts get-caller-identity
設定のバックアップと復元
1. 設定ファイルのバックアップ
# 設定ディレクトリのバックアップ cp -r ~/.aws ~/.aws_backup # 暗号化したバックアップの作成 tar czf - ~/.aws | gpg -c > aws_config_backup.tar.gz.gpg
2. 設定の復元
# バックアップからの復元 cp -r ~/.aws_backup ~/.aws # 暗号化されたバックアップからの復元 gpg -d aws_config_backup.tar.gz.gpg | tar xzf -
これらの初期設定が完了したら、次章で説明する動作確認とトラブルシューティングに進んでください。適切な初期設定は、AWS CLIを安全かつ効率的に使用するための重要な基盤となります。
動作確認とトラブルシューティング
インストール成功の確認方法
1. バージョン確認
# AWS CLIのバージョン確認 aws --version # 期待される出力例 aws-cli/2.13.0 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
2. 基本的な動作確認コマンド
# 認証情報の確認 aws sts get-caller-identity # S3バケットの一覧表示 aws s3 ls # EC2インスタンスの一覧表示 aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId'
3. 設定ファイルの確認
# 設定の一覧表示 aws configure list # 特定のプロファイルの設定確認 aws configure list --profile myprofile
よくあるエラーと解決方法
1. 認証関連のエラー
エラーメッセージ | 原因 | 解決方法 |
---|---|---|
Unable to locate credentials | 認証情報が設定されていない | aws configure で認証情報を設定 |
InvalidClientTokenId | アクセスキーが無効 | IAMで新しいアクセスキーを生成 |
SignatureDoesNotMatch | シークレットキーが不正 | 認証情報を再設定 |
# 認証情報のトラブルシューティング aws configure list # 設定の確認 aws sts get-caller-identity # IAM認証の確認
2. 権限関連のエラー
# エラーメッセージ例 An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
対処方法:
- IAMユーザーの権限を確認
- 必要なポリシーの追加
- リソースポリシーの確認
3. ネットワーク関連のエラー
# プロキシ設定の確認と修正 export HTTP_PROXY=http://proxy.example.com:8080 export HTTPS_PROXY=http://proxy.example.com:8080 # DNSの確認 ping aws.amazon.com
4. リージョン関連のエラー
# リージョン設定の確認 aws configure get region # リージョンの一時的な変更 aws ec2 describe-instances --region ap-northeast-1
アップデート方法と注意点
1. Windows環境でのアップデート
# 現在のバージョンの確認 aws --version # MSIインストーラーをダウンロードして実行 # 既存のインストールは自動的に更新される
2. Mac環境でのアップデート
# Homebrewを使用している場合 brew upgrade awscli # パッケージインストーラーを使用している場合 curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" sudo installer -pkg AWSCLIV2.pkg -target /
3. Linux環境でのアップデート
# パッケージマネージャーを使用している場合 sudo yum update awscli # Amazon Linux, RHEL sudo apt-get update && sudo apt-get upgrade awscli # Ubuntu # バイナリからインストールした場合 curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install --update
アップデート時の注意点
- 設定ファイルのバックアップ
# 設定のバックアップ cp -r ~/.aws ~/.aws_backup_$(date +%Y%m%d)
- 既存のスクリプトの互換性確認
- 新バージョンでの破壊的変更の確認
- テスト環境での動作確認
- 必要に応じてスクリプトの修正
- ダウングレード手順の準備
# バージョンを指定してインストール(必要な場合) pip install awscli==1.27.0
これらのトラブルシューティング手順と更新方法を理解することで、AWS CLIを安定的に運用することができます。次章では、セキュリティ対策について詳しく説明します。
AWS CLI を使用する時のセキュリティ対策
認証情報の安全な管理方法
1. アクセスキーのベストプラクティス
- アクセスキーのローテーション
# 新しいアクセスキーの作成 aws iam create-access-key # 古いアクセスキーの無効化 aws iam update-access-key \ --access-key-id AKIAIOSFODNN7EXAMPLE \ --status Inactive \ --user-name user-name
- 認証情報ファイルの暗号化
# GPGを使用した認証情報の暗号化 gpg -e -r "your-email@example.com" ~/.aws/credentials # 暗号化されたファイルの復号化 gpg -d ~/.aws/credentials.gpg > ~/.aws/credentials chmod 600 ~/.aws/credentials
2. 環境変数の安全な使用
# 一時的な認証情報の使用 export AWS_ACCESS_KEY_ID="your-access-key" export AWS_SECRET_ACCESS_KEY="your-secret-key" export AWS_SESSION_TOKEN="your-session-token" # スクリプト終了時のクリア unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
最小権限の原則に基づく設定
1. IAMポリシーの最適化
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*" ], "Condition": { "IpAddress": { "aws:SourceIp": ["your-ip-range"] } } } ] }
2. セキュリティグループの設定例
アクセス制御 | 設定内容 | 目的 |
---|---|---|
IP制限 | 特定のIPアドレス範囲のみ許可 | 不正アクセスの防止 |
時間制限 | 業務時間内のみアクセス可能 | セキュリティリスクの低減 |
リージョン制限 | 使用するリージョンの制限 | 意図しない利用の防止 |
3. 多要素認証(MFA)の設定
# MFAデバイスの登録 aws iam create-virtual-mfa-device \ --virtual-mfa-device-name my-mfa-device \ --outfile /path/to/QRCode.png \ --bootstrap-method QRCodePNG # MFAを使用したセッショントークンの取得 aws sts get-session-token \ --serial-number arn:aws:iam::123456789012:mfa/my-mfa-device \ --token-code 123456
セキュリティ監査とモニタリング
1. AWS CLIの使用ログの監視
# CloudTrailでのCLI使用履歴の確認 aws cloudtrail lookup-events \ --lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin # CloudWatchアラームの設定 aws cloudwatch put-metric-alarm \ --alarm-name CLIUnauthorizedAttempts \ --metric-name UnauthorizedAttempts \ --namespace AWS/CLI \ --threshold 5 \ --period 300 \ --evaluation-periods 1 \ --comparison-operator GreaterThanThreshold \ --alarm-actions arn:aws:sns:region:account-id:topic-name
2. セキュリティチェックリスト
- [ ] アクセスキーの定期的なローテーション
- [ ] 不要な認証情報の削除
- [ ] IAMポリシーの定期的な見直し
- [ ] MFAの有効化
- [ ] CloudTrailログの有効化
- [ ] アラートの設定
- [ ] IP制限の実装
- [ ] 暗号化の適用
セキュリティインシデント対応手順
- インシデント発生時の即時対応
# 疑わしいアクセスキーの無効化 aws iam update-access-key \ --access-key-id AKIAIOSFODNN7EXAMPLE \ --status Inactive \ --user-name compromised-user # アクセスログの確認 aws cloudtrail lookup-events \ --lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIAIOSFODNN7EXAMPLE
- 復旧手順
- 影響を受けたリソースの特定
- 新しい認証情報の生成
- セキュリティ設定の見直し
- モニタリングの強化
これらのセキュリティ対策を適切に実装することで、AWS CLIの安全な運用が可能になります。次章では、具体的なコマンド例を紹介します。
AWS CLI を使用した基本的なコマンド例
S3の基本操作コマンド
1. バケット操作
# バケットの一覧表示 aws s3 ls # バケットの作成 aws s3 mb s3://my-new-bucket # バケットの削除(空の場合のみ) aws s3 rb s3://my-bucket # バケットの強制削除(中身ごと) aws s3 rb s3://my-bucket --force
2. オブジェクト操作
# ファイルのアップロード aws s3 cp local-file.txt s3://my-bucket/ # ディレクトリの同期 aws s3 sync local-directory s3://my-bucket/remote-directory # オブジェクトの一覧表示 aws s3 ls s3://my-bucket/ # オブジェクトの削除 aws s3 rm s3://my-bucket/unnecessary-file.txt
3. 高度なS3操作
# バージョニングの有効化 aws s3api put-bucket-versioning \ --bucket my-bucket \ --versioning-configuration Status=Enabled # ライフサイクルルールの設定 aws s3api put-bucket-lifecycle-configuration \ --bucket my-bucket \ --lifecycle-configuration file://lifecycle-rules.json
EC2の基本操作コマンド
1. インスタンス管理
# インスタンスの一覧表示 aws ec2 describe-instances # 特定のインスタンスの詳細情報 aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 # インスタンスの起動 aws ec2 start-instances \ --instance-ids i-1234567890abcdef0 # インスタンスの停止 aws ec2 stop-instances \ --instance-ids i-1234567890abcdef0
2. AMIとスナップショット
# AMIの作成 aws ec2 create-image \ --instance-id i-1234567890abcdef0 \ --name "My Server Backup" \ --description "Backup of my production server" # スナップショットの作成 aws ec2 create-snapshot \ --volume-id vol-1234567890abcdef0 \ --description "Backup of important volume"
3. セキュリティグループ
# セキュリティグループの作成 aws ec2 create-security-group \ --group-name my-sg \ --description "My security group" # インバウンドルールの追加 aws ec2 authorize-security-group-ingress \ --group-id sg-903004f8 \ --protocol tcp \ --port 22 \ --cidr 203.0.113.0/24
その他の便利なコマンド集
1. IAM関連
# IAMユーザーの一覧表示 aws iam list-users # IAMポリシーの作成 aws iam create-policy \ --policy-name my-policy \ --policy-document file://policy.json # IAMロールの作成 aws iam create-role \ --role-name my-role \ --assume-role-policy-document file://trust-policy.json
2. CloudWatch関連
# メトリクスの取得 aws cloudwatch get-metric-statistics \ --namespace AWS/EC2 \ --metric-name CPUUtilization \ --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \ --start-time 2025-01-28T00:00:00 \ --end-time 2025-01-28T23:59:59 \ --period 3600 \ --statistics Average # アラームの作成 aws cloudwatch put-metric-alarm \ --alarm-name cpu-mon \ --alarm-description "Alarm when CPU exceeds 70%" \ --metric-name CPUUtilization \ --namespace AWS/EC2 \ --statistic Average \ --period 300 \ --threshold 70 \ --comparison-operator GreaterThanThreshold \ --evaluation-periods 2 \ --alarm-actions arn:aws:sns:region:account-id:topic-name
3. 便利なフィルタリングとクエリ
# JSONPathを使用したフィルタリング aws ec2 describe-instances \ --query 'Reservations[*].Instances[*].[InstanceId,State.Name]' \ --output table # タグによるフィルタリング aws ec2 describe-instances \ --filters "Name=tag:Environment,Values=Production" # 特定の状態のインスタンスを検索 aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running"
実践的なスクリプト例
- 全リージョンのリソースチェック
#!/bin/bash for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do echo "Checking region: $region" aws ec2 describe-instances \ --region $region \ --query 'Reservations[].Instances[].[InstanceId,State.Name]' \ --output table done
- 古いスナップショットの削除
#!/bin/bash # 30日以上経過したスナップショットを削除 aws ec2 describe-snapshots --owner-ids self \ --query 'Snapshots[?StartTime<=`2024-12-29`].[SnapshotId]' \ --output text | \ while read snapshot; do aws ec2 delete-snapshot --snapshot-id $snapshot echo "Deleted snapshot $snapshot" done
これらのコマンド例は、AWS CLIの基本的な使用方法を示しています。実際の環境で使用する際は、適切な権限設定とセキュリティ対策を行った上で実行してください。