为什么这个错误?连接到sts.amazonaws.com:443 [sts.amazonaws.com/54.239.29.25]失败:连接超时:com.amazonaws.SdkClientException
来源:爱站网时间:2021-09-09编辑:网友分享
当假设在基于Java的lambda中使用STS客户端的IAM角色时,有没有人面对并解决了这个错误 - 连接到sts.amazonaws.com:443 [sts.amazonaws.com/54.239.29.25]失败:连接超时:com ... 。
问题描述
当在基于Java的lambda中使用STS客户端假设IAM角色时,是否有人面对并解决了此错误 - Connect to sts.amazonaws.com:443 [sts.amazonaws.com/54.239.29.25] failed: connect timed out: com.amazonaws.SdkClientException
我想知道 - 当我在我的pom中有aws-java-sdk-stsclient
依赖,因此在我的阴影罐中,为什么会有互联网电话?由于lambda是在配置了SG的VPC中,因此阻止了Internet访问。
注 - 我必须承担角色才能从另一个AWS账户访问S3上的文件。更新IAM信任策略以使列表访问不是一种选择。
这是我在我的pom中的依赖 -
com.amazonaws aws-java-sdk-sts 1.11.163
这是我的java类,我假设使用sts客户端的角色 -
public class AWSTokenManager {
public void awsTokenManager() {
System.out.println("Inside awsTokenManager method");
STSAssumeRoleSessionCredentialsProvider stsAssumeRoleSessionCredentialsProvider = new STSAssumeRoleSessionCredentialsProvider.Builder("role-arn-here", "us-east-1b")
.withStsClient(AWSSecurityTokenServiceClientBuilder.standard().build())
.withRoleSessionDurationSeconds(900)
.build();
System.out.println("SessionCredentials awsaccesskeyid is - " + stsAssumeRoleSessionCredentialsProvider.getCredentials().getAWSAccessKeyId());
System.out.println("SessionCredentials awsaccesskeyid is - " + stsAssumeRoleSessionCredentialsProvider.getCredentials().getAWSSecretKey());
System.out.println("SessionCredentials awsaccesskeyid is - " + stsAssumeRoleSessionCredentialsProvider.getCredentials().getSessionToken());
}
解决方法:
为什么会有互联网电话?
为什么没有?您正在使用STS客户端访问STS服务。
除非您创建并配置了VPC Endpoint for STS(您没有提到),否则需要通过Internet访问STS端点以发送请求以调用AssumeRole
。