ホストプレフィックスインジェクション - AWS SDK とツール

ホストプレフィックスインジェクション

注記

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

ホストプレフィックスインジェクションは、AWS SDK が特定の API オペレーションのサービスエンドポイントのホスト名の先頭にプレフィックスを自動的に付加する機能です。このプレフィックスは、静的文字列でも、リクエストパラメータのデータを含む動的な値でもかまいません。

例えば、Amazon Simple Storage Service を使用して Amazon S3 オブジェクトまたはバケットに対してアクションを実行する場合、SDK は最後の API エンドポイントでバケット名と AWS アカウント ID を置き換えます。

この動作は通常の AWS サービスエンドポイントで必要ですが、VPC エンドポイントやローカルテストツールなどのカスタムエンドポイントを使用する場合は問題が発生する可能性があります。このような場合は、ホストプレフィックスインジェクションの無効化が必要になる場合があります。

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

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

この設定は、SDK またはツールが SDK のクライアントオブジェクトまたは変数で定義されているホストプレフィックスを付加してエンドポイントホスト名を変更するかどうかを制御します。

デフォルト値: false

有効な値:

  • true - ホストプレフィックスインジェクションを無効にします。SDK はエンドポイントのホスト名を変更しません。

  • false – ホストプレフィックスインジェクションを有効にします。SDK は、エンドポイントのホスト名の先頭にホストプレフィックスを付加します。

config ファイルにこの値を設定する例を以下に示します。

[default] disable_host_prefix_injection = true

Linux/macOS のコマンドラインによる環境変数の設定の例を以下に示します。

export AWS_DISABLE_HOST_PREFIX_INJECTION=true

Windows のコマンドラインによる環境変数の設定の例を以下に示します。

setx AWS_DISABLE_HOST_PREFIX_INJECTION true

ホストプレフィックスインジェクションの例

次の例の表は、ホストプレフィックスインジェクションが有効になっている場合と無効になっている場合に SDK が最後のエンドポイントを変更する方法を示しています。

  • ホストプレフィックス: SDK のクライアントオブジェクトまたはコード内の変数に設定されたホストプレフィックスプロパティ文字列のテンプレート。

  • 入力: SDK のクライアントオブジェクトまたはコード内の変数に設定された追加の入力。

  • クライアントエンドポイント: クライアントの派生エンドポイント。

  • 設定値: 前の設定の解決された値。

  • 結果のエンドポイント: SDK クライアントが API コールを行うために使用する結果のエンドポイント。

ホストプレフィックス 入力 クライアントエンドポイント 設定値 結果のエンドポイント
"data." {} "https://service.us-west-2.amazonaws.com" false "https://data.service.us-west-2.amazonaws.com"
"{Bucket}-{AccountId}." Bucket: "amzn-s3-demo-bucket1", AccountId:"123456789012" "https://service.us-west-2.amazonaws.com" false "https://amzn-s3-demo-bucket1-123456789012.service.us-west-2.amazonaws.com"
"data." {} "https://override.us-west-2.amazonaws.com" (as an override endpoint) true "https://override.us-west-2.amazonaws.com"

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

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

SDK サポート 注意または詳細情報
AWS CLI v2 あり
SDK for C++ なし 設定はサポートされていませんが、enableHostPrefixInjection を使用してクライアントのコードで設定できます。
SDK for Go V2 (1.x) なし ミドルウェアを使用して無効にできます。
SDK for Go 1.x (V1) なし
SDK for Java 2.x なし 設定はサポートされていませんが、SdkAdvancedClientOption.DISABLE_HOST_PREFIX_INJECTION を使用してクライアントのコードで設定できます。
SDK for Java 1.x なし 設定はサポートされていませんが、withDisableHostPrefixInjection を使用してクライアントのコードで設定できます。
SDK for JavaScript 3.x なし 設定はサポートされていませんが、disableHostPrefix を使用してクライアントのコードで設定できます。
SDK for JavaScript 2.x なし 設定はサポートされていませんが、hostPrefixEnabled を使用してクライアントのコードで設定できます。
SDK for Kotlin なし
SDK for .NET 4.x なし 設定はサポートされていませんが、DisableHostPrefixInjection を使用してクライアントのコードで設定できます。
SDK for .NET 3.x なし 設定はサポートされていませんが、DisableHostPrefixInjection を使用してクライアントのコードで設定できます。
SDK for PHP 3.x なし 設定はサポートされていませんが、disable_host_prefix_injection を使用してクライアントのコードで設定できます。
SDK for Python (Boto3) あり inject_host_prefix を使用してクライアントのコードで設定できます。
SDK for Ruby 3.x なし 設定はサポートされていませんが、disable_host_prefix_injection を使用してクライアントのコードで設定できます。
SDK for Rust なし
SDK for Swift なし
Tools for PowerShell V5 なし 設定はサポートされていませんが、パラメータ -ClientConfig @{DisableHostPrefixInjection = $true} を使用して特定のコマンドレットに含めることができます。
Tools for PowerShell V4 なし 設定はサポートされていませんが、パラメータ -ClientConfig @{DisableHostPrefixInjection = $true} を使用して特定のコマンドレットに含めることができます。