当前位置: 首页 > 知识库问答 >
问题:

从AWS SDK从AWS EC2访问S3,无需访问Id和密钥

田兴怀
2023-03-14

从AWS-EC2实例运行的AWS-SDK如何访问AWS-S3桶?

  1. 将AWS-EC2策略设置为可以访问S3存储桶而无需访问ID和密钥。
  2. aws-cli工具能够从EC2实例访问S3桶,而不需要任何访问ID和密钥。
  3. 如果aws-cli工具能够在没有访问ID和密钥的情况下访问S3,那么AWS-SDK在从EC2实例运行时也必须有办法做到这一点。

如何做到这一点?

共有1个答案

窦夜洛
2023-03-14

使用Amazon S3ClientBuilder.defaultClient()创建您的客户端。这使用了链接中提到的DefaultAWSCre的供应商链。

按以下顺序查找凭据的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。秘籍
  • 所有aws SDK和aws CLI共享的默认位置(~/.aws/credentials)上的凭据配置文件文件
  • 如果设置了AWS_container_Credentials_RELATIVE_URI“环境变量,并且安全管理器有权访问该变量,则通过Amazon EC2容器服务提供凭据。
  • 通过Amazon EC2元数据服务提供的实例配置文件凭据
 类似资料:
  • 我正在尝试从SparkSQL作业访问S3文件。我已经尝试了几个帖子的解决方案,但似乎没有工作。也许是因为我的EC2集群为Hadoop2.7运行了新的Spark2.0。 我是这样设置hadoop的: 我使用sbt程序集构建了一个uber-jar,使用: PS:如果我切换到s3n协议,我得到以下异常: java.io.ioException:方案s3n没有文件系统

  • 我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to

  • 问题内容: 我想将文件上传到S3,而不使用服务器的访问权限和密钥。AWS密钥应作为默认密钥。但是在服务器中运行以下命令,我可以访问它而无需提供任何访问权限和密钥。 aws s3 cp somefile.txt s3:// somebucket / 从Java代码无法访问,因为它无法加载凭据。下面是我的代码。 问题答案: 当您尝试从EC2实例连接到S3存储桶时,可以使用以下Java代码获取实例。 这

  • 我不确定我是不是漏了一步。 我有一个s3 bucket,我需要能够从一个AWS SDK PHP脚本访问我写的运行在我的EC2上。我创建了一个IAM角色以允许访问。 IAM Allow_S3_Access_to_EC2 我的Bucket策略中没有任何关于我的EC2甚至我附加的IAM角色的内容。我也需要在我的桶策略中添加一些东西吗?这就是我困惑的地方。 我所经历的是,当一个新的对象被创建,我试图从我的

  • 我在一个EC2实例上安装了AWS cli,我通过运行并给它我的AWSAccessKeyId和AWSSCretKey密钥对其进行了配置,因此如果我运行命令,它将返回我的s3存储桶的名称(称之为“mybucket”)。 但是,如果我尝试,我会得到一个如下错误 我认为通过运行aws配置并给它我的根密钥,我实际上给了aws cli它需要验证的一切?关于复制到S3桶而不是列出它们,我是否错过了什么?

  • 问题内容: Weblogic访问HTTPS服务器时遇到问题,我可以访问其他HTTPS网址,例如google或microsoft。尝试连接到URL的代码是: 我得到以下堆栈跟踪: 在Weblogic的控制台中,将以下设置设置为true:环境>服务器> [我的服务器]> SSL>高级>使用JSSE SSL 如果禁用该属性,则会得到以下堆栈跟踪: 我尝试访问的服务器具有经过验证的证书,浏览器没有对此进行