サービス固有のエンドポイント - AWS SDK とツール

サービス固有のエンドポイント

注記

設定ページのレイアウトを理解したり、以下の AWS SDK とツールによるサポートの表を解釈したりするには、「このガイドの設定ページについて」を参照してください。

サービス固有のエンドポイント設定により、API リクエストに任意のエンドポイントを使用するオプションが得られ、この選択は持続します。これらの設定により、ローカルエンドポイント、VPC エンドポイント、およびサードパーティのローカル AWS 開発環境を柔軟にサポートできます。テスト環境と本番環境には異なるエンドポイントを使用できます。エンドポイント URL は個別の AWS のサービス に指定できます。

この機能を設定するには、以下のように使用します。

endpoint_url - AWS config 共有ファイル設定
AWS_ENDPOINT_URL 環境変数
aws.endpointUrl - JVM システムプロパティ: Java/Kotlin のみ

プロファイル内で直接指定するか、環境変数として指定した場合、この設定はすべてのサービスリクエストに使用されるエンドポイントを指定します。このエンドポイントは、設定されているサービス固有のエンドポイントによって上書きされます。

AWS config 共有ファイルの services セクション内でこの設定を使用して、特定のサービスのカスタムエンドポイントを設定することもできます。services 内のサブセクションで使用するすべてのサービス識別子キーのリストについては、「サービス固有のエンドポイントの識別子」を参照してください。

デフォルト値: none

有効な値: エンドポイントのスキームとホストを含む URL。URL は、必要に応じて 1 つ以上のパスセグメントを含むパスコンポーネントを含めることができます。

AWS_ENDPOINT_URL_<SERVICE> 環境変数
aws.endpointUrl<ServiceName> - JVM システムプロパティ: Java/Kotlin のみ

<SERVICE> が AWS のサービス 識別子である場合 AWS_ENDPOINT_URL_<SERVICE> 、特定のサービスのカスタムエンドポイントを設定します。サービス固有の環境変数のリストについては、「サービス固有のエンドポイントの識別子」を参照してください。

このサービス固有のエンドポイントは、AWS_ENDPOINT_URL に設定されているグローバルエンドポイントよりも優先されます。

デフォルト値: none

有効な値: エンドポイントのスキームとホストを含む URL。URL は、必要に応じて 1 つ以上のパスセグメントを含むパスコンポーネントを含めることができます。

ignore_configured_endpoint_urls - AWS config 共有ファイル設定
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS 環境変数
aws.ignoreConfiguredEndpointUrls - JVM システムプロパティ: Java/Kotlin のみ

この設定は、すべてのカスタムエンドポイント設定を無視するために使用されます。

コードまたはサービスクライアント自体に設定されている明示的なエンドポイントは、この設定に関係なく使用されることに注意してください。たとえば、AWS CLI コマンドに --endpoint-url コマンドラインパラメーターを含めたり、エンドポイント URL をクライアントコンストラクターに渡したりすると、常に有効になります。

デフォルト値: false

有効な値:

  • true — SDK またはツールは、エンドポイント URL を設定するための config 共有ファイルや環境変数からカスタム設定オプションを読み取ることはありません。

  • false — SDK またはツールは、config 共有ファイルまたは環境変数からユーザーが提供したエンドポイントをすべて使用します。

環境変数を使用したエンドポイントの設定

すべてのサービスのリクエストをカスタムエンドポイント URL にルーティングするには、 AWS_ENDPOINT_URL グローバル環境変数を設定します。

export AWS_ENDPOINT_URL=http://localhost:4567

特定の AWS のサービス のリクエストをカスタムエンドポイント URL にルーティングするには、AWS_ENDPOINT_URL_<SERVICE> 環境変数を使用します。Amazon DynamoDB には「DynamoDB」 の serviceId が付いています。このサービスのエンドポイント URL 環境変数は AWS_ENDPOINT_URL_DYNAMODB です。このエンドポイントは、このサービスのために AWS_ENDPOINT_URL に設定されているグローバルエンドポイントよりも優先されます。

export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678

別の例として、AWS Elastic Beanstalk には「Elastic Beanstalk」 の serviceId があります。AWS のサービス識別子は API モデルの serviceId に基づいており、すべてのスペースはアンダースコアに置き換えられ、使用する文字はすべて大文字になります。このサービスにエンドポイントを設定するための、対応する環境変数は AWS_ENDPOINT_URL_ELASTIC_BEANSTALK です。サービス固有の環境変数のリストについては、「サービス固有のエンドポイントの識別子」を参照してください。

export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:5567

