AWS CLIとは?初心者でもわかる基礎知識
AWS CLIの役割と重要性
AWS CLI(Command Line Interface)は、AWSのサービスをコマンドラインから操作するためのツールです。ブラウザベースのAWSマネジメントコンソールの機能を、コマンドラインから実行できるようになります。
例えば、以下のような操作が可能です:
# S3バケットの一覧を表示 aws s3 ls # EC2インスタンスの一覧を表示 aws ec2 describe-instances # Lambda関数を呼び出し aws lambda invoke --function-name my-function output.txt
AWS CLIの主な特徴:
| 特徴 | 説明 |
|---|---|
| 自動化対応 | シェルスクリプトに組み込んで自動化が可能 |
| クロスプラットフォーム | Windows、Mac、Linuxで利用可能 |
| 高速な操作 | GUIより素早いオペレーションが可能 |
| バージョン管理対応 | Infrastructure as Code(IaC)との相性が良い |
Macで AWS CLIを使うメリット
MacユーザーがAWS CLIを使用することで、以下のような具体的なメリットが得られます:
- Unix系コマンドとの親和性
- MacのターミナルはUnix系コマンドをネイティブでサポート
- パイプ(|)やリダイレクト(>)を使った高度な操作が可能
- シェルスクリプトとの連携が容易
- 開発効率の向上
- ターミナルとIDEを行き来することなく作業が完結
- Homebrewを使った簡単なインストールと管理
- 豊富なMac向け開発ツールとの連携
- 自動化の容易さ
# 例:S3バケットの内容を自動的に同期 aws s3 sync ~/local-folder s3://my-bucket/
- マルチタスク効率
- 複数のAWSアカウントの切り替えが容易
- プロファイル機能による複数環境の管理
- ターミナルのタブ機能を活用した並行作業
AWS CLIはMacユーザーにとって、特に以下のような場面で威力を発揮します:
- CI/CDパイプラインの構築
- バックアップの自動化
- リソースの一括管理
- デプロイメントの自動化
- ログ収集と分析
また、MacのSpotlightやAlfredなどのランチャーアプリと組み合わせることで、さらに効率的なAWS操作が可能になります。
注意点として、AWS CLIの使用には適切なIAM権限の設定が必要です。初期設定時にはセキュリティのベストプラクティスに従うことが推奨されます。
【最新版】Mac に AWS CLI をインストールする手順
Homebrewで AWS CLIをインストールする方法
Homebrewを使用したインストールは、最も簡単で推奨される方法です。
- Homebrewのインストール(まだインストールしていない場合)
# Homebrewインストールコマンド /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- AWS CLIのインストール
# AWS CLI V2のインストール brew install awscli # バージョン確認 aws --version
Homebrewを使用するメリット:
- アップデートが簡単(
brew upgrade awscli) - 依存関係の自動管理
- アンインストールが容易(
brew uninstall awscli)
公式パッケージでAWS CLIをインストールする方法
セキュリティ要件が厳しい環境や、Homebrewの使用が許可されていない場合は、公式パッケージを使用します。
- 公式パッケージのダウンロードとインストール
# パッケージのダウンロード curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg" # パッケージの検証(推奨) curl -o awscli.sig https://awscli.amazonaws.com/AWSCLIV2.pkg.sig gpg --verify awscli.sig AWSCLIV2.pkg # インストールの実行 sudo installer -pkg AWSCLIV2.pkg -target /
インストール後のファイル配置:
| ファイル/ディレクトリ | 場所 | 目的 |
|---|---|---|
| aws実行ファイル | /usr/local/bin/aws | メインのCLIプログラム |
| 補完スクリプト | /usr/local/aws-cli/v2/current/bin/aws_completer | コマンド補完機能 |
| SDKs | /usr/local/aws-cli/v2/current/dist | AWS SDKsライブラリ |
インストール後の動作確認方法
- バージョン確認
aws --version # 期待される出力例:aws-cli/2.15.0 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
- ヘルプコマンドのテスト
# 基本的なヘルプの表示 aws help # 特定のサービスのヘルプ aws s3 help
- シェルの設定確認
# パスの確認 which aws # 実行権限の確認 ls -l $(which aws)
トラブルシューティング:
| 問題 | 解決方法 |
|---|---|
| コマンドが見つからない | PATHの確認と追加 |
| 権限エラー | sudoの使用または権限の修正 |
| 古いバージョンの残存 | 既存のインストールの削除 |
インストール時の注意点:
- システムの要件確認(macOS 10.13以降推奨)
- 十分なディスク容量の確保(約200MB)
- 管理者権限(sudo)の必要性
- ファイアウォール設定の確認
これらの手順に従えば、5分程度でAWS CLIの環境構築が完了します。インストール方法は環境や要件に応じて選択してください。
AWS CLIの初期設定を完璧に行う
AWSアクセスキーとシークレットキーの取得方法
セキュアなAWS CLI環境を構築するために、まずは適切な権限を持つIAMユーザーを作成し、アクセスキーを取得します。
- IAMユーザーの作成
- AWSマネジメントコンソールにログイン
- IAMサービスに移動
- 「ユーザー」→「ユーザーを追加」を選択
- 必要最小限の権限を付与(最小権限の原則)
- アクセスキーの作成
# 作成したIAMユーザーの「セキュリティ認証情報」タブで # 「アクセスキーを作成」をクリック # 重要:表示されたアクセスキーIDとシークレットアクセスキーは # 安全な場所に保存してください
セキュリティのベストプラクティス:
| 推奨事項 | 理由 |
|---|---|
| MFAの有効化 | アカウントの不正アクセス防止 |
| 定期的なキーのローテーション | セキュリティリスクの低減 |
| キーの安全な保管 | 認証情報の漏洩防止 |
| 適切な権限設定 | 最小権限の原則の遵守 |
aws configureコマンドでの設定手順
- 基本的な設定
# デフォルトプロファイルの設定 aws configure # プロンプトで以下の情報を入力 AWS Access Key ID: [アクセスキーID] AWS Secret Access Key: [シークレットアクセスキー] Default region name: [リージョン名(例:ap-northeast-1)] Default output format: [出力形式(json/yaml/text/table)]
- 設定の確認
# 現在の設定を確認 aws configure list # 詳細な認証情報を確認(セキュアに保管) cat ~/.aws/credentials # リージョンなどの設定を確認 cat ~/.aws/config
複数プロファイルの設定と使い道
異なる環境や権限レベルを使い分けるために、複数のプロファイルを設定できます。
- 追加プロファイルの設定
# 開発環境用プロファイルの作成 aws configure --profile dev # 本番環境用プロファイルの作成 aws configure --profile prod # プロファイル一覧の確認 aws configure list-profiles
- プロファイルの使用方法
# 特定のプロファイルでコマンドを実行 aws s3 ls --profile dev # デフォルトプロファイルの切り替え export AWS_PROFILE=dev # プロファイルごとの権限確認 aws sts get-caller-identity --profile prod
プロファイル設定例(~/.aws/config):
[default] region = ap-northeast-1 output = json[profile dev]
region = ap-northeast-1 output = yaml
[profile prod]region = ap-northeast-1 output = json role_arn = arn:aws:iam::123456789012:role/ProductionRole source_profile = default
高度な設定オプション:
- 認証情報プロバイダーの設定
- SSO認証の利用
- IAMロールの継承
- 一時的な認証情報の使用
- 環境変数の活用
# 環境変数による認証情報の設定 export AWS_ACCESS_KEY_ID="アクセスキーID" export AWS_SECRET_ACCESS_KEY="シークレットキー" export AWS_DEFAULT_REGION="ap-northeast-1"
セキュリティ強化のためのTips:
- 本番環境のアクセスキーは必要な時だけ設定
- 機密情報をバージョン管理システムにコミットしない
- 定期的なアクセスキーの監査を実施
- AWS CloudTrailでCLI操作のログを記録
MacでのAWS CLI使用時のトラブルシューティング
よくあるエラーと解決方法
- 認証関連のエラー
# エラーメッセージ Unable to locate credentials. You can configure credentials by running "aws configure"
解決方法:
# 認証情報の存在確認 ls -la ~/.aws/ # 認証情報の再設定 aws configure # 環境変数の確認 echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY
- リージョン関連のエラー
# エラーメッセージ You must specify a region. You can also configure your region by running "aws configure"
解決方法:
# リージョンの設定確認 aws configure get region # リージョンの設定 aws configure set region ap-northeast-1 # 環境変数での設定 export AWS_DEFAULT_REGION=ap-northeast-1
- コマンド実行エラー
| エラー | 原因 | 解決方法 |
|---|---|---|
| Command not found | PATHの問題 | PATHの確認と追加 |
| Invalid JSON | 構文エラー | JSONバリデーターでチェック |
| Operation timed out | ネットワーク問題 | プロキシ設定の確認 |
| Access Denied | 権限不足 | IAMポリシーの確認 |
パーミッション関連の問題解決
- 実行権限の問題
# 実行権限の確認 ls -l $(which aws) # 権限の修正 chmod +x $(which aws) # ディレクトリ権限の確認 ls -ld ~/.aws
- 設定ファイルのパーミッション
# 推奨される権限設定 chmod 600 ~/.aws/credentials chmod 600 ~/.aws/config # 所有者の確認と修正 chown -R $(whoami) ~/.aws
セキュリティのベストプラクティス:
- 設定ファイルは600(所有者のみ読み書き可能)
- ホームディレクトリは700(所有者のみアクセス可能)
- 実行ファイルは755(全ユーザー実行可能)
環境変数のトラブル対処法
- 環境変数の競合
問題の特定:
# 現在の環境変数を確認 env | grep AWS # シェル設定ファイルの確認 cat ~/.zshrc # または ~/.bash_profile
解決手順:
# 競合する環境変数のクリア unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_DEFAULT_REGION # プロファイルの優先順位確認 aws configure list
- プロキシ設定の問題
# プロキシ設定の確認 echo $HTTP_PROXY echo $HTTPS_PROXY # AWS CLIでのプロキシ設定 aws configure set cli_proxy "http://proxy.example.com:8080"
- デバッグモードの活用
# デバッグ出力の有効化 aws s3 ls --debug # トレース情報の取得 aws s3 ls --output text --query 'Buckets[*].Name' --debug 2> debug.log
一般的なトラブルシューティングフロー:
- エラーメッセージの確認
- AWS CLIのバージョン確認
aws --version
- 認証情報の確認
aws configure list
- ログの確認
# CloudTrailでの操作ログ確認 aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=<IAMユーザー名>
- ネットワーク接続の確認
# AWS APIエンドポイントへの接続確認 curl -v https://s3.ap-northeast-1.amazonaws.com
トラブル予防のためのTips:
- 定期的な認証情報のバックアップ
- AWS CLIの定期的なアップデート
- エラーログの保存と分析
- テスト環境での事前確認
AWS CLIを使いこなすためのヒント
ショートカットとエイリアスの設定方法
- よく使うコマンドのエイリアス設定
~/.zshrc または ~/.bash_profile に以下のようなエイリアスを追加:
# 基本的なエイリアス alias awsls='aws s3 ls' alias awscp='aws s3 cp' alias awssync='aws s3 sync' # 複雑なコマンドのエイリアス alias ec2list='aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,State.Name,Tags[?Key=='\''Name'\''].Value|[0]]" --output table' alias awsprofiles='aws configure list-profiles'
- AWS CLIカスタムコマンドの作成
# ~/.aws/cli/alias ファイルの作成 mkdir -p ~/.aws/cli cat > ~/.aws/cli/alias << 'EOF'[toplevel]
running-instances = ec2 describe-instances \ –filters Name=instance-state-name,Values=running \ –query ‘Reservations[].Instances[].{ID: InstanceId, Name: Tags[?Key==`Name`].Value | [0], Type: InstanceType, IP: PrivateIpAddress}’ \ –output table get-public-ip = ec2 describe-instances \ –query ‘Reservations[].Instances[].[PublicIpAddress]’ \ –output text EOF
自動補完機能の活用方法
- Zshでの補完設定
# Zshの補完機能を有効化 echo 'autoload -Uz compinit && compinit' >> ~/.zshrc # AWS CLI補完スクリプトの追加 echo 'complete -C aws_completer aws' >> ~/.zshrc
- Bashでの補完設定
# Bash補完の有効化 echo 'complete -C aws_completer aws' >> ~/.bash_profile
補完機能の活用例:
# サービス名の補完 aws s3<TAB> # コマンドオプションの補完 aws ec2 describe-instances --<TAB> # リソース名の補完 aws s3 cp file.txt s3://<TAB>
セキュリティを強化するベストプラクティス
- MFAの活用
# MFAを使用したセッショントークンの取得
aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/user \
--token-code 123456
- 認証情報の暗号化
# AWS KMSを使用した認証情報の暗号化
aws kms encrypt \
--key-id alias/my-key \
--plaintext fileb://credentials.txt \
--output text --query CiphertextBlob > encrypted_credentials
- セキュリティポリシーの設定例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
]
}
生産性を向上させるTips:
- JQを使用したJSON処理
# インスタンス情報の整形
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {ID: .InstanceId, Type: .InstanceType, State: .State.Name}'
- スクリプト化による自動化
#!/bin/bash
# 開発環境のリソースクリーンアップスクリプト例
function cleanup_dev() {
# 未使用のEBSボリュームの削除
aws ec2 describe-volumes \
--filters Name=status,Values=available \
--query 'Volumes[*].{ID:VolumeId}' \
--output text | \
xargs -I {} aws ec2 delete-volume --volume-id {}
# 未使用のEIPの解放
aws ec2 describe-addresses \
--filters Name=domain,Values=vpc \
--query 'Addresses[?AssociationId==null].AllocationId' \
--output text | \
xargs -I {} aws ec2 release-address --allocation-id {}
}
- パラメータストアの活用
# 機密情報の安全な保存と取得
aws ssm put-parameter \
--name "/app/prod/database/password" \
--value "mypassword" \
--type SecureString
aws ssm get-parameter \
--name "/app/prod/database/password" \
--with-decryption \
--query 'Parameter.Value' \
--output text
効率的な使用のためのチェックリスト:
- [ ] エイリアスの設定
- [ ] 自動補完の有効化
- [ ] MFAの設定
- [ ] スクリプトの作成
- [ ] パラメータストアの利用
- [ ] 定期的なクリーンアップ
- [ ] ログの監視設定