java - 在 Java 中没有访问权限和 key 的 AWS S3 上传

标签 java amazon-web-services amazon-s3 aws-sdk

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

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();

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

  • 应创建 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 - 在 Java 中没有访问权限和 key 的 AWS S3 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44062813/

相关文章:

java - AWS RDS CPU 利用率 100%

node.js - NodeJS 如何从 aws s3 存储桶将文件下载到磁盘?

azure - 与外部客户共享文件和数据

linux - yum 在 aws linux 上安装 mongodb 失败 : no package available

java - 无法从 LSA 缓存获取 TGT 票证

java - 在运行时更改 Autowiring 对象

java - 如何使用 writeObject() 将 txt 导出到字符串中的路径?

database - 扫描 AWS DynamoDB 的替代方案?

node.js - 如何使用 Node Js将文件发送到aws s3?

java - 集合在 Java 中是最终的是什么意思?