服務特定端點 - AWS SDKs 和 工具

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

服務特定端點

服務特定端點設定可讓您選擇使用您選擇的端點來處理API要求,並讓該選擇持續存在。這些設定提供支援本機端點、VPC端點和協力廠商本機的彈性 AWS 開發環境。不同的端點可用於測試和生產環境。您可以URL為個人指定端點 AWS 服務.

使用下列項目設定此功能:

endpoint_url-共享 AWS config檔案設定
AWS_ENDPOINT_URL-環境變量
aws.endpointUrl-JVM 系統屬性:僅限爪哇/科特林

當直接在設定檔中指定或作為環境變數指定時,此設定會指定用於所有服務要求的端點。任何已設定的服務特定端點會覆寫此端點。

您也可以在共享的services部分中使用此設置 AWS config用於為特定服務設定自訂端點的檔案。如需要小services節中子區段使用的所有服務識別碼金鑰清單,請參閱服務特定端點的識別碼

預設值none

有效值:A URL 包括端點的配置和主機。URL可以選擇性地包含包含一或多個路徑區段的路徑元件。

AWS_ENDPOINT_URL_<SERVICE>-環境變量
aws.endpointUrl<ServiceName>-JVM 系統屬性:僅限爪哇/科特林

AWS_ENDPOINT_URL_<SERVICE>,在<SERVICE>哪裡 AWS 服務 識別碼,設定特定服務的自訂端點。如需所有服務特定環境變數的清單,請參閱 服務特定端點的識別碼

此服務特定端點會覆寫中AWS_ENDPOINT_URL設定的任何全域端點。

預設值none

有效值:A URL 包括端點的配置和主機。URL可以選擇性地包含包含一或多個路徑區段的路徑元件。

ignore_configured_endpoint_urls-共享 AWS config檔案設定
AWS_IGNORE_CONFIGURED_ENDPOINT_URLS-環境變量
aws.ignoreConfiguredEndpointUrls-JVM 系統屬性:僅限爪哇/科特林

此設定用於忽略所有自訂端點組態。

請注意,無論此設定為何,都會使用程式碼或服務用戶端本身中設定的任何明確端點。例如,包括指--endpoint-url令行參數與 AWS CLI 命令或將端點傳遞URL到客戶端構造函數將始終生效。

預設值false

有效值

  • true— SDK 或工具不會從共用config檔案或環境變數讀取任何自訂組態選項以設定端點URL。

  • false— SDK 或工具會使用共用config檔案或環境變數中的任何可用使用者提供的端點。

使用環境變數設定端點

若要將所有服務的要求路由至自訂端點URL,請設定AWS_ENDPOINT_URL全域環境變數。

export AWS_ENDPOINT_URL=http://localhost:4567

若要路由特定的要求 AWS 服務 至自訂端點URL,請使用AWS_ENDPOINT_URL_<SERVICE>環境變數。 Amazon DynamoDB 有一個serviceIdDynamoDB。對於此服務,端點URL環境變數為AWS_ENDPOINT_URL_DYNAMODB。此端點的優先順序高於AWS_ENDPOINT_URL針對此服務設定的全域端點。

export AWS_ENDPOINT_URL_DYNAMODB=http://localhost:5678

作為另一個例子, AWS Elastic Beanstalk 有一個serviceIdElastic Beanstalk。所以此 AWS 服務 標識符是基於API模型的,serviceId通過用下劃線替換所有空格並大寫所有字母。若要設定此服務的端點,對應的環境變數為AWS_ENDPOINT_URL_ELASTIC_BEANSTALK。如需所有服務特定環境變數的清單,請參閱 服務特定端點的識別碼

export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:5567

使用共用config檔案設定端點

在共享config文件中,用endpoint_url於不同的地方用於不同的功能。

  • endpoint_url直接在一個內指定,profile使該端點成為全局端點。

  • endpoint_url嵌套在services區段內的服務識別碼金鑰下,可讓該端點套用至僅對該服務發出的要求。如需在共用 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

單一設定檔可以設定多個服務的端點。此範例顯示如何URLs為 Amazon S3 和設定服務特定端點 AWS Elastic Beanstalk 在同一個配置文件中。 AWS Elastic Beanstalk 有一個serviceIdElastic Beanstalk。所以此 AWS 服務 標識符是基於API模型的,serviceId通過用下劃線替換所有空格並降低所有字母。因此,服務標識符密鑰變為,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

服務配置部分可以從多個配置文件中使用。例如,兩個縱斷面可以在變更其他縱斷面性質時使用相同的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假設角色功能的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並在程式碼中呼叫 AmazonEC2,端點會解析為https://profile-b-ec2-endpoint.aws。如果您的程式碼向任何其他服務發出要求,端點解析將不會遵循任何自訂邏輯。端點未解析為設定檔 A 中定義的全域端點。若要讓全域端點對設定檔 B 生效,您需要直接在 B 設定檔中設定 endpoint_url。如需 source_profile 設定的詳細資訊,請參閱擔任角色登入資料提供者

設定的優先順序

此功能的設定可以同時使用,但每個服務只會優先使用一個值。對於給定的API呼叫 AWS 服務,下面的順序用於選擇一個值:

  1. 在代碼或服務客戶端上設置的任何明確設置本身都優先於其他任何設置。

    • 對於 AWS CLI,這是由--endpoint-url命令行參數提供的值。對於SDK,明確的分配可以採用您在實例化時設置的參數的形式 AWS 服務 客戶端或配置對象。

  2. 服務特定環境變數所提供的值,例如AWS_ENDPOINT_URL_DYNAMODB

  3. AWS_ENDPOINT_URL 全域端點環境變數所提供的值。

  4. endpoint_url設定巢狀於共用config檔案services區段內的服務識別碼金鑰下所提供的值。

  5. 由共用config檔案中直接指endpoint_urlprofile的設定所提供的值。

  6. 相應的任何預設端點 URL AWS 服務 最後使用。

兼容性 AWS SDKs

下列項目SDKs支援本主題中描述的功能與設定。注意到任何部分例外情況。任何JVM系統屬性設定都受到 AWS SDK for Java 和 適用於 Kotlin 的 AWS SDK 只有。