

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 GitHub 上编辑此页面**链接。

# 将 IRSA 与 AWS SDK 结合使用
<a name="iam-roles-for-service-accounts-minimum-sdk"></a>

**使用凭证**  
要使用服务账户的 IAM 角色（IRSA）凭证，代码可以使用任何 AWS SDK 为具有 SDK 的 AWS 服务创建客户端。默认情况下，SDK 会在一系列位置中搜索要使用的 AWS Identity and Access Management 凭证。如果您在创建客户端或者初始化 SDK 时未指定凭证提供程序，则将使用服务账户凭证的 IAM 角色。

由于服务账户的 IAM 角色已添加为默认凭证链中的一个步骤，因此该操作可行。如果您的工作负载当前使用凭证链中较早的证书，则即使您为同一工作负载的服务账户配置了 IAM 角色，这些凭证也将继续使用。

SDK 使用 `AssumeRoleWithWebIdentity` 操作自动将服务账户 OIDC 令牌交换为 AWS Security Token Service 中的临时凭证。Amazon EKS 和此 SDK 操作会在临时凭证到期前进行续订，从而继续轮换临时凭证。

在使用[服务账户的 IAM 角色](iam-roles-for-service-accounts.md)时，容器组（pod）中的容器必须使用支持通过 OpenID Connect Web 身份令牌文件担任 IAM 角色的 AWS SDK 版本。请确保为您的 AWS SDK 使用以下版本或更高版本：
+ Java（版本 2）– [2.10.11](https://github.com/aws/aws-sdk-java-v2/releases/tag/2.10.11) 
+ Java – [1.12.782](https://github.com/aws/aws-sdk-java/releases/tag/1.12.782) 
+  AWS SDK for Go v1 – [1.23.13](https://github.com/aws/aws-sdk-go/releases/tag/v1.23.13) 
+  AWS SDK for Go v2 – 所有版本均支持
+ Python (Boto3) – [1.9.220](https://github.com/boto/boto3/releases/tag/1.9.220) 
+ Python (botocore) – [1.12.200](https://github.com/boto/botocore/releases/tag/1.12.200) 
+  AWS CLI – [1.16.232](https://github.com/aws/aws-cli/releases/tag/1.16.232) 
+ 节点：[2.525.0](https://github.com/aws/aws-sdk-js/releases/tag/v2.525.0) 和 [3.27.0](https://github.com/aws/aws-sdk-js-v3/releases/tag/v3.27.0) 
+ Ruby – [3.58.0](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-core/CHANGELOG.md#3580-2019-07-01) 
+ C\$1\$1 – [1.7.174](https://github.com/aws/aws-sdk-cpp/releases/tag/1.7.174) 
+ .NET：[3.3.659.1](https://github.com/aws/aws-sdk-net/releases/tag/3.3.659.1)，您必须还包括 `AWSSDK.SecurityToken`。
+ PHP – [3.110.7](https://github.com/aws/aws-sdk-php/releases/tag/3.110.7) 

许多流行的 Kubernetes 附加组件（例如 [Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler)、[使用 AWS 负载均衡器控制器的路由互联网流量](aws-load-balancer-controller.md)和[适用于 Kubernetes 的 Amazon VPC CNI 插件](cni-iam-role.md)）支持服务账户的 IAM 角色。

为了确保您使用的是受支持的 SDK，请在构建容器时按照[用于在 AWS 上进行构建的工具](https://aws.amazon.com/tools/)中针对您的首选 SDK 的安装说明操作。

## 注意事项
<a name="_considerations"></a>

### Java
<a name="_java"></a>

使用 Java 时，*必须*在类路径中包括 `sts` 模块。有关更多信息，请参阅 Java SDK 文档中的 [WebIdentityTokenFileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/WebIdentityTokenFileCredentialsProvider.html)。