AWS CLI - 設定ファイル
概要
AWS CLIの設定ファイル (config) は、AWS CLIの動作を制御するための設定を保存するファイルである。
デフォルトの保存場所は、~/.aws/config である。
主な特徴を以下に示す。
- プロファイルベースの設定
- 複数の設定を切り替えて使用可能
- 認証情報の管理
- アクセスキー、ロール、SSO等の設定
- リージョンと出力形式
- デフォルトのリージョンと出力形式を指定
- サービス固有設定
- S3、DynamoDB等のサービス固有の設定
- エンドポイント設定
- カスタムエンドポイントやFIPS、デュアルスタック等
設定ファイルの優先順位を以下に示す。
- コマンドラインオプション
- 最も優先度が高い
- 環境変数
AWS_REGION、AWS_PROFILE等
- 設定ファイル
- ~/.aws/config および ~/.aws/credentials
設定ファイルはプレーンテキストファイルであり、INI形式で記述する。
ファイルの場所と形式
ファイルの場所
設定ファイルのデフォルトの場所を以下に示す。
- Linux / MacOS
~/.aws/config~/.aws/credentials
- Windows
C:\Users\USERNAME\.aws\configC:\Users\USERNAME\.aws\credentials
環境変数でファイルの場所を変更できる。
AWS_CONFIG_FILE- configファイルの場所を指定
AWS_SHARED_CREDENTIALS_FILE- credentialsファイルの場所を指定
ファイルの形式
設定ファイルはINI形式で記述する。
基本的な構造を以下に示す。
# コメント行
[default]
region = ap-northeast-1
output = json
[profile production]
region = us-west-2
output = yaml
role_arn = arn:aws:iam::123456789012:role/ProdRole
source_profile = default
形式のルールは以下の通りである。
- セクション名は角括弧
[]で囲む。 - 設定項目は
key = valueの形式 - コメント行は
#で始める。 - ネストされた設定はインデントで表現する。
プロファイル名の規則
- デフォルトプロファイル
- configファイル :
[default] - credentialsファイル :
[default]
- configファイル :
- 名前付きプロファイル
- configファイル :
[profile name] - credentialsファイル :
[name]
- configファイル :
※注意
credentialsファイルでは、profile プレフィックスを付けない。
セクションの種類
AWS CLI configファイルには5種類のセクションが存在する。
[default] セクション
プロファイルを指定しない場合に使用されるデフォルト設定である。
[default]
region = ap-northeast-1
output = json
cli_pager =
[profile <プロファイル名>] セクション
名前付きプロファイルの設定である。
複数の環境や用途に応じて設定を切り替えることができる。
[profile development]
region = us-west-2
output = yaml
role_arn = arn:aws:iam::123456789012:role/DevRole
source_profile = default
- プロファイルの使用方法
# コマンドラインで指定
aws s3 ls --profile development
# 環境変数で指定
export AWS_PROFILE=development
aws s3 ls
[sso-session <セッション名>] セクション
IAM Identity Center (旧AWS SSO) のセッション設定である。
複数のプロファイルでSSOセッションを共有できる。
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
- プロファイルからの参照
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = ReadOnly
region = us-west-2
[services <サービス設定名>] セクション
サービス固有のエンドポイント設定である。
特定のサービスに対してカスタムエンドポイントを設定できる。
[profile dev]
services = my-services
[services my-services]
dynamodb =
endpoint_url = http://localhost:8000
s3 =
endpoint_url = http://localhost:4566
- サービス識別子の形式
- APIモデルの
serviceIdを基に生成 - スペースをアンダースコアに変換
- 全て小文字に変換
- 例1 : "Amazon S3" → "s3"
- 例2 : "Amazon DynamoDB" → "dynamodb"
[plugins] セクション
AWS CLI v2のプラグイン設定である。
※注意
AWS CLI v2のプラグインサポートは暫定的である。
将来のバージョンで互換性が保証されない。
[plugins]
cli_legacy_plugin_path = /usr/local/lib/python3.8/site-packages
my_custom_plugin = custom_plugin_module
基本設定項目
[default] および [profile] セクションで使用できる基本的な設定項目を示す。
リージョンと出力形式
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| region | デフォルトのAWSリージョン | なし | region = ap-northeast-1
|
| output | 出力形式 | json | output = json
|
認証情報
| 設定項目 | 説明 | 例 |
|---|---|---|
| aws_access_key_id | AWSアクセスキーID | aws_access_key_id = AKIAIOSFODNN7EXAMPLE
|
| aws_secret_access_key | AWSシークレットアクセスキー | aws_secret_access_key = wJalrXUtn...
|
| aws_session_token | セッショントークン | aws_session_token = IQoJb3JpZ2...
|
| credential_process | 外部プロセスから認証情報を取得 | credential_process = /opt/bin/awscreds
|
| credential_source | 認証情報のソース | credential_source = Ec2InstanceMetadata
|
※推奨
アクセスキーとシークレットキーは ~/.aws/credentials ファイルに保存することを推奨する。
IAMロール関連
| 設定項目 | 説明 | 例 |
|---|---|---|
| role_arn | 引き受けるロールのARN | role_arn = arn:aws:iam::123456789012:role/MyRole
|
| source_profile | ソースプロファイル | source_profile = default
|
| role_session_name | ロールセッション名 | role_session_name = session_user1
|
| duration_seconds | セッション期間 (秒) | duration_seconds = 3600
|
| external_id | 外部ID | external_id = unique-id
|
| mfa_serial | MFAデバイスのARN | mfa_serial = arn:aws:iam::123456789012:mfa/user
|
SSO (IAM Identity Center) 関連
| 設定項目 | 説明 | 例 |
|---|---|---|
| sso_session | SSOセッション名 | sso_session = my-sso
|
| sso_account_id | SSOアカウントID | sso_account_id = 123456789012
|
| sso_role_name | SSOロール名 | sso_role_name = ReadOnly
|
| sso_start_url | SSOポータルURL (レガシー) | sso_start_url = https://portal.awsapps.com/start
|
| sso_region | SSOリージョン (レガシー) | sso_region = us-east-1
|
※推奨
新規設定では sso-session セクションを使用する方法を推奨する。
エンドポイント設定
カスタムエンドポイント、FIPS、デュアルスタックエンドポイントの設定を行う。
エンドポイント関連
| 設定項目 | 説明 | 例 |
|---|---|---|
| endpoint_url | グローバルエンドポイントURL | endpoint_url = http://localhost:4566
|
| services | サービス固有設定のセクション名 | services = my-services
|
| ignore_configure_endpoint_urls | エンドポイント設定を無視 | ignore_configure_endpoint_urls = true
|
| use_dualstack_endpoint | デュアルスタックエンドポイント使用 | use_dualstack_endpoint = true
|
| use_fips_endpoint | FIPSエンドポイント使用 | use_fips_endpoint = true
|
| account_id_endpoint_mode | アカウントベースエンドポイントモード | account_id_endpoint_mode = preferred
|
| aws_account_id | AWSアカウントID | aws_account_id = 123456789012
|
エンドポイント設定の優先順位
エンドポイント設定は複数の場所で指定できるが、以下に示す優先順位で適用される。
- コマンドラインオプション
--endpoint-url
- 環境変数
AWS_ENDPOINT_URL
- サービス固有のエンドポイント設定
servicesセクション
- グローバルエンドポイント設定
endpoint_url
LocalStack等のローカル開発環境
ローカル開発環境での使用例を以下に示す。
[profile localstack]
region = us-east-1
endpoint_url = http://localhost:4566
services = local-services
[services local-services]
dynamodb =
endpoint_url = http://localhost:8000
s3 =
endpoint_url = http://localhost:4566
sqs =
endpoint_url = http://localhost:9324
- 使用方法
aws s3 ls --profile localstack aws dynamodb list-tables --profile localstack
リトライとパフォーマンス設定
リトライ設定
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| max_attempts | 最大リトライ回数 | 3 | max_attempts = 5
|
| retry_mode | リトライモード | standard | retry_mode = adaptive
|
リトライモードの種類を以下に示す。
standard- 標準のリトライルール
- AWS SDK全体で統一されたルール
legacy- AWS CLI v1互換のレガシーモード
adaptive- 実験的なアダプティブモード
- 自動的にクライアント側でスロットリングを調整
[profile production]
max_attempts = 10
retry_mode = adaptive
タイムアウト設定
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| metadata_service_timeout | EC2メタデータタイムアウト | 1秒 | metadata_service_timeout = 5
|
| metadata_service_num_attempts | EC2メタデータリトライ回数 | 1回 | metadata_service_num_attempts = 3
|
接続設定
| 設定項目 | 説明 | 例 |
|---|---|---|
| tcp_keepalive | TCP Keep-Alive使用 | tcp_keepalive = true
|
| ca_bundle | CAバンドルファイルパス | ca_bundle = /path/to/ca-bundle.pem
|
出力と表示設定
出力形式
| 設定項目 | 説明 | 例 |
|---|---|---|
| cli_pager | ページャプログラム | cli_pager = less
|
| cli_timestamp_format | タイムスタンプ形式 | cli_timestamp_format = iso8601
|
| cli_binary_format | バイナリ形式 | cli_binary_format = base64
|
| cli_auto_prompt | 自動プロンプト | cli_auto_prompt = on
|
| cli_help_output | ヘルプ出力形式 | cli_help_output = browser
|
ページャの無効化
AWS CLI v2はデフォルトでページャ (lessコマンド、あるいは、moreコマンド) を使用する。
無効化するには空文字列を設定する。
[default]
cli_pager =
または環境変数で設定する。
export AWS_PAGER=""
タイムスタンプ形式
iso8601(推奨)- iso8601
- ISO 8601形式で表示
- 例 : 2024-05-08T15:16:43Z
wire- HTTPレスポンスの形式のまま表示
[default]
cli_timestamp_format = iso8601
検証とセキュリティ設定
パラメータ検証
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| parameter_validation | パラメータ検証の実行 | true | parameter_validation = false
|
パラメータ検証を無効化するとパフォーマンスが向上する可能性がある。
ただし、無効化は推奨されない。
チェックサム設定
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| request_checksum_calculation | リクエストチェックサム計算 | when_supported | request_checksum_calculation = when_required
|
| response_checksum_validation | レスポンスチェックサム検証 | when_supported | response_checksum_validation = when_required
|
有効な値
when_supported- サポートされている場合に計算/検証
when_required- 必要な場合のみ計算/検証
署名設定
| 設定項目 | 説明 | 例 |
|---|---|---|
| sigv4a_signing_region_set | SigV4a署名リージョンセット | sigv4a_signing_region_set = us-west-2, us-east-1
|
S3固有の設定
S3コマンド用の設定は、s3 キー配下にネストして記述する。
基本設定
[profile s3-optimized]
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
max_bandwidth = 50MB/s
転送設定
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| max_concurrent_requests | 最大同時リクエスト数 | 10 | max_concurrent_requests = 20
|
| max_queue_size | タスクキュー最大サイズ | 1000 | max_queue_size = 10000
|
| multipart_threshold | マルチパート閾値 | 8MB | multipart_threshold = 64MB
|
| multipart_chunksize | チャンクサイズ | 8MB | multipart_chunksize = 16MB
|
| max_bandwidth | 最大帯域幅 | 無制限 | max_bandwidth = 50MB/s
|
エンドポイント設定
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| addressing_style | アドレス指定スタイル | auto | addressing_style = path
|
| use_accelerate_endpoint | Transfer Acceleration使用 | false | use_accelerate_endpoint = true
|
| payload_signing_enabled | ペイロード署名 | false | payload_signing_enabled = true
|
アドレス指定スタイルの種類
path- パススタイル
- 例 :
https://s3.amazonaws.com/bucketname/key
virtual- 仮想ホストスタイル
- 例 :
https://bucketname.s3.amazonaws.com/key
auto- 自動選択 (推奨)
転送クライアント
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| preferred_transfer_client | 転送クライアント | auto | preferred_transfer_client = crt
|
転送クライアントの種類
auto- 自動選択
- 条件が揃えば
crtを使用
classic- Python組み込みクライアント
- 全ての機能をサポート
crt- AWS Common Runtime (CRT) クライアント
- 高速だが一部機能制限あり
その他の設定項目
コマンド履歴
| 設定項目 | 説明 | デフォルト | 例 |
|---|---|---|---|
| cli_history | コマンド履歴の記録 | disabled | cli_history = enabled
|
コマンド履歴を有効化する時、aws history コマンドで過去のコマンドを確認できる。
# 履歴一覧
aws history list
# 詳細表示
aws history show <command_id>
APIバージョン指定
| 設定項目 | 説明 | 例 |
|---|---|---|
| api_versions | サービス固有のAPIバージョン | 下記参照 |
[profile specific-versions]
api_versions =
ec2 = 2015-03-01
cloudfront = 2015-09-17
アプリケーションID
| 設定項目 | 説明 | 例 |
|---|---|---|
| sdk_ua_app_id | アプリケーション識別子 | sdk_ua_app_id = myapp
|
アプリケーションIDは運用通知等でアプリケーションを識別するために使用される。
最大50文字まで指定可能である。
設定ファイルの例
基本的な設定例
# デフォルトプロファイル
[default]
region = ap-northeast-1
output = json
cli_pager =
# 開発環境
[profile development]
region = us-west-2
output = yaml
role_arn = arn:aws:iam::123456789012:role/DevRole
source_profile = default
max_attempts = 5
retry_mode = adaptive
SSO設定の例
# SSO設定 (推奨方式)
[profile sso-dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = PowerUser
region = us-west-2
output = json
[profile sso-prod]
sso_session = my-sso
sso_account_id = 444455556666
sso_role_name = ReadOnly
region = us-east-1
output = json
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
ローカル開発環境の例
# LocalStack用設定
[profile localstack]
region = us-east-1
endpoint_url = http://localhost:4566
services = local-services
[services local-services]
dynamodb =
endpoint_url = http://localhost:8000
s3 =
endpoint_url = http://localhost:4566
sqs =
endpoint_url = http://localhost:9324
lambda =
endpoint_url = http://localhost:3001
複数環境の設定例
# 開発環境
[profile dev]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::111111111111:role/DevRole
source_profile = default
# ステージング環境
[profile staging]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::222222222222:role/StagingRole
source_profile = default
duration_seconds = 3600
# 本番環境
[profile prod]
region = us-east-1
output = json
role_arn = arn:aws:iam::333333333333:role/ProdRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/username
duration_seconds = 7200
S3最適化設定の例
[profile s3-heavy]
region = ap-northeast-1
s3 =
max_concurrent_requests = 50
max_queue_size = 10000
multipart_threshold = 128MB
multipart_chunksize = 32MB
max_bandwidth = 100MB/s
preferred_transfer_client = crt
use_accelerate_endpoint = true
設定コマンド
初期設定
対話形式で基本設定を行う。
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 Access Key ID
- プロファイルを指定して設定する場合
aws configure --profile production
個別設定の変更
特定の設定項目のみを変更する。
# リージョンの設定
aws configure set region ap-northeast-1
# プロファイルを指定して設定
aws configure set region us-west-2 --profile production
# 出力形式の設定
aws configure set output yaml
# ロールARNの設定
aws configure set role_arn arn:aws:iam::123456789012:role/MyRole --profile prod
設定の確認
現在の設定を確認する。
# 設定一覧の表示
aws configure list
# プロファイルを指定して表示
aws configure list --profile production
# 特定の設定値を取得
aws configure get region
aws configure get region --profile production
# 出力例
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD shared-credentials-file
secret_key ****************ABCD shared-credentials-file
region ap-northeast-1 config-file ~/.aws/config
プロファイル一覧
設定されているプロファイルの一覧を表示する。
aws configure list-profiles
# 出力例 default development production localstack
SSO設定
IAM Identity Center (SSO) の設定を対話形式で行う。
# SSO設定
aws configure sso
# SSOセッション設定
aws configure sso-session
認証情報のエクスポート
現在の認証情報を他の形式でエクスポートする。
# JSON形式 (デフォルト)
aws configure export-credentials
# 環境変数形式 (export付き)
aws configure export-credentials --format env
# 環境変数形式 (export無し)
aws configure export-credentials --format env-no-export
# PowerShell形式
aws configure export-credentials --format powershell
# Windows CMD形式
aws configure export-credentials --format windows-cmd
- 使用例 (環境変数として設定)
# Bash / Zsh
eval $(aws configure export-credentials --format env --profile production)
# PowerShell
Invoke-Expression (aws configure export-credentials --format powershell --profile production)
環境変数
設定ファイルの代わりに環境変数で設定を上書きできる。
環境変数はコマンドラインオプションに次いで優先度が高い。
基本的な環境変数
| 環境変数 | 説明 | 例 |
|---|---|---|
AWS_PROFILE |
使用するプロファイル | export AWS_PROFILE=production
|
AWS_REGION |
AWSリージョン | export AWS_REGION=ap-northeast-1
|
AWS_DEFAULT_REGION |
デフォルトリージョン | export AWS_DEFAULT_REGION=us-west-2
|
AWS_DEFAULT_OUTPUT |
出力形式 | export AWS_DEFAULT_OUTPUT=json
|
AWS_CONFIG_FILE |
configファイルの場所 | export AWS_CONFIG_FILE=~/.aws/custom-config
|
AWS_SHARED_CREDENTIALS_FILE |
credentialsファイルの場所 | export AWS_SHARED_CREDENTIALS_FILE=~/.aws/custom-creds
|
認証情報の環境変数
| 環境変数 | 説明 | 例 |
|---|---|---|
AWS_ACCESS_KEY_ID |
アクセスキーID | export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
|
AWS_SECRET_ACCESS_KEY |
シークレットアクセスキー | export AWS_SECRET_ACCESS_KEY=wJalrXUtn...
|
AWS_SESSION_TOKEN |
セッショントークン | export AWS_SESSION_TOKEN=IQoJb3JpZ2...
|
その他の環境変数
| 環境変数 | 説明 | 例 |
|---|---|---|
AWS_PAGER |
ページャ設定 | export AWS_PAGER=""
|
AWS_CA_BUNDLE |
CAバンドルファイル | export AWS_CA_BUNDLE=/path/to/ca.pem
|
AWS_MAX_ATTEMPTS |
最大リトライ回数 | export AWS_MAX_ATTEMPTS=5
|
AWS_RETRY_MODE |
リトライモード | export AWS_RETRY_MODE=adaptive
|
環境変数の設定例
# Linux / MacOS (Bash / Zsh)
export AWS_PROFILE=production
export AWS_REGION=ap-northeast-1
export AWS_PAGER=""
# コマンド実行
aws s3 ls
# Windows (PowerShell)
$env:AWS_PROFILE = "production"
$env:AWS_REGION = "ap-northeast-1"
$env:AWS_PAGER = ""
# コマンド実行
aws s3 ls
# Windows (CMD)
set AWS_PROFILE=production
set AWS_REGION=ap-northeast-1
set AWS_PAGER=
# コマンド実行
aws s3 ls
設定項目の詳細
各設定項目の詳細な説明を示す。
region
デフォルトで使用するAWSリージョンを指定する。
- 有効な値
- 任意のAWSリージョンコード
- 例1 :
ap-northeast-1(東京) - 例2 :
us-west-2(オレゴン)
- 環境変数
AWS_REGIONまたはAWS_DEFAULT_REGION
- コマンドラインオプション
--region
[default]
region = ap-northeast-1
主要なリージョンコードを以下に示す。
us-east-1- 米国東部 (バージニア北部)
us-west-2- 米国西部 (オレゴン)
ap-northeast-1- アジアパシフィック (東京)
ap-southeast-1- アジアパシフィック (シンガポール)
eu-west-1- 欧州 (アイルランド)
output
コマンドの出力形式を指定する。
- 有効な値
json、yaml、yaml-stream、text、table
- デフォルト
json
- 環境変数
AWS_DEFAULT_OUTPUT
- コマンドラインオプション
--output
[default]
output = json
各出力形式の特徴を以下に示す。
json- JSON形式で出力
- プログラムでの処理に適する
yaml- YAML形式で出力
- 可読性が高い
yaml-stream- ストリーミングYAML形式
- 大きなデータの高速処理に適する
text- タブ区切りテキスト形式
- grep、sed、awk等での処理に適する
table- テーブル形式
- 人間が読みやすい
aws_access_key_id
認証に使用するAWSアクセスキーIDを指定する。
- 環境変数
AWS_ACCESS_KEY_ID
- 推奨
- ~/.aws/credentialsファイルに保存
# configファイルでも設定可能だが推奨されない
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
※セキュリティ上の注意
アクセスキーはcredentialsファイルに保存し、configファイルには記載しないことを推奨する。
aws_secret_access_key
認証に使用するAWSシークレットアクセスキーを指定する。
- 環境変数
AWS_SECRET_ACCESS_KEY
- 推奨
- ~/.aws/credentialsファイルに保存
# configファイルでも設定可能だが推奨されない
[default]
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token
一時的なセキュリティ認証情報を使用する場合に必要なセッショントークンを指定する。
- 環境変数
AWS_SESSION_TOKEN
- 用途
- 一時認証情報 (STS) 使用時に必要
[default]
aws_session_token = IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
credential_process
外部プロセスから認証情報を取得するためのコマンドを指定する。
コマンドは標準出力に以下のJSON形式で認証情報を出力する必要がある。
{
"Version": 1,
"AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
"SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"SessionToken": "token",
"Expiration": "2025-12-31T23:59:59Z"
}
[profile custom-auth]
credential_process = /opt/bin/get-credentials.sh --user myuser
※セキュリティ警告
この機能は潜在的に危険である。
信頼できるプログラムのみを使用すること。
configファイルのパーミッションを適切に設定すること。
credential_source
EC2インスタンスまたはコンテナ内でロールを引き受ける際の認証情報のソースを指定する。
source_profile と同時に指定できない。
- 有効な値
Environment、Ec2InstanceMetadata、EcsContainer
[profile ec2-role]
role_arn = arn:aws:iam::123456789012:role/MyEC2Role
credential_source = Ec2InstanceMetadata
各ソースの説明を以下に示す。
Environment- 環境変数から認証情報を取得
AWS_PROFILE環境変数と併用不可
Ec2InstanceMetadata- EC2インスタンスメタデータから取得
- インスタンスプロファイルが必要
EcsContainer- ECSコンテナ認証情報から取得
- タスクロールが必要
source_profile
ロールを引き受ける際に使用する長期認証情報を含むプロファイルを指定する。
credential_source と同時に指定できない。
[default]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[profile production]
role_arn = arn:aws:iam::123456789012:role/ProdRole
source_profile = default
role_arn
引き受けるIAMロールのARNを指定する。
- 環境変数
AWS_ROLE_ARN
- 必須
source_profileまたはcredential_sourceのいずれかが必要
[profile admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
source_profile = default
role_session_name
ロールセッションに付ける名前を指定する。
この値は AssumeRole の RoleSessionName パラメータに渡される。
- 環境変数
AWS_ROLE_SESSION_NAME
- デフォルト
- 自動生成される
[profile admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
source_profile = default
role_session_name = admin-session-yamada
CloudTrailログでセッション名が記録されるため、監査に有用である。
duration_seconds
ロールセッションの最大期間を秒単位で指定する。
- 範囲
- 900秒 (15分)~ ロールの最大セッション期間設定値 (最大43200秒)
- デフォルト
- 3600秒 (1時間)
[profile long-session]
role_arn = arn:aws:iam::123456789012:role/MyRole
source_profile = default
duration_seconds = 7200
※注意
ロール側でも最大セッション期間が設定されており、その値を超えることはできない。
external_id
第三者が顧客のアカウントでロールを引き受ける際に使用する一意の識別子を指定する。
[profile partner-access]
role_arn = arn:aws:iam::123456789012:role/PartnerRole
source_profile = default
external_id = unique-external-id-12345
信頼ポリシーで ExternalId 条件が設定されている場合に必要となる。
mfa_serial
ロールを引き受ける際に使用するMFAデバイスの識別番号を指定する。
- 形式
- ハードウェアデバイスのシリアル番号 (例 :
GAHT12345678) - 仮想MFAデバイスのARN (例 :
arn:aws:iam::123456789012:mfa/username)
- ハードウェアデバイスのシリアル番号 (例 :
[profile secure-prod]
role_arn = arn:aws:iam::123456789012:role/ProdRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/username
初回のロール引き受け時にMFAコードの入力が求められる。
一時認証情報はキャッシュされ、期限切れまで再入力は不要である。
web_identity_token_file
IDプロバイダーから提供されるOAuth 2.0アクセストークン、または、OpenID ConnectIDトークンを含むファイルのパスを指定する。
- 環境変数
AWS_WEB_IDENTITY_TOKEN_FILE
- 用途
- Web Identityを使用したロール引き受け
[profile web-identity]
role_arn = arn:aws:iam::123456789012:role/WebIdentityRole
web_identity_token_file = /path/to/token
sso_session
使用するSSO sessionセクションの名前を指定する。
IAM Identity Center (旧AWS SSO) の推奨設定方法である。
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = PowerUser
region = us-west-2
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
sso_start_url
組織のAWSアクセスポータルを指すURLを指定する。
レガシーSSO設定で使用する。
[profile legacy-sso]
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = ReadOnly
※推奨
新規設定では、sso-session セクションを使用する方法を推奨する。
sso_region
AWSアクセスポータルホストを含むAWSリージョンを指定する。
デフォルトの region パラメータとは別の設定である。
[profile sso-user]
sso_start_url = https://portal.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = ReadOnly
region = ap-northeast-1
sso_account_id
IAM Identity Centerユーザに付与する権限を持つIAMロールを含むAWSアカウントIDを指定する。
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = PowerUser
sso_role_name
このプロファイルを使用する際のユーザ権限を定義するIAMロールのフレンドリー名を指定する。
[profile readonly]
sso_session = my-sso
sso_account_id = 123456789012
sso_role_name = ReadOnlyAccess
sso_registration_scopes
sso-session に対して承認されるスコープのカンマ区切りリストを指定する。
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://portal.awsapps.com/start
sso_registration_scopes = sso:account:access
スコープはOAuth 2.0のメカニズムであり、アプリケーションのアクセス範囲を制限する。
endpoint_url
全てのサービスリクエストで使用されるエンドポイントを指定する。
- 環境変数
AWS_ENDPOINT_URL
- 用途
- LocalStack、MinIO等のローカル開発環境
- カスタムエンドポイント
[profile localstack]
endpoint_url = http://localhost:4566
region = us-east-1
サービス固有のエンドポイントは、services セクションで設定する。
services_setting
使用するサービス固有設定のセクション名を指定する。
[profile dev]
services = dev-services
[services dev-services]
dynamodb =
endpoint_url = http://localhost:8000
s3 =
endpoint_url = http://localhost:4566
ignore_configure_endpoint_urls
有効にすると、configファイルで指定された全てのカスタムエンドポイント設定を無視する。
- 有効な値
true、false
[profile ignore-custom]
ignore_configure_endpoint_urls = true
use_dualstack_endpoint
デュアルスタックエンドポイント (IPv4とIPv6の両方をサポート)の使用を有効にする。
- 有効な値
true、false
- デフォルト
false
[profile dualstack]
use_dualstack_endpoint = true
※注意
全てのサービスとリージョンでデュアルスタックエンドポイントが利用可能とは限らない。
use_fips_endpoint
FIPS 140-2準拠のエンドポイントの使用を指定する。
- 有効な値
true、false
- 用途
- 米国政府機関等でFIPS準拠が必要な場合
[profile fips]
use_fips_endpoint = true
※注意
全てのサービスとリージョンでFIPSエンドポイントが利用可能とは限らない。
account_id_endpoint_mode
サポートされているAWSサービスへの呼び出しにアカウントベースのエンドポイントIDを使用するかどうかを指定する。
- 有効な値
preferred(デフォルト)、disabled、required
- 環境変数
AWS_ACCOUNT_ID_ENDPOINT_MODE
[profile account-based]
account_id_endpoint_mode = required
aws_account_id = 123456789012
aws_account_id
アカウントベースのエンドポイントで使用するAWSアカウントIDを指定する。
- 環境変数
AWS_ACCOUNT_ID
[profile my-account]
aws_account_id = 123456789012
account_id_endpoint_mode = preferred
max_attempts
AWS CLIリトライハンドラが使用する最大リトライ試行回数を指定する。
初回呼び出しも回数に含まれる。
- デフォルト
- 3回
- 環境変数
AWS_MAX_ATTEMPTS
[profile resilient]
max_attempts = 10
retry_mode
AWS CLIが実行するリトライのタイプを指定する。
- 有効な値
standard、legacy、adaptive
- デフォルト
standard
- 環境変数
AWS_RETRY_MODE
[profile adaptive]
retry_mode = adaptive
max_attempts = 10
各モードの説明を以下に示す。
standard- AWS SDK全体で標準化されたリトライルール
- リトライクォータをサポート
legacy- AWS CLI v1互換のレガシーモード
adaptive- 実験的モード
- 自動クライアント側スロットリングを含む
cli_pager
出力データに使用するページャプログラムを指定する。
- デフォルト
- Linux / MacOSでは
less - Windowsでは
more
- Linux / MacOSでは
- 環境変数
AWS_PAGER
[default]
cli_pager = less
ページャを無効化する場合は空文字列を設定する。
[default]
cli_pager =
cli_timestamp_format
タイムスタンプ値の出力形式を指定する。
- 有効な値
iso8601、wire
- デフォルト
iso8601
[default]
cli_timestamp_format = iso8601
各形式の説明を以下に示す。
iso8601- ISO 8601形式で表示
- 例 :
2024-05-08T15:16:43Z
wire- HTTPレスポンスで受信した形式のまま表示
cli_binary_format
バイナリ入力パラメータの解釈方法を指定する。
- 有効な値
base64、raw-in-base64-out
- デフォルト
base64
[default]
cli_binary_format = base64
各形式の説明を以下に示す。
base64- バイナリ値をBase64エンコード文字列として扱う
raw-in-base64-out- AWS CLI v1互換モード
- バイナリ値を生のバイナリとして扱う
cli_auto_prompt
AWS CLI v2の自動プロンプト機能を有効にする。
- 有効な値
on、on-partial
- 環境変数
AWS_CLI_AUTO_PROMPT
- コマンドラインオプション
--cli-auto-prompt、--no-cli-auto-prompt
[default]
cli_auto_prompt = on-partial
各モードの説明を以下に示す。
on- 完全な自動プロンプトモード
- 全てのコマンドでプロンプトが表示される。
on-partial- 部分的な自動プロンプトモード
- 不完全なコマンドやエラー時のみプロンプトが表示される。
cli_help_output
help コマンドの表示形式を設定する。
- 有効な値
terminal、browser、url
- デフォルト
terminal
[default]
cli_help_output = browser
各形式の説明を以下に示す。
terminal- ターミナルでmanページを開く。
browser- デフォルトブラウザでHTMLページを開く。
url- オンラインドキュメントのURLを表示する。
cli_history
AWS CLIのコマンド履歴を有効にする。
- 有効な値
enabled、disabled
- デフォルト
disabled
[default]
cli_history = enabled
有効化すると、aws history コマンドで履歴を確認できる。
tcp_keepalive
AWS CLIクライアントがTCPキープアライブパケットを使用するかどうかを指定する。
- 有効な値
true、false
[default]
tcp_keepalive = true
ca_bundle
SSL証明書の検証時に使用するCA証明書バンドルのパスを指定する。
- 環境変数
AWS_CA_BUNDLE
- コマンドラインオプション
--ca-bundle
[default]
ca_bundle = /path/to/ca-bundle.pem
企業プロキシ環境等で独自のCA証明書を使用する場合に必要となる。
metadata_service_timeout
メタデータサービスリクエストがタイムアウトするまでの秒数を指定する。
- デフォルト
- 1秒
- 環境変数
AWS_METADATA_SERVICE_TIMEOUT
[profile ec2]
metadata_service_timeout = 5
IAMロールを使用して認証情報を提供する場合に使用される。
metadata_service_num_attempts
認証情報の取得を試行する回数を指定する。
- デフォルト
- 1回
- 環境変数
AWS_METADATA_SERVICE_NUM_ATTEMPTS
[profile ec2]
metadata_service_num_attempts = 3
parameter_validation
リクエストをシリアライズする際にパラメータ検証を実行するかどうかを制御する。
- 有効な値
true、false
- デフォルト
true
[default]
parameter_validation = true
無効化するとパフォーマンスが向上する可能性があるが、推奨されない。
request_checksum_calculation
リクエストペイロードのチェックサムを計算するタイミングを指定する。
- 有効な値
when_supported、when_required
- デフォルト
when_supported
- 環境変数
AWS_REQUEST_CHECKSUM_CALCULATION
[default]
request_checksum_calculation = when_supported
response_checksum_validation
レスポンスペイロードのチェックサム検証を実行するタイミングを指定する。
- 有効な値
when_supported、when_required
- デフォルト
when_supported
- 環境変数
AWS_RESPONSE_CHECKSUM_VALIDATION
[default]
response_checksum_validation = when_supported
sigv4a_signing_region_set
SigV4aを使用して署名する際に使用するリージョンをカンマ区切りで指定する。
- 環境変数
AWS_SIGV4A_SIGNING_REGION_SET
[default]
sigv4a_signing_region_set = us-west-2, us-east-1
設定しない場合、AWSサービスのデフォルトが使用される。
api_versions
特定のAWSサービスで使用するAPIバージョンを指定する。
ネストされた設定として記述する。
[profile specific-api]
api_versions =
ec2 = 2015-03-01
cloudfront = 2015-09-17
dynamodb = 2012-08-10
後方互換性を維持する必要がある場合に使用する。
sdk_ua_app_id
AWSサービスへの呼び出しを行ったソースアプリケーションを識別するアプリケーションIDを指定する。
- 最大長
- 50文字
- 使用可能文字
- 英数字と
! $ % & * + - . , ^ _ ` | ~
- 英数字と
- 環境変数
AWS_SDK_UA_APP_ID
[default]
sdk_ua_app_id = myapp-prod
運用通知等でアプリケーションを識別するために使用される。
addressing_style
S3エンドポイントのアドレス指定スタイルを指定する。
- 有効な値
path、virtual、auto
- デフォルト
auto
[default]
s3 =
addressing_style = path
各スタイルの説明
path- パススタイル
- 例 : https://s3.amazonaws.com/bucketname/key
virtual- 仮想ホストスタイル
- 例 : https://bucketname.s3.amazonaws.com/key
auto- 自動選択
- 可能な限り仮想ホストスタイルを使用
payload_signing_enabled
S3リクエストに対してSHA256ペイロード署名を実行するかどうかを指定する。
- 有効な値
true、false
- デフォルト
- ストリーミングアップロード時は、
false
- ストリーミングアップロード時は、
[default]
s3 =
payload_signing_enabled = false
無効化するとパフォーマンスオーバーヘッドを削減できる。
use_accelerate_endpoint
全ての s3 および s3api コマンドでAmazon S3 Transfer Accelerationエンドポイントを使用するかどうかを指定する。
- 有効な値
true、false
- デフォルト
false
- 制約
use_dualstack_endpointと相互排他
[default]
s3 =
use_accelerate_endpoint = true
バケットでTransfer Accelerationが有効化されている必要がある。
max_concurrent_requests
同時に実行できる最大リクエスト数を指定する。
- デフォルト
- 10
[default]
s3 =
max_concurrent_requests = 20
値を増やすと転送速度が向上する可能性がある。
値を減らすとシステムリソースの消費を抑えられる。
max_queue_size
タスクキューの最大サイズを指定する。
- デフォルト
- 1000
[default]
s3 =
max_queue_size = 10000
値を増やすとより多くのタスクを先読みできるが、メモリ使用量が増加する。
multipart_threshold
マルチパート転送を使用するファイルサイズの閾値を指定する。
- デフォルト
- 8MB
- 形式
- 数値または数値+サフィックス (KB、MB、GB、TB)
[default]
s3 =
multipart_threshold = 64MB
multipart_chunksize
マルチパート転送時の個別ファイルのチャンクサイズを指定する。
- デフォルト
- 8MB
- 最小
- 5MB
[default]
s3 =
multipart_chunksize = 16MB
max_bandwidth
S3との間でデータをアップロード・ダウンロードする際に消費できる最大帯域幅を指定する。
- デフォルト
- 無制限
- 形式
- 整数 (バイト/秒)または整数+サフィックス (KB/s、MB/s、GB/s)
[default]
s3 =
max_bandwidth = 50MB/s
帯域幅を制限したい場合に使用する。
preferred_transfer_client
S3ファイル転送に使用する転送クライアントを指定する。
- 有効な値
auto、classic、crt
- デフォルト
auto
[default]
s3 =
preferred_transfer_client = crt
各クライアントの説明を以下に示す。
auto- 条件に応じて自動選択
- 可能な場合は、
crtを使用
classic- Python組み込み転送クライアント
- 全ての機能をサポート
crt- AWS Common Runtime (CRT) 転送クライアント
- C言語ベースで高速
- 一部機能制限あり (S3間コピー等)
トラブルシューティング
設定ファイルが認識されない
- 原因
- ファイルの場所が間違っている。
- ファイルのパーミッションが不適切。
- 解決方法
- ファイルの場所を確認する。(~/.aws/config)
- 環境変数
AWS_CONFIG_FILEを確認する。 - パーミッションを確認する。(600 または 644 を推奨)
# ファイルの存在確認
ls -la ~/.aws/config
# パーミッション修正
chmod 600 ~/.aws/config
プロファイルが見つからない
- 原因
- プロファイル名が間違っている。
- configファイルの構文エラー
- 解決方法
- プロファイル一覧を確認する。
- configファイルの構文を確認する。
# プロファイル一覧
aws configure list-profiles
# 特定プロファイルの確認
aws configure list --profile production
認証エラー
- 原因
- 認証情報が間違っている。
- 認証情報の有効期限切れ。
- IAMロールの権限不足
- 解決方法
- 認証情報を確認する。
- 一時認証情報の場合は再取得する。
- IAMポリシーを確認する。
# 現在の認証情報確認
aws sts get-caller-identity
# SSO再ログイン
aws sso login --profile production
ロール引き受けエラー
- 原因
- 信頼関係が設定されていない。
source_profileの認証情報が無効- MFAが設定されているが提供されていない。
- 解決方法
- IAMロールの信頼関係を確認する。
- ソースプロファイルの認証情報を確認する。
- MFA設定を確認する。
SSOログインエラー
- 原因
- SSOセッションの有効期限切れ
sso_start_urlが間違っている。- ネットワーク接続の問題
- 解決方法
- 再ログインする。
- SSO設定を確認する。
- ネットワーク接続を確認する。
# SSOログイン
aws sso login --profile dev
# SSOセッション確認
cat ~/.aws/sso/cache/*.json
エンドポイント接続エラー
- 原因
- カスタムエンドポイントが起動していない。
- エンドポイントURLが間違っている。
- ネットワーク接続の問題
- 解決方法
- エンドポイントの起動状態を確認する。
- URLを確認する。
- ポート番号を確認する。
# LocalStackの起動確認
curl http://localhost:4566/_localstack/health
# ポート確認
netstat -an | grep 4566
ベストプラクティス
セキュリティ
- 認証情報の分離
- アクセスキーは
credentialsファイルに保存 - その他の設定は
configファイルに保存
- アクセスキーは
- ファイルパーミッション
chmod 600 ~/.aws/credentialschmod 600 ~/.aws/config
- IAMロールの使用
- 可能な限りIAMロールを使用
- 長期認証情報の使用を避ける
- SSOの活用
- 複数アカウント管理にはSSOを使用
- 一時認証情報による安全性向上
設定管理
- プロファイルの命名規則
- 環境や用途が分かりやすい名前を使用
- 例 : dev、staging、prod
- コメントの活用
- configファイルにコメントを記載
- 設定の目的や注意事項を記録
- バージョン管理
- configファイル (認証情報を除く) をGit管理
- チームで設定を共有
パフォーマンス
- リトライ設定の最適化
retry_mode = adaptiveを検討する。max_attemptsを適切に設定する。
- S3転送の最適化
max_concurrent_requestsを調整する。multipart_thresholdを適切に設定する。- CRT転送クライアントの活用
- ページャの無効化
- スクリプト実行時は
cli_pagerを無効化する。
- スクリプト実行時は
開発環境
- ローカル開発用プロファイル
- LocalStack等用の専用プロファイルを作成する。
- エンドポイント設定を明確化する。
- 環境変数の活用
- CI/CD環境では環境変数を使用する。
- ローカル開発では
AWS_PROFILEを使用する。
設定例テンプレート
# ~/.aws/config
# デフォルトプロファイル (個人開発用)
[default]
region = ap-northeast-1
output = json
cli_pager =
# 開発環境
[profile dev]
sso_session = company-sso
sso_account_id = 111111111111
sso_role_name = Developer
region = ap-northeast-1
output = json
# ステージング環境
[profile staging]
sso_session = company-sso
sso_account_id = 222222222222
sso_role_name = Developer
region = ap-northeast-1
output = json
# 本番環境 (読み取り専用)
[profile prod-readonly]
sso_session = company-sso
sso_account_id = 333333333333
sso_role_name = ReadOnly
region = us-east-1
output = json
# 本番環境 (管理者)
[profile prod-admin]
sso_session = company-sso
sso_account_id = 333333333333
sso_role_name = Administrator
region = us-east-1
output = json
mfa_serial = arn:aws:iam::333333333333:mfa/username
# SSO設定
[sso-session company-sso]
sso_region = us-east-1
sso_start_url = https://company.awsapps.com/start
sso_registration_scopes = sso:account:access
# ローカル開発 (LocalStack)
[profile localstack]
region = us-east-1
endpoint_url = http://localhost:4566
services = localstack-services
[services localstack-services]
dynamodb =
endpoint_url = http://localhost:8000
s3 =
endpoint_url = http://localhost:4566
関連リンク
- AWS公式ドキュメント: Configuration and credential file settings
- AWS公式ドキュメント: Configuration Variables
- AWS公式ドキュメント: S3 Configuration
- AWS公式ドキュメント: IAM Identity Center authentication