簡體   English   中英

如何使用 AWS Java SDK 設置 AWS Container Credentials

[英]How to set AWS Container Credentials using AWS Java SDK

我想使用ContainerCredentialsProvider(CredentialsEndpointProvider)而不是ContainerCredentialsProvider() ,因為后者已被棄用。

目前我正在使用不推薦使用的構造函數ContainerCredentialsProvider()如下:

AWSSimpleSystemsManagement ssm = 
    AWSSimpleSystemsManagementClientBuilder
        .standard()
        .withRegion(region)
        .withCredentials(new ContainerCredentialsProvider())
        .build();

CredentialsEndpointProvider是一個抽象類。 我需要在我的ECSCredentialsEndPointProvider中使用類似ECSCredentialsEndPointProvider東西,但我不知道該怎么做。 任何幫助表示贊賞。

我知道這有點晚了,但希望這能幫助像我這樣即使在 2020 年也遇到這個問題的人:)

使用您的代碼示例,您應該嘗試一下

AWSSimpleSystemsManagement ssm = 
    AWSSimpleSystemsManagementClientBuilder
        .standard()
        .withRegion(region)
        .withCredentials(new EC2ContainerCredentialsProviderWrapper())
        .build();

EC2ContainerCredentialsProviderWrapper實現了 AWSCredentialsProvider,並從 Amazon Container(例如 EC2)憑據加載憑據,按以下順序解決它們:

  1. 如果設置了環境變量“AWS_CONTAINER_CREDENTIALS_RELATIVE_URI”(通常在 EC2 上),它將用於在以下端點訪問元數據服務: http : //169.254.170.2
  2. 如果設置了環境變量“AWS_CONTAINER_CREDENTIALS_FULL_URI”,它將用於在該 URI 處訪問元數據服務。 通過設置“AWS_CONTAINER_AUTHORIZATION_TOKEN”環境變量,可以選擇將授權令牌包含在請求的“授權”標頭中。
  3. 如果上述環境變量均未指定,則嘗試使用 InstanceProfileCredentialsProvider 從 Amazon EC2 實例元數據服務加載憑證。

這類似於已棄用的ContainerCredentialsProvider()

默認情況下,URI 路徑是從容器環境中的環境變量“AWS_CONTAINER_CREDENTIALS_RELATIVE_URI”中檢索的。


更新:如果您不確定將使用哪種機制或希望與環境變量、系統屬性、配置文件憑證和容器憑證兼容,您可以使用DefaultAWSCredentialsProviderChain ,這將確保嘗試所有選項(正如@Imran 指出的那樣)在評論中):

AWSSimpleSystemsManagement ssm = 
    AWSSimpleSystemsManagementClientBuilder
        .standard()
        .withRegion(region)
        .withCredentials(new DefaultAWSCredentialsProviderChain())
        .build();

例如,1.11 SDK 的實現看起來像這樣(它基本上會嘗試所有選項,直到找到一個可行的選項):

public DefaultAWSCredentialsProviderChain() {
    super(new EnvironmentVariableCredentialsProvider(),
          new SystemPropertiesCredentialsProvider(),
          new ProfileCredentialsProvider(),
          new EC2ContainerCredentialsProviderWrapper());
}

通過這種方式,您可以與可能引入另一種類型的身份驗證或一個選項被棄用的新版本兼容。

在我看來,您打算使用EC2ContainerCredentialsProviderWrapper

val ecsCredProvider = new EC2ContainerCredentialsProviderWrapper()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM