共有 config および credentials ファイルを使用して AWS SDK とツールをグローバルに設定する
共有 AWS config および credentials ファイルは、AWS SDK とツールの認証と設定を指定する最も一般的な方法です。
共有 credentials および config ファイルには一連のプロファイルが含まれています。プロファイルは、AWS SDK、AWS Command Line Interface (AWS CLI)、およびその他のツールで使用されるキーと値のペアの一連の設定です。プロファイルを使用するときに SDK/ツールの一部を設定するために、設定値がプロファイルに添付されます。これらのファイルは、値がユーザーのローカル環境にあるすべてのアプリケーション、プロセス、または SDK に影響するという点で「共有」されます。
共有 config ファイルと credentials ファイルはどちらも ASCII 文字(UTF-8 でエンコードされた)のみを含むプレーンテキストファイルです。これらは一般に INI ファイル
プロファイル
共有 config ファイルと credentials ファイル内の設定は特定のプロファイルに関連付けられます。ファイル内で複数のプロファイルを定義し、異なる設定を作成して異なる開発環境に適用することができます。
[default] プロファイルには、特定の名前付きプロファイルが指定されていない場合に SDK またはツールオペレーションで使用される値が含まれます。名前で明示的に参照できる個別のプロファイルを作成することもできます。各プロファイルは、アプリケーションやシナリオに応じて異なる設定と値を使用できます。
注記
[default] は単に名前のないプロファイルです。このプロファイルは、ユーザーがプロファイルを指定しない場合に SDK が使用するデフォルトのプロファイルであるため、default の名前が付けられています。継承されたデフォルト値を他のプロファイルに使用することはありません。[default] プロファイルに何かを設定し、それを名前付きプロファイルでは設定しなかった場合、名前付きプロファイルを使用してもその値は設定されません。
名前付きプロファイルの設定
[default] プロファイルと複数の名前付きプロファイルは、同じファイル内に存在できます。次の設定を使用して、コードの実行時に SDK またはツールがどのプロファイルの設定を使用するかを選択します。プロファイルはコード内で選択することも、AWS CLI を使用する場合はコマンドごとに選択することもできます。
この機能を設定するには、以下のいずれかの設定を使用します。
AWS_PROFILE- 環境変数-
この環境変数を名前付きプロファイルまたは「デフォルト」に設定すると、すべての SDK コードと AWS CLI コマンドはそのプロファイルの設定を使用します。
Linux/macOS のコマンドラインによる環境変数の設定の例を以下に示します。
export AWS_PROFILE="my_default_profile_name";Windows のコマンドラインによる環境変数の設定の例を以下に示します。
setx AWS_PROFILE "my_default_profile_name"
aws.profile- JVM システムプロパティ-
JVM の SDK for Kotlin と SDK for Java 2.x では、aws.profile システムプロパティを設定できます。SDK はサービスクライアントを作成するときに、コードで設定が上書きされない限り、名前付きプロファイルの設定を使用します。SDK for Java 1.x は、このシステムプロパティをサポートしていません。
注記
アプリケーションが複数のアプリケーションを実行しているサーバー上にある場合は、デフォルトのプロファイルではなく、常に名前付きプロファイルを使用することをお勧めします。デフォルトのプロファイルは、環境内の任意の AWS アプリケーションによって自動的に取得され、アプリケーション間で共有されます。したがって、他のユーザーがアプリケーションのデフォルトプロファイルを更新すると、意図せず他のユーザーに影響を与える可能性があります。これを防ぐには、共有 config ファイルで名前付きプロファイルを定義し、コードに名前付きプロファイルを設定して、アプリケーションでその名前付きプロファイルを使用します。名前付きプロファイルのスコープがアプリケーションにのみ影響することがわかっている場合は、環境変数または JVM システムプロパティを使用して名前付きプロファイルを設定できます。
設定ファイルの形式
config ファイルは、セクションにまとめられています。セクションは、設定の名前付きコレクションであり、別のセクション定義の行が検出されるまで続きます。
config ファイルは、次の形式を使用するプレーンテキストファイルです。
-
セクション内のすべてのエントリは、
setting-name=valueの一般的な形式になります。 -
行の先頭にハッシュタグ (
#) を付けると、行をコメントアウトできます。
セクションタイプ
セクション定義は、設定のコレクションに名前を付ける行です。セクション定義行の先頭と末尾は角括弧 ([ ]) です。括弧内には、セクションタイプ識別子とセクションのカスタム名があります。英文字、数字、ハイフン (-)、アンダースコア (_) は使用できますが、スペースは使用できません。
セクションタイプ: default
セクション定義行の例:[default]
[default] は、profile セクション識別子を必要としない唯一のプロファイルです。
[default] プロファイルのある基本 config ファイルの例を以下に示します。region を設定します。別のセクション定義が見つかるまで、この行に続くすべての設定は、このプロファイルの一部になります。
[default] #Full line comment, this text is ignored. region = us-east-2
セクションタイプ: profile
セクション定義行の例:[profile
dev]
profile セクション定義行は、さまざまな開発シナリオに適用できる名前付き設定グループです。名前付きプロファイルについての理解を深めるには、前のセクションの「プロファイル」を参照してください。
次の例は、profile セクション定義行と foo という名前付きプロファイルを含む config ファイルを示しています。別のセクション定義が見つかるまで、この行に続くすべての設定は、この名前付きプロファイルの一部になります。
[profilefoo] ...settings...
次の例の s3 設定やサブ設定など、一部の設定には独自のサブ設定グループがネストされています。サブ設定を 1 つまたは複数のスペースでインデントしてグループに関連付けます。
[profile test] region = us-west-2 s3 = max_concurrent_requests=10 max_queue_size=1000
セクションタイプ: sso-session
セクション定義行の例:[sso-session
my-sso]
sso-session セクション定義行には、AWS IAM Identity Center を使用して AWS 認証情報を解決するようにプロファイルを設定するために使用する設定のグループに名前を付けます。シングルサインオン認証の設定の詳細については、「IAM Identity Center を使用して AWS SDK とツールを認証する」を参照してください。プロファイルは、キーと値のペアによって sso-session セクションにリンクされます。ここで、sso-session はキー、sso-session セクションの名前は値です(sso-session =
<name-of-sso-session-section> など)。
次の例では、「my-sso」のトークンを使用して「111122223333」アカウントの「SampleRole」IAM ロールの短期 AWS 認証情報を取得するプロファイルを設定しています。「my-sso」sso-session セクションは、profile セクションの中で sso-session キーを使用して名前で参照されます。
[profiledev] sso_session =my-ssosso_account_id =111122223333sso_role_name =SampleRole[sso-sessionmy-sso] sso_region =us-east-1sso_start_url =https://my-sso-portal.awsapps.com/start
セクションタイプ: services
セクション定義行の例:[services
dev]
注記
services セクションはサービス固有のエンドポイントのカスタマイズをサポートしており、この機能を含む SDK とツールでのみ使用できます。お使いの SDK でこの機能が使用できるかどうかを確認するには、「サービス固有のエンドポイント」の AWS SDK とツールによるサポート を参照してください。
services セクション定義行は、AWS のサービス リクエストのカスタムエンドポイントを設定する設定のグループに名前をつけます。プロファイルは、キーと値のペアによって services セクションにリンクされます。ここで、services はキー、services セクションの名前は値です(services =
<name-of-services-section> など)。
services セクションは <SERVICE> = 行ごとにサブセクションにさらに分割されます。ここで、<SERVICE> は AWS のサービス 識別子キーです。AWS のサービス識別子は API モデルの serviceId に基づいており、すべてのスペースはアンダースコアに置き換えられ、使用する文字はすべて小文字になります。services セクションで使用するすべてのサービス識別子キーのリストについては、「サービス固有のエンドポイントの識別子」を参照してください。サービス識別子キーの後には、ネストされた設定 (それぞれが 1 行にあり、2 つのスペースでインデントされている) が続きます。
次の例では、services 定義を使用して、Amazon DynamoDB サービスに対して行われたリクエストにのみ使用するようにエンドポイントを設定しています。"local-dynamodb" services セクションは、profile セクションの中で services キーを使用して名前で参照されます。AWS のサービス の識別子キーは dynamodb です。Amazon DynamoDB サービスサブセクションは dynamodb = という行から始まります。直後のインデントされた行はすべてそのサブセクションに含まれ、そのサービスに適用されます。
[profiledev] services =local-dynamodb[serviceslocal-dynamodb] dynamodb = endpoint_url =http://localhost:8000
カスタムエンドポイントの設定の詳細については、「サービス固有のエンドポイント」を参照してください。
認証情報ファイルの形式
プロファイルセクションが単語 profile で始まらないことを除けば、credentials ファイルのルールは一般的に config ファイルのルールと同じです。角括弧内にはプロファイル名だけを使用してください。次の例は、foo という名前付きプロファイルセクションを含む credentials ファイルを示しています。
[foo] ...credential settings...
credentials ファイルに保存できるのは、「シークレット」または機密と見なされる次の設定のみです。aws_access_key_id、aws_secret_access_key、および aws_session_token。これらの設定は共有 config ファイルに配置することもできますが、これらの機密の値は別の credentials ファイルに保持することをお勧めします。これにより、必要に応じてファイルごとに個別のアクセス許可を与えることができます。
[default] プロファイルのある基本 credentials ファイルの例を以下に示します。aws_access_key_id、aws_secret_access_key、および aws_session_token グローバル設定を設定します。
[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLEaws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYaws_session_token=IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZ2luX2IQoJb3JpZVERYLONGSTRINGEXAMPLE
credentials ファイルで名前付きプロファイルを使用するか「default」を使用するかにかかわらず、ここでの設定は、同じプロファイル名を使用する config ファイルの設定と組み合わせられます。同じ名前を共有するプロファイルの両方のファイルに認証情報がある場合、認証情報ファイルのキーが優先されます。