サービス固有のエンドポイント
注記
設定ページのレイアウトを理解したり、以下の AWS SDK とツールによるサポートの表を解釈したりするには、「このガイドの設定ページについて」を参照してください。
サービス固有のエンドポイント設定により、API リクエストに任意のエンドポイントを使用するオプションが得られ、この選択は持続します。これらの設定により、ローカルエンドポイント、VPC エンドポイント、およびサードパーティのローカル AWS 開発環境を柔軟にサポートできます。テスト環境と本番環境には異なるエンドポイントを使用できます。エンドポイント URL は個別の AWS のサービス に指定できます。
この機能を設定するには、以下のように使用します。
endpoint_url- AWSconfig共有ファイル設定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- AWSconfig共有ファイル設定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 には「DynamoDBserviceId が付いています。このサービスのエンドポイント URL 環境変数は AWS_ENDPOINT_URL_DYNAMODB です。このエンドポイントは、このサービスのために AWS_ENDPOINT_URL に設定されているグローバルエンドポイントよりも優先されます。
export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678
別の例として、AWS Elastic Beanstalk には「Elastic BeanstalkserviceId があります。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 と、他のすべてのサービスに使用されることとなるカスタムグローバルエンドポイントを設定します。
[profiledev-s3-specific-and-global] endpoint_url =http://localhost:1234services =s3-specific[servicess3-specific] s3 = endpoint_url =https://play.min.io:9000
1 つのプロファイルで複数のサービスのエンドポイントを設定できます。この例は、Amazon S3 のサービス固有のエンドポイント URL と AWS Elastic Beanstalk を同じプロファイルに設定する方法を示しています。AWS Elastic Beanstalk には「Elastic BeanstalkserviceId が付いています。AWS のサービス識別子は API モデルの serviceId に基づいており、すべてのスペースはアンダースコアに置き換えられ、使用する文字はすべて小文字になります。したがって、サービス ID キーは elastic_beanstalk になり、このサービスの設定は elastic_beanstalk = の行から開始されます。services セクションで使用するすべてのサービス識別子キーのリストについては、「サービス固有のエンドポイントの識別子」を参照してください。
[servicestesting-s3-and-eb] s3 = endpoint_url =http://localhost:4567elastic_beanstalk = endpoint_url =http://localhost:8000[profiledev] services =testing-s3-and-eb
サービス設定セクションは複数のプロファイルで使用できます。たとえば、2つのプロファイルが同じ定義 services を使用し、他のプロファイルプロパティを変更することができます。
[servicestesting-s3] s3 = endpoint_url =https://localhost:4567[profiletesting-json] output = json services =testing-s3[profiletesting-text] output = text services =testing-s3
ロールベースの認証情報を使用してプロファイル内のエンドポイントを設定します
プロファイルに IAM Assume Role 機能の source_profile パラメータによって設定されたロールベースの認証情報がある場合、SDK は指定されたプロファイルのサービス設定のみを使用します。ロールチェーンされたプロファイルは使用されません。例えば、次の共有 config ファイルを使用します。
[profileA] credential_source =Ec2InstanceMetadataendpoint_url =https://profile-a-endpoint.aws/[profileB] source_profile =Arole_arn =arn:aws:iam::123456789012:role/roleBservices =profileB[servicesprofileB] 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 コールでは、次の順序で値が選択されます。
-
コードまたはサービスクライアント自体に設定されている明示的な設定は、他の設定よりも優先されます。
-
AWS CLI の場合、これは
--endpoint-urlコマンドラインパラメータによって提供される値です。SDK の場合、明示的な割り当ては、 AWS のサービス クライアントまたは設定オブジェクトをインスタンス化するときに設定するパラメータの形式をとることができます。
-
-
サービス固有の環境変数 (
AWS_ENDPOINT_URL_DYNAMODBなど) によって提供される値。 -
AWS_ENDPOINT_URLグローバルエンドポイント環境変数によって提供される値。 -
endpoint_url設定によって得られる値は、config共有ファイルのservicesセクション内のサービス ID キーの下にネストされます。 -
共有
configファイルのprofile内で直接指定されたendpoint_url設定によって得られる値。 -
各 AWS のサービス のデフォルトのエンドポイント URL が最後に使用されます。
AWS SDK とツールによるサポート
以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。
| SDK | サポート | 注意または詳細情報 |
|---|---|---|
| AWS CLI v2 | あり | |
| SDK for C++ | なし | |
| SDK for Go V2 (1.x) |
あり | |
| SDK for Go 1.x (V1) | なし | |
| SDK for Java 2.x | あり | |
| SDK for Java 1.x | なし | |
| SDK for JavaScript 3.x | あり | |
| SDK for JavaScript 2.x | なし | |
| SDK for Kotlin | あり | |
| SDK for .NET 4.x | あり | |
| SDK for .NET 3.x | あり | |
| SDK for PHP 3.x | あり | |
| SDK for Python (Boto3) |
あり | |
| SDK for Ruby 3.x | あり | |
| SDK for Rust | あり | |
| SDK for Swift | あり | |
| Tools for PowerShell V5 | あり | |
| Tools for PowerShell V4 | あり |