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

AWS InstanceProfileCre的提供者-凭据从哪里来?

娄鹤轩
2023-03-14

在我们的应用程序中,我们使用InstanceProfileCredentialsProvider访问AmazonS3存储桶,但在我们的一些环境中,凭据被弄乱了。

AWS文件(https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-roles.html)内容如下:

如果应用程序使用默认构造函数创建AWS客户端,则客户端将使用默认凭据提供程序链按以下顺序搜索凭据:

  1. 在Java系统属性中:aws.accessKeyId和aws.secretKey.
  2. 系统环境变量:AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。
  3. 在默认凭据文件中(该文件的位置因平台而异)。
  4. 如果设置了AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量,并且安全管理器有权访问该变量,则通过Amazon EC2容器服务传递凭据。
  5. 在实例配置文件凭据中,存在于与EC2实例的IAM角色关联的实例元数据中。
  6. 来自环境或容器的Web标识令牌凭据。

有没有办法知道InstanceProfileCredentialsProvider从哪里获得凭据?从它的源代码来看,它非常谨慎,并且没有通过API或日志共享太多细节。

共有1个答案

弘承运
2023-03-14

InstanceProfileCredentialsProvider从EC2实例元数据服务获取凭据。如果启用了元数据endpoint,则在EC2实例上连续运行的API服务。

APIendpoint-http://169.254.169.254/latest/meta-data/latest/meta-data/iam/security-credentials/

https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/index.html?com/amazonaws/auth/InstanceProfileCredentialsProvider.html

在上面的情况下,运行Java代码的EC2实例应该有一个附加到EC2实例的IAM角色,EC2实例可以访问S3资源。

最有可能的是InstanceProfileCre的供应商正在使用EC2MetadataClient.java

https://github.com/aws/aws-sdk-java/blob/7b1e5b87b0bf03456df9e77716b14731adf9a7a7/aws-java-sdk-core/src/main/java/com/amazonaws/internal/EC2MetadataClient.java

 类似资料:
  • 我已经开始调查凭证提供者是如何工作的,但由于糟糕的文档,我被困在了几个地方。 我有控制台应用程序(有点像ssh服务器),当我远程连接到这个应用程序和认证(没有登录),我希望它能够转发这些凭据凭证提供商,我希望CP登录用户(创建会话)。 我还注意到,在文档中,它说方法总是在之后被调用。但是我添加了日志,而且在之后永远不会被调用。 正如我所知,当应用程序提供凭据时,会调用。我不明白通过申请提供证明是什

  • 目前我正试图让Jenkins与AWS codepipeline合作。我在EC2实例上运行Jenkins。然而,由于某些原因,Jenkins无法加载AWS的默认凭据。我尝试了以下选项: < li >使用“aws configure”命令初始化aws凭据 < li >使用Jenkins中的aws-credentials插件 < li >执行导出AWS_ACCESS_KEY_ID=....和AWS_SE

  • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge

  • 我正在使用Akka HTTP作为REST支持,我需要在我正在开发的服务器的另一部分中使用Actors。我的理解是,通常需要在整个应用程序中使用一个ActorSystem实例。从akka.Http.scaladsl.Http.apply()的定义来看,当我使用Http方法时,就像下面的代码片段-- ---Http对象的apply()方法被提供了一个隐式ActorSystem实例...为了便于参考,h

  • 我试图运行迁移与自定义DbContext。 这会引发迁移异常,因为未实现无参数构造函数: “目标上下文”系统。数据实体DbContext“”不可构造。添加默认构造函数或提供IDbContextFactory的实现。 构造函数需要参数,但我已经有了

  • 提供者(Provider) 是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。 EtherscanProvider 和 InfuraProvider 提供连接公开的第三方节点服务提供商,无需自己运行任何以太坊节点。 JsonRpcProvider 和 IpcProvider 允许连接到我们控制或可以访问的以太坊节点(包括主网,测试网,权威证明(PoA)节点或Ganache)