You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何记录AWS S3Client当前使用的IAM角色?

如何记录AWS S3Client使用的IAM角色?

有两种可靠的方式可以获取并记录S3Client实际使用的IAM角色信息:

1. 通过代码直接获取凭证中的角色详情

AWS SDK v2的S3Client会使用默认凭证链加载凭证,你可以通过客户端的配置获取凭证提供者,进而解析出角色相关信息(仅当使用STS角色凭证时有效):

S3Client s3Client = S3Client.builder()
        .region(Region.of(region))
        .build();

// 获取客户端的凭证提供者
CredentialsProvider credentialsProvider = s3Client.serviceConfiguration().credentialsProvider();
// 解析当前生效的凭证
AwsCredentials credentials = credentialsProvider.resolveCredentials();

// 判断是否为STS角色凭证(通过角色临时凭证访问时会是该类型)
if (credentials instanceof StsAwsCredentials) {
    StsAwsCredentials stsCredentials = (StsAwsCredentials) credentials;
    System.out.println("当前S3Client使用的IAM角色ARN: " + stsCredentials.arn());
    System.out.println("角色会话名称: " + stsCredentials.sessionName());
}

如果是通过AWS_ROLE_ARN等环境变量注入的Web身份凭证,解析出的StsAwsCredentials同样会包含完整的角色ARN。

2. 启用SDK日志打印凭证获取过程

通过配置日志框架(如Logback、Log4j),将AWS SDK凭证相关包的日志级别设为DEBUG,就能在日志中看到凭证加载的详细过程,包括使用的角色信息:

以Logback为例,在配置文件中添加:

<logger name="software.amazon.awssdk.auth.credentials" level="DEBUG"/>

日志输出中会包含类似如下的内容:

Loading credentials from WebIdentityTokenCredentialsProvider(...)
Retrieved credentials from STS: StsAwsCredentials(arn=arn:aws:sts::123456789012:assumed-role/your-role-name/session-name, sessionName=session-name, ...)


内容的提问来源于stack exchange,提问作者user1555190

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:42:17