Amazon web services 假设STS客户端不工作,Java上的AWS文档?
作为预请求,请参见第页 所以我可以创建一个小应用程序,它实际上是他们提供的代码的复制粘贴。它确实为给定的用户运行,我已经将全局变量更改为正确的值,并且我可以通过AWS CLI承担我想要的STS角色。但是,此代码仍然不会承担适当的角色 我将代码导出为可执行jar,将其放到我的EC2实例(基本AWS linux实例)上,然后运行它。我确实让它从STS凭证中输出正确的密钥,但是一旦它到达S3客户端,我就得到了拒绝访问的消息(403) 我的职责如下:Amazon web services 假设STS客户端不工作,Java上的AWS文档?,amazon-web-services,amazon-s3,aws-java-sdk,aws-sts,Amazon Web Services,Amazon S3,Aws Java Sdk,Aws Sts,作为预请求,请参见第页 所以我可以创建一个小应用程序,它实际上是他们提供的代码的复制粘贴。它确实为给定的用户运行,我已经将全局变量更改为正确的值,并且我可以通过AWS CLI承担我想要的STS角色。但是,此代码仍然不会承担适当的角色 我将代码导出为可执行jar,将其放到我的EC2实例(基本AWS linux实例)上,然后运行它。我确实让它从STS凭证中输出正确的密钥,但是一旦它到达S3客户端,我就得到了拒绝访问的消息(403) 我的职责如下: EC2没有角色,但在凭证文件中有一个用户访问信息(
- EC2没有角色,但在凭证文件中有一个用户访问信息(我们称他为MyUser)
- MyUser能够承担STS角色和IAM功能(IAM功能不是必需的,只是出于测试目的)
- STS角色只能由MyUser设置,并允许完全访问帐户中的S3
AssumeRoleResult response = client.assumeRole(request);
其中,AssumeRole函数返回一个AssumeRoleResult对象,该对象的凭据与从GetSessionTokenRequest类返回的凭据不同。返回的凭据长度/大小不同,由于某些原因无效
修复方法:
其上显示的此代码无效
stsClient.assumeRole(roleRequest);
GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest();
getSessionTokenRequest.setDurationSeconds(900);
GetSessionTokenResult sessionTokenResult = stsClient.getSessionToken(getSessionTokenRequest);
Credentials sessionCredentials = sessionTokenResult.getCredentials();
上述代码应替换为以下代码
您是否使用相同的凭据从同一台计算机上运行此代码和CLI?是。EC2没有权限。它具有MyUser的凭据,因此它充当用户。我在此实例上运行cli。我调用假定角色CLI命令并正确调整环境变量。当我尝试S3命令时,它们会工作。
AssumeRoleResult response = stsClient.assumeRole(roleRequest);
Credentials sessionCredentials = response.getCredentials();