使用 Java 在 ECS 中刷新 AWS 令牌和密码

refreshing AWS token and secret in ECS with Java

我可以从 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 获取 ECS 容器中的令牌和秘密(参见 https://aws.amazon.com/premiumsupport/knowledge-center/ecs-fargate-access-aws-services/)。

AWS Java SDK v1 似乎包装了这个:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html?com/amazonaws/auth/ContainerCredentialsProvider.html

它似乎还提供了检查到期日期和刷新检索数据的方法。

AWS Java SDK v2 似乎也包装了这个:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/EC2ContainerCredentialsProviderWrapper.html

虽然它没有给出失效日期,但它应该如何使用呢?我得到的印象是令牌持续不到一天。

AWS Java SDK v2 似乎也以另一种方式包装:https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ContainerCredentialsProvider.Builder.html

它不提供刷新方法或到期日期,但父级 class (https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/HttpCredentialsProvider.Builder.html) 允许您设置是否异步刷新,并设置线程名称(大概处理异步刷新)但没有关于如何使用 asyncThreadName 的文档。

那么我怎样才能得到令牌和秘密并知道how/when刷新它们?

根据 AWS Support 的说法,添加对 asyncCredentialUpdateEnabled(true) 的调用会在后台进行刷新,无需任何进一步的努力。