繁体   English   中英

创建一个 Java 应用程序,它将使用 ec2 角色访问本地的受限 s3 存储桶

[英]create a Java application, which will use an ec2 role to access the restricted s3 bucket on Local

  AmazonS3 s3;
  s3  = AmazonS3ClientBuilder.standard().withRegion(region).build();
  return s3;

我现在正在创建 s3 客户端而不提供任何凭据如果我使用任何 api 使用此 s3 客户端,它会抛出一条消息访问被拒绝。

  AWSCredentials credentials = new BasicAWSCredentials(accessKey, accessSecret);
  return AmazonS3ClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withRegion(region).build();

使用此代码可以正常工作,但我不想提供 accessKey 和 accessSecret。 我创建了一个具有 s3bucket 完全访问权限和 ec2 完全访问权限的角色。 现在如何创建一个 Java 应用程序,它将使用 ec2 角色访问本地的受限 s3 存储桶而无需访问密钥和秘密密钥

不要使用 BasicAwsCredentials 提供程序,而是使用com.amazonaws.auth.DefaultAWSCredentialsProviderChain来获取凭证实例。 DefaultAWSCredentialsProvider 按以下顺序进行。

按此顺序查找凭证的 AWS 凭证提供程序链:

  • 环境变量 - AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY(推荐,因为它们可以被除 .NET 之外的所有 AWS SDK 和 CLI 识别),或 AWS_ACCESS_KEY 和 AWS_SECRET_KEY(仅被 Java SDK 识别)
  • Java 系统属性 - aws.accessKeyId 和 aws.secretKey
  • Web 来自环境或容器的身份令牌凭证
  • 所有 AWS 开发工具包和 AWS CLI 共享的默认位置 (~/.aws/credentials) 中的凭证配置文件
  • 如果设置了 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 环境变量并且安全管理员有权访问该变量,则通过 Amazon EC2 容器服务提供的凭证,
  • 通过 Amazon EC2 元数据服务提供的实例配置文件凭证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM