【2024年保存版】AWS CLI for Macの完全セットアップガイド!5分で使える環境構築方法

目次

目次へ

AWS CLIとは?初心者でもわかる基礎知識

AWS CLIの役割と重要性

AWS CLI(Command Line Interface)は、AWSのサービスをコマンドラインから操作するためのツールです。ブラウザベースのAWSマネジメントコンソールの機能を、コマンドラインから実行できるようになります。

例えば、以下のような操作が可能です:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# S3バケットの一覧を表示
aws s3 ls
# EC2インスタンスの一覧を表示
aws ec2 describe-instances
# Lambda関数を呼び出し
aws lambda invoke --function-name my-function output.txt
# S3バケットの一覧を表示 aws s3 ls # EC2インスタンスの一覧を表示 aws ec2 describe-instances # Lambda関数を呼び出し aws lambda invoke --function-name my-function output.txt
# 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を使用することで、以下のような具体的なメリットが得られます:

  1. Unix系コマンドとの親和性
  • MacのターミナルはUnix系コマンドをネイティブでサポート
  • パイプ(|)やリダイレクト(>)を使った高度な操作が可能
  • シェルスクリプトとの連携が容易
  1. 開発効率の向上
  • ターミナルとIDEを行き来することなく作業が完結
  • Homebrewを使った簡単なインストールと管理
  • 豊富なMac向け開発ツールとの連携
  1. 自動化の容易さ
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 例:S3バケットの内容を自動的に同期
aws s3 sync ~/local-folder s3://my-bucket/
# 例:S3バケットの内容を自動的に同期 aws s3 sync ~/local-folder s3://my-bucket/
   # 例:S3バケットの内容を自動的に同期
   aws s3 sync ~/local-folder s3://my-bucket/
  1. マルチタスク効率
  • 複数のAWSアカウントの切り替えが容易
  • プロファイル機能による複数環境の管理
  • ターミナルのタブ機能を活用した並行作業

AWS CLIはMacユーザーにとって、特に以下のような場面で威力を発揮します:

  • CI/CDパイプラインの構築
  • バックアップの自動化
  • リソースの一括管理
  • デプロイメントの自動化
  • ログ収集と分析

また、MacのSpotlightやAlfredなどのランチャーアプリと組み合わせることで、さらに効率的なAWS操作が可能になります。

注意点として、AWS CLIの使用には適切なIAM権限の設定が必要です。初期設定時にはセキュリティのベストプラクティスに従うことが推奨されます。

【最新版】Mac に AWS CLI をインストールする手順

Homebrewで AWS CLIをインストールする方法

Homebrewを使用したインストールは、最も簡単で推奨される方法です。

  1. Homebrewのインストール(まだインストールしていない場合)
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Homebrewインストールコマンド
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Homebrewインストールコマンド /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Homebrewインストールコマンド
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. AWS CLIのインストール
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# AWS CLI V2のインストール
brew install awscli
# バージョン確認
aws --version
# AWS CLI V2のインストール brew install awscli # バージョン確認 aws --version
# AWS CLI V2のインストール
brew install awscli

# バージョン確認
aws --version

