编程语言
首页 > 编程语言> > 没有访问权限的AWS S3上载和Java中的密钥

没有访问权限的AWS S3上载和Java中的密钥

作者:互联网

我想在不使用AWS服务器的访问权限和密钥的情况下将文件上传到S3. AWS键应作为默认值.但是,在服务器中运行以下命令,我可以访问它而无需提供任何访问和密钥.

aws s3 cp somefile.txt s3://somebucket/

Java代码,它无法访问,因为它无法加载凭据.
以下是我的代码.

AmazonS3 s3client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain());

解决方法:

当您尝试从EC2实例连接到S3存储桶时,可以使用以下Java代码获取s3client实例.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
              .withCredentials(new InstanceProfileCredentialsProvider(false))
              .build();

这是推荐的方法,因为应用程序不需要在属性文件中维护访问键.

>应创建IAM角色,并为此提供S3访问权限
角色.请参阅下面的示例政策.
>应将IAM角色分配给EC2实例

IAM角色的示例政策: –

{
        "Action": ["s3:PutObject",
        "s3:ListBucket",
        "s3:GetObject",
        "s3:DeleteObject"],
        "Resource": ["arn:aws:s3:::yourBucketName",
        "arn:aws:s3:::yourBucketName/*"],
        "Effect": "Allow",
        "Sid": "AllowBucketLinux"
    }

标签:java,amazon-web-services,amazon-s3,aws-sdk
来源: https://codeday.me/bug/20191002/1840942.html