Java 将AWS与Spring结合使用

Java 将AWS与Spring结合使用,java,spring,amazon-web-services,spring-boot,Java,Spring,Amazon Web Services,Spring Boot,我使用的是AWS教育帐户,我想在我的JavaSpring启动应用程序中使用S3 我尝试使用以下代码创建一个bucket,其中我使用vocareum页面的帐户详细信息中列出的密钥和密钥来代替访问密钥和密钥: @Repository public class S3Repository { private final AmazonS3 s3Client; public S3Repository() { AWSCredentials credentia

我使用的是AWS教育帐户,我想在我的JavaSpring启动应用程序中使用S3

我尝试使用以下代码创建一个bucket,其中我使用vocareum页面的帐户详细信息中列出的密钥和密钥来代替访问密钥和密钥:

@Repository
public class S3Repository {
    
    private final AmazonS3 s3Client;
    
    public S3Repository() {
        AWSCredentials credentials = new BasicAWSCredentials(
                "<AWS accesskey>",
                "<AWS secretkey>"
        );
        this.s3Client = AmazonS3ClientBuilder.standard()
                                             .withCredentials(new AWSStaticCredentialsProvider(credentials))
                                             .withRegion(Regions.US_EAST_1)
                                             .build();
    }
    
    public void createBucket(String name) {
        s3Client.createBucket(name);
    }

}
我尝试在IAM中创建新用户,但由于帐户限制,它没有创建访问密钥和密钥。每次我登录到aws教育帐户时,它都会生成新密钥,并且我正在使用当前密钥。使用YAML文件和自动布线S3客户端进行配置会得到相同的结果

是否需要包括任何其他配置


如果有其他解决方案,我希望避免创建新的常规帐户。

您可能已经知道,AWS Educate帐户在许多服务中都有限制

AWS教育帐户的凭据(访问密钥、密钥、会话令牌)将始终在2-3小时内更改。但是您可以使用这些信息来实现您想要的

您只需添加会话令牌以及访问密钥和密钥。以下是示例代码:

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
            "aws_access_key_id",
            "aws_secret_access_key",
            "aws_session_token");

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)).withRegion(
            Regions.US_EAST_1).build();

// do whatever you want with s3
...
请注意,在凭证有效期间,此程序将工作数小时。但是,当会话过期时,您将再次收到错误。这是AWS教育帐户的限制

src:

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
            "aws_access_key_id",
            "aws_secret_access_key",
            "aws_session_token");

final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(sessionCredentials)).withRegion(
            Regions.US_EAST_1).build();

// do whatever you want with s3
...