Homebrewを使用するメリット:

  • アップデートが簡単(brew upgrade awscli
  • 依存関係の自動管理
  • アンインストールが容易(brew uninstall awscli

公式パッケージでAWS CLIをインストールする方法

セキュリティ要件が厳しい環境や、Homebrewの使用が許可されていない場合は、公式パッケージを使用します。

  1. 公式パッケージのダウンロードとインストール
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# パッケージのダウンロード
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 /
# パッケージのダウンロード 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 /
# パッケージのダウンロード
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/distAWS SDKsライブラリ

インストール後の動作確認方法

  1. バージョン確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
aws --version
# 期待される出力例:aws-cli/2.15.0 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
aws --version # 期待される出力例:aws-cli/2.15.0 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
aws --version
# 期待される出力例:aws-cli/2.15.0 Python/3.11.6 Darwin/21.6.0 source/arm64 prompt/off
  1. ヘルプコマンドのテスト
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 基本的なヘルプの表示
aws help
# 特定のサービスのヘルプ
aws s3 help
# 基本的なヘルプの表示 aws help # 特定のサービスのヘルプ aws s3 help
# 基本的なヘルプの表示
aws help

# 特定のサービスのヘルプ
aws s3 help
  1. シェルの設定確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# パスの確認
which aws
# 実行権限の確認
ls -l $(which aws)
# パスの確認 which aws # 実行権限の確認 ls -l $(which aws)
# パスの確認
which aws

# 実行権限の確認
ls -l $(which aws)

トラブルシューティング:

問題解決方法
コマンドが見つからないPATHの確認と追加
権限エラーsudoの使用または権限の修正
古いバージョンの残存既存のインストールの削除

インストール時の注意点:

  • システムの要件確認(macOS 10.13以降推奨)
  • 十分なディスク容量の確保(約200MB)
  • 管理者権限(sudo)の必要性
  • ファイアウォール設定の確認

これらの手順に従えば、5分程度でAWS CLIの環境構築が完了します。インストール方法は環境や要件に応じて選択してください。

AWS CLIの初期設定を完璧に行う

AWSアクセスキーとシークレットキーの取得方法

セキュアなAWS CLI環境を構築するために、まずは適切な権限を持つIAMユーザーを作成し、アクセスキーを取得します。

  1. IAMユーザーの作成
  • AWSマネジメントコンソールにログイン
  • IAMサービスに移動
  • 「ユーザー」→「ユーザーを追加」を選択
  • 必要最小限の権限を付与(最小権限の原則)
  1. アクセスキーの作成
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 作成したIAMユーザーの「セキュリティ認証情報」タブで
# 「アクセスキーを作成」をクリック
# 重要:表示されたアクセスキーIDとシークレットアクセスキーは
# 安全な場所に保存してください
# 作成したIAMユーザーの「セキュリティ認証情報」タブで # 「アクセスキーを作成」をクリック # 重要:表示されたアクセスキーIDとシークレットアクセスキーは # 安全な場所に保存してください
   # 作成したIAMユーザーの「セキュリティ認証情報」タブで
   # 「アクセスキーを作成」をクリック

   # 重要:表示されたアクセスキーIDとシークレットアクセスキーは
   # 安全な場所に保存してください

セキュリティのベストプラクティス:

推奨事項理由
MFAの有効化アカウントの不正アクセス防止
定期的なキーのローテーションセキュリティリスクの低減
キーの安全な保管認証情報の漏洩防止
適切な権限設定最小権限の原則の遵守

aws configureコマンドでの設定手順

  1. 基本的な設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# デフォルトプロファイルの設定
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 # プロンプトで以下の情報を入力 AWS Access Key ID: [アクセスキーID] AWS Secret Access Key: [シークレットアクセスキー] Default region name: [リージョン名(例:ap-northeast-1)] Default output format: [出力形式(json/yaml/text/table)]
# デフォルトプロファイルの設定
aws configure

# プロンプトで以下の情報を入力
AWS Access Key ID: [アクセスキーID]
AWS Secret Access Key: [シークレットアクセスキー]
Default region name: [リージョン名(例:ap-northeast-1)]
Default output format: [出力形式(json/yaml/text/table)]
  1. 設定の確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 現在の設定を確認
aws configure list
# 詳細な認証情報を確認(セキュアに保管)
cat ~/.aws/credentials
# リージョンなどの設定を確認
cat ~/.aws/config
# 現在の設定を確認 aws configure list # 詳細な認証情報を確認(セキュアに保管) cat ~/.aws/credentials # リージョンなどの設定を確認 cat ~/.aws/config
# 現在の設定を確認
aws configure list

# 詳細な認証情報を確認(セキュアに保管)
cat ~/.aws/credentials

# リージョンなどの設定を確認
cat ~/.aws/config

複数プロファイルの設定と使い道

異なる環境や権限レベルを使い分けるために、複数のプロファイルを設定できます。

  1. 追加プロファイルの設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 開発環境用プロファイルの作成
aws configure --profile dev
# 本番環境用プロファイルの作成
aws configure --profile prod
# プロファイル一覧の確認
aws configure list-profiles
# 開発環境用プロファイルの作成 aws configure --profile dev # 本番環境用プロファイルの作成 aws configure --profile prod # プロファイル一覧の確認 aws configure list-profiles
# 開発環境用プロファイルの作成
aws configure --profile dev

# 本番環境用プロファイルの作成
aws configure --profile prod

# プロファイル一覧の確認
aws configure list-profiles
  1. プロファイルの使用方法
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 特定のプロファイルでコマンドを実行
aws s3 ls --profile dev
# デフォルトプロファイルの切り替え
export AWS_PROFILE=dev
# プロファイルごとの権限確認
aws sts get-caller-identity --profile prod
# 特定のプロファイルでコマンドを実行 aws s3 ls --profile dev # デフォルトプロファイルの切り替え export AWS_PROFILE=dev # プロファイルごとの権限確認 aws sts get-caller-identity --profile prod
# 特定のプロファイルでコマンドを実行
aws s3 ls --profile dev

# デフォルトプロファイルの切り替え
export AWS_PROFILE=dev

# プロファイルごとの権限確認
aws sts get-caller-identity --profile prod

プロファイル設定例(~/.aws/config):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[default]
region = ap-northeast-1
output = json
[default] region = ap-northeast-1 output = json
[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ロールの継承
  • 一時的な認証情報の使用
  • 環境変数の活用
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 環境変数による認証情報の設定
export AWS_ACCESS_KEY_ID="アクセスキーID"
export AWS_SECRET_ACCESS_KEY="シークレットキー"
export AWS_DEFAULT_REGION="ap-northeast-1"
# 環境変数による認証情報の設定 export AWS_ACCESS_KEY_ID="アクセスキーID" export AWS_SECRET_ACCESS_KEY="シークレットキー" export AWS_DEFAULT_REGION="ap-northeast-1"
# 環境変数による認証情報の設定
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使用時のトラブルシューティング

よくあるエラーと解決方法

  1. 認証関連のエラー
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# エラーメッセージ
Unable to locate credentials. You can configure credentials by running "aws configure"
# エラーメッセージ Unable to locate credentials. You can configure credentials by running "aws configure"
# エラーメッセージ
Unable to locate credentials. You can configure credentials by running "aws configure"

解決方法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 認証情報の存在確認
ls -la ~/.aws/
# 認証情報の再設定
aws configure
# 環境変数の確認
echo $AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY
# 認証情報の存在確認 ls -la ~/.aws/ # 認証情報の再設定 aws configure # 環境変数の確認 echo $AWS_ACCESS_KEY_ID echo $AWS_SECRET_ACCESS_KEY
# 認証情報の存在確認
ls -la ~/.aws/

# 認証情報の再設定
aws configure

# 環境変数の確認
echo $AWS_ACCESS_KEY_ID
echo $AWS_SECRET_ACCESS_KEY
  1. リージョン関連のエラー
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# エラーメッセージ
You must specify a region. You can also configure your region by running "aws configure"
# エラーメッセージ You must specify a region. You can also configure your region by running "aws configure"
# エラーメッセージ
You must specify a region. You can also configure your region by running "aws configure"

解決方法:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# リージョンの設定確認
aws configure get region
# リージョンの設定
aws configure set region ap-northeast-1
# 環境変数での設定
export AWS_DEFAULT_REGION=ap-northeast-1
# リージョンの設定確認 aws configure get region # リージョンの設定 aws configure set region ap-northeast-1 # 環境変数での設定 export AWS_DEFAULT_REGION=ap-northeast-1
# リージョンの設定確認
aws configure get region

# リージョンの設定
aws configure set region ap-northeast-1

# 環境変数での設定
export AWS_DEFAULT_REGION=ap-northeast-1
  1. コマンド実行エラー
エラー原因解決方法
Command not foundPATHの問題PATHの確認と追加
Invalid JSON構文エラーJSONバリデーターでチェック
Operation timed outネットワーク問題プロキシ設定の確認
Access Denied権限不足IAMポリシーの確認

パーミッション関連の問題解決

  1. 実行権限の問題
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 実行権限の確認
ls -l $(which aws)
# 権限の修正
chmod +x $(which aws)
# ディレクトリ権限の確認
ls -ld ~/.aws
# 実行権限の確認 ls -l $(which aws) # 権限の修正 chmod +x $(which aws) # ディレクトリ権限の確認 ls -ld ~/.aws
# 実行権限の確認
ls -l $(which aws)

# 権限の修正
chmod +x $(which aws)

# ディレクトリ権限の確認
ls -ld ~/.aws
  1. 設定ファイルのパーミッション
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 推奨される権限設定
chmod 600 ~/.aws/credentials
chmod 600 ~/.aws/config
# 所有者の確認と修正
chown -R $(whoami) ~/.aws
# 推奨される権限設定 chmod 600 ~/.aws/credentials chmod 600 ~/.aws/config # 所有者の確認と修正 chown -R $(whoami) ~/.aws
# 推奨される権限設定
chmod 600 ~/.aws/credentials
chmod 600 ~/.aws/config

# 所有者の確認と修正
chown -R $(whoami) ~/.aws

セキュリティのベストプラクティス:

  • 設定ファイルは600(所有者のみ読み書き可能)
  • ホームディレクトリは700(所有者のみアクセス可能)
  • 実行ファイルは755(全ユーザー実行可能)

環境変数のトラブル対処法

  1. 環境変数の競合

問題の特定:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 現在の環境変数を確認
env | grep AWS
# シェル設定ファイルの確認
cat ~/.zshrc # または ~/.bash_profile
# 現在の環境変数を確認 env | grep AWS # シェル設定ファイルの確認 cat ~/.zshrc # または ~/.bash_profile
# 現在の環境変数を確認
env | grep AWS

# シェル設定ファイルの確認
cat ~/.zshrc  # または ~/.bash_profile

解決手順:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 競合する環境変数のクリア
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_DEFAULT_REGION
# プロファイルの優先順位確認
aws configure list
# 競合する環境変数のクリア unset AWS_ACCESS_KEY_ID unset AWS_SECRET_ACCESS_KEY unset AWS_DEFAULT_REGION # プロファイルの優先順位確認 aws configure list
# 競合する環境変数のクリア
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_DEFAULT_REGION

# プロファイルの優先順位確認
aws configure list
  1. プロキシ設定の問題
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# プロキシ設定の確認
echo $HTTP_PROXY
echo $HTTPS_PROXY
# AWS CLIでのプロキシ設定
aws configure set cli_proxy "http://proxy.example.com:8080"
# プロキシ設定の確認 echo $HTTP_PROXY echo $HTTPS_PROXY # AWS CLIでのプロキシ設定 aws configure set cli_proxy "http://proxy.example.com:8080"
# プロキシ設定の確認
echo $HTTP_PROXY
echo $HTTPS_PROXY

# AWS CLIでのプロキシ設定
aws configure set cli_proxy "http://proxy.example.com:8080"
  1. デバッグモードの活用
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# デバッグ出力の有効化
aws s3 ls --debug
# トレース情報の取得
aws s3 ls --output text --query 'Buckets[*].Name' --debug 2> debug.log
# デバッグ出力の有効化 aws s3 ls --debug # トレース情報の取得 aws s3 ls --output text --query 'Buckets[*].Name' --debug 2> debug.log
# デバッグ出力の有効化
aws s3 ls --debug

# トレース情報の取得
aws s3 ls --output text --query 'Buckets[*].Name' --debug 2> debug.log

一般的なトラブルシューティングフロー:

  1. エラーメッセージの確認
  2. AWS CLIのバージョン確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
aws --version
aws --version
   aws --version
  1. 認証情報の確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
aws configure list
aws configure list
   aws configure list
  1. ログの確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# CloudTrailでの操作ログ確認
aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=<IAMユーザー名>
# CloudTrailでの操作ログ確認 aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=<IAMユーザー名>
   # CloudTrailでの操作ログ確認
   aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=<IAMユーザー名>
  1. ネットワーク接続の確認
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# AWS APIエンドポイントへの接続確認
curl -v https://s3.ap-northeast-1.amazonaws.com
# AWS APIエンドポイントへの接続確認 curl -v https://s3.ap-northeast-1.amazonaws.com
   # AWS APIエンドポイントへの接続確認
   curl -v https://s3.ap-northeast-1.amazonaws.com

トラブル予防のためのTips:

  • 定期的な認証情報のバックアップ
  • AWS CLIの定期的なアップデート
  • エラーログの保存と分析
  • テスト環境での事前確認

AWS CLIを使いこなすためのヒント

ショートカットとエイリアスの設定方法

  1. よく使うコマンドのエイリアス設定

~/.zshrc または ~/.bash_profile に以下のようなエイリアスを追加:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 基本的なエイリアス
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'
# 基本的なエイリアス 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'
# 基本的なエイリアス
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'
  1. AWS CLIカスタムコマンドの作成
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# ~/.aws/cli/alias ファイルの作成
mkdir -p ~/.aws/cli
cat > ~/.aws/cli/alias << 'EOF'
# ~/.aws/cli/alias ファイルの作成 mkdir -p ~/.aws/cli cat > ~/.aws/cli/alias << 'EOF'
# ~/.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

自動補完機能の活用方法

  1. Zshでの補完設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Zshの補完機能を有効化
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
# AWS CLI補完スクリプトの追加
echo 'complete -C aws_completer aws' >> ~/.zshrc
# Zshの補完機能を有効化 echo 'autoload -Uz compinit && compinit' >> ~/.zshrc # AWS CLI補完スクリプトの追加 echo 'complete -C aws_completer aws' >> ~/.zshrc
# Zshの補完機能を有効化
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc

# AWS CLI補完スクリプトの追加
echo 'complete -C aws_completer aws' >> ~/.zshrc
  1. Bashでの補完設定
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Bash補完の有効化
echo 'complete -C aws_completer aws' >> ~/.bash_profile
# Bash補完の有効化 echo 'complete -C aws_completer aws' >> ~/.bash_profile
# Bash補完の有効化
echo 'complete -C aws_completer aws' >> ~/.bash_profile

補完機能の活用例:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# サービス名の補完
aws s3<TAB>
# コマンドオプションの補完
aws ec2 describe-instances --<TAB>
# リソース名の補完
aws s3 cp file.txt s3://<TAB>
# サービス名の補完 aws s3<TAB> # コマンドオプションの補完 aws ec2 describe-instances --<TAB> # リソース名の補完 aws s3 cp file.txt s3://<TAB>
# サービス名の補完
aws s3<TAB>

# コマンドオプションの補完
aws ec2 describe-instances --<TAB>

# リソース名の補完
aws s3 cp file.txt s3://<TAB>

セキュリティを強化するベストプラクティス

  1. MFAの活用
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# MFAを使用したセッショントークンの取得
aws sts get-session-token \
--serial-number arn:aws:iam::123456789012:mfa/user \
--token-code 123456
# MFAを使用したセッショントークンの取得 aws sts get-session-token \ --serial-number arn:aws:iam::123456789012:mfa/user \ --token-code 123456
# MFAを使用したセッショントークンの取得
aws sts get-session-token \
    --serial-number arn:aws:iam::123456789012:mfa/user \
    --token-code 123456
  1. 認証情報の暗号化
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# AWS KMSを使用した認証情報の暗号化
aws kms encrypt \
--key-id alias/my-key \
--plaintext fileb://credentials.txt \
--output text --query CiphertextBlob > encrypted_credentials
# AWS KMSを使用した認証情報の暗号化 aws kms encrypt \ --key-id alias/my-key \ --plaintext fileb://credentials.txt \ --output text --query CiphertextBlob > encrypted_credentials
# AWS KMSを使用した認証情報の暗号化
aws kms encrypt \
    --key-id alias/my-key \
    --plaintext fileb://credentials.txt \
    --output text --query CiphertextBlob > encrypted_credentials
  1. セキュリティポリシーの設定例
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"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"
}
}
}
]
}
{ "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" } } } ] }
{
    "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:

  1. JQを使用したJSON処理
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# インスタンス情報の整形
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {ID: .InstanceId, Type: .InstanceType, State: .State.Name}'
# インスタンス情報の整形 aws ec2 describe-instances | jq '.Reservations[].Instances[] | {ID: .InstanceId, Type: .InstanceType, State: .State.Name}'
# インスタンス情報の整形
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {ID: .InstanceId, Type: .InstanceType, State: .State.Name}'
  1. スクリプト化による自動化
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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 {}
}
#!/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 {} }
#!/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 {}
}
  1. パラメータストアの活用
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 機密情報の安全な保存と取得
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
# 機密情報の安全な保存と取得 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
# 機密情報の安全な保存と取得
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の設定
  • [ ] スクリプトの作成
  • [ ] パラメータストアの利用
  • [ ] 定期的なクリーンアップ
  • [ ] ログの監視設定