从Spring Boot连接到Amazon S3,无需访问密钥和密钥
我无法通过IAM角色连接到Amazon S3。有人告诉我,我不能使用从Spring Boot连接到Amazon S3,无需访问密钥和密钥,spring,spring-boot,amazon-s3,Spring,Spring Boot,Amazon S3,我无法通过IAM角色连接到Amazon S3。有人告诉我,我不能使用密钥或访问密钥,,但如果没有这个,我找不到任何方法 实际上,我得到的是: public class S3Config { @Autowired Environment env; @Value("${amazon.aws.accesskey}") private String awsId; @Value("${amazon.aws.secretkey}") private St
密钥
或访问密钥,
,但如果没有这个,我找不到任何方法
实际上,我得到的是:
public class S3Config {
@Autowired
Environment env;
@Value("${amazon.aws.accesskey}")
private String awsId;
@Value("${amazon.aws.secretkey}")
private String awsKey;
@Value("${amazon.aws.role}")
private String roleArn;
@Value("${amazon.aws.region}")
private String region;
@Bean
@Scope("prototype")
@Primary
public AmazonS3Client s3client() {
BasicAWSCredentials awsCreds = new BasicAWSCredentials("", "");
AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.withRegion(Regions.fromName(region))
.build();
AssumeRoleRequest assumeRequest = new AssumeRoleRequest().withRoleArn(roleArn).withDurationSeconds(3600)
.withRoleSessionName("Test");
AssumeRoleResult roleResponse = stsClient.assumeRole(assumeRequest);
Credentials sessionCredentials = roleResponse.getCredentials();
BasicSessionCredentials awsCredentials = new BasicSessionCredentials(
sessionCredentials.getAccessKeyId(),
sessionCredentials.getSecretAccessKey(),
sessionCredentials.getSessionToken());
AmazonS3Client s3ClientRole = (AmazonS3Client) AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
.withRegion(Regions.fromName(region))
.build();
AmazonS3Client s3Client = s3ClientRole;
return s3Client;
}
}
如果在我创建
awsCreds
对象的行上,我正确地用值填充它我从应用程序.properties
获取,如果它能正确执行所有操作。但是如果我将其留空,我将永远无法执行行stsClient.assumeRole(assumeRequest)代码>并且它给了我连接超时错误。我认为您应该遵循以下文档:
它应该跟随你一步一步地解决你的问题
基本上,IAM角色允许特定的“资源”(如EC2实例)连接到该服务,因此您可以将客户端配置为获取临时凭据,以便对其进行“身份验证”和“授权”。我认为您应该遵循以下文档:
它应该跟随你一步一步地解决你的问题
基本上,IAM角色允许特定的“资源”(如EC2实例)连接到该服务,因此您可以将客户端配置为获取临时凭据,以便对其进行“身份验证”和“授权”。我检查了它,我也这么做了,但它仍然无法访问我如果您在您的计算机上本地使用它,它将永远不会像这样工作,因为您的计算机与您创建的IAM角色没有关联。这里有一些解决方法,我检查了它,我做了同样的操作,但它仍然无法访问我如果您在您的机器上本地使用它,它将永远不会像这样工作,因为您的机器与您创建的IAM角色没有关联。这里还有一些变通办法