繁体   English   中英

如何使用与EC2实例关联的IAM角色从Amazon检索临时AWS凭证(在Java中)?

[英]How to retrieve temporary AWS credentials from Amazon using IAM role associated with the EC2 instance(in java)?

我在AMAZON上创建了与EC2实例相关联的IAM角色,据我从亚马逊文档了解,我可以检索临时AWS凭证并对此进行一些处理。用于来自实例内部而不是来自外部世界的呼叫。 这是什么意思 在本地tomcat服务器上开发应用程序时,如何与AWS安全通信?

您应该使用默认提供程序链和EC2实例配置文件 对于您的情况,由于您已经将角色添加到实例中,并且考虑到您正在使用Java SDK,因此需要调用:

InstanceProfileCredentialsProvider mInstanceProfileCredentialsProvider = new InstanceProfileCredentialsProvider();
AWSCredentials credentials = mInstanceProfileCredentialsProvider.getCredentials();

或者,如果您使用的是特定服务,例如AWS S3,则可以直接调用:

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

有关更多信息: http : //docs.aws.amazon.com/java-sdk/latest/developer-guide/java-dg-roles.html

提醒您: 永远不要在代码中留下访问密钥和密钥秘密。

看来您的情况是:

  • 您有一个不是 Amazon EC2实例的计算机上运行的应用程序
  • 您希望使该应用程序能够对AWS服务进行API调用

在这种情况下, 不适合使用IAM角色

相反,您将需要为您的应用程序提供一组有效的AWS凭证(访问密钥+秘密密钥)。 这可以通过创建IAM用户 ,复制提供的凭据并将其放置在应用程序的配置中来完成。

从使用AWS开发工具包的应用程序进行API调用时,开发工具包将自动在各个位置查找有效凭证。 如果是Java, 则按以下顺序查找凭据的DefaultAWSCredentialsProviderChain

  • 环境变量 -AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY(建议使用,因为除了.NET以外,所有AWS开发工具包和CLI都可以识别它们,或者AWS_ACCESS_KEY和AWS_SECRET_KEY(仅Java SDK可以识别)
  • Java系统属性 -aws.accessKeyId和aws.secretKey
  • 所有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