我在AMAZON上创建了与EC2实例关联的IAM角色,正如我从亚马逊文档中了解到的,我可以检索临时AWS凭证并对其做一些事情。我读到了EC2元数据api(由InstanceProfileCredentialsProvider内部使用)仅适用于实例内的呼叫,不适用于来自外部世界的呼叫。 这意味着什么?在本地tomcat服务器上开发app时,如何与AWS进行安全通信?
答案 0 :(得分:4)
您应该使用默认提供商链和EC2实例配置文件。在您的情况下,由于您已将角色添加到您的实例,并且考虑到您使用的是Java SDK,因此需要调用:
MessageRejectedException
或者,如果您使用的是特定服务,例如AWS S3,则可以直接致电:
InstanceProfileCredentialsProvider mInstanceProfileCredentialsProvider = new InstanceProfileCredentialsProvider();
AWSCredentials credentials = mInstanceProfileCredentialsProvider.getCredentials();
有关详细信息:http://docs.aws.amazon.com/java-sdk/latest/developer-guide/java-dg-roles.html
只是提醒一下:您应该从不在您的代码中保留您的访问密钥和密钥。
答案 1 :(得分:3)
您的情况似乎是:
在这种情况下,不适合使用IAM角色。
相反,您需要为应用程序提供一组有效的AWS凭据(访问密钥+密钥)。这可以通过创建 IAM用户,复制提供的凭据并将其置于应用程序的配置中来完成。
从使用AWS开发工具包的应用程序进行API调用时,SDK会自动查找各个位置以获取有效凭据。对于Java,DefaultAWSCredentialsProviderChain按此顺序查找凭据:
因此,请将凭据存储在前三个选项之一中。