config 共有ファイルを使用してエンドポイントを設定します

config 共有ファイルでは、 endpoint_url がさまざまな場所でさまざまな機能に使用されます。

  • profile 内で endpoint_url を直接指定すると、そのエンドポイントがグローバルエンドポイントになります。

  • services セクション内のサービス ID キーの下に endpoint_url をネストすると、そのエンドポイントはそのサービスに対して行われたリクエストにのみ適用されます。共有 config ファイル内の services セクションの定義について詳しくは、「設定ファイルの形式」を参照してください。

次の例では、services 定義を使用して Amazon S3 に使用されることとなるサービス固有のエンドポイント URL と、他のすべてのサービスに使用されることとなるカスタムグローバルエンドポイントを設定します。

[profile dev-s3-specific-and-global] endpoint_url = http://localhost:1234 services = s3-specific [services s3-specific] s3 = endpoint_url = https://play.min.io:9000

1 つのプロファイルで複数のサービスのエンドポイントを設定できます。この例は、Amazon S3 のサービス固有のエンドポイント URL と AWS Elastic Beanstalk を同じプロファイルに設定する方法を示しています。AWS Elastic Beanstalk には「Elastic Beanstalk」 の serviceId が付いています。AWS のサービス識別子は API モデルの serviceId に基づいており、すべてのスペースはアンダースコアに置き換えられ、使用する文字はすべて小文字になります。したがって、サービス ID キーは elastic_beanstalk になり、このサービスの設定は elastic_beanstalk = の行から開始されます。services セクションで使用するすべてのサービス識別子キーのリストについては、「サービス固有のエンドポイントの識別子」を参照してください。

[services testing-s3-and-eb] s3 = endpoint_url = http://localhost:4567 elastic_beanstalk = endpoint_url = http://localhost:8000 [profile dev] services = testing-s3-and-eb

サービス設定セクションは複数のプロファイルで使用できます。たとえば、2つのプロファイルが同じ定義 services を使用し、他のプロファイルプロパティを変更することができます。

[services testing-s3] s3 = endpoint_url = https://localhost:4567 [profile testing-json] output = json services = testing-s3 [profile testing-text] output = text services = testing-s3

ロールベースの認証情報を使用してプロファイル内のエンドポイントを設定します

プロファイルに IAM Assume Role 機能の source_profile パラメータによって設定されたロールベースの認証情報がある場合、SDK は指定されたプロファイルのサービス設定のみを使用します。ロールチェーンされたプロファイルは使用されません。例えば、次の共有 config ファイルを使用します。

[profile A] credential_source = Ec2InstanceMetadata endpoint_url = https://profile-a-endpoint.aws/ [profile B] source_profile = A role_arn = arn:aws:iam::123456789012:role/roleB services = profileB [services profileB] ec2 = endpoint_url = https://profile-b-ec2-endpoint.aws

プロファイル B を使用してコード内で Amazon EC2 を呼び出すと、エンドポイントは https://profile-b-ec2-endpoint.aws として解決されます。コードが他のサービスにリクエストを送信した場合、エンドポイントの解決はカスタムロジックには従いません。エンドポイントはプロファイル A で定義されたグローバルエンドポイントには解決されません。グローバルエンドポイントを B プロファイルに対して有効にするには、プロファイル B 内で直接 endpoint_url を設定する必要があります。source_profile 設定の詳細については、ロール認証情報プロバイダーを引き受けます を参照してください。

設定の優先順位

この機能の設定は同時に使用できますが、1 つのサービスにつき 1 つの値が優先されます。特定の AWS のサービス の API コールでは、次の順序で値が選択されます。

  1. コードまたはサービスクライアント自体に設定されている明示的な設定は、他の設定よりも優先されます。

    • AWS CLI の場合、これは --endpoint-url コマンドラインパラメータによって提供される値です。SDK の場合、明示的な割り当ては、 AWS のサービス クライアントまたは設定オブジェクトをインスタンス化するときに設定するパラメータの形式をとることができます。

  2. サービス固有の環境変数 (AWS_ENDPOINT_URL_DYNAMODB など) によって提供される値。

  3. AWS_ENDPOINT_URL グローバルエンドポイント環境変数によって提供される値。

  4. endpoint_url 設定によって得られる値は、config 共有ファイルの services セクション内のサービス ID キーの下にネストされます。

  5. 共有 config ファイルの profile 内で直接指定された endpoint_url 設定によって得られる値。

  6. 各 AWS のサービス のデフォルトのエンドポイント URL が最後に使用されます。

AWS SDK とツールによるサポート

以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。