Amazon web services 如何在AWS Java SDK中使用IAM角色

Amazon web services 如何在AWS Java SDK中使用IAM角色,amazon-web-services,amazon-sqs,amazon-iam,Amazon Web Services,Amazon Sqs,Amazon Iam,我的用例如下所示: 我需要使用JAVA SDK并借助IAM角色将一些数据推送到AWS SQS队列中(不使用凭证提供程序实现) 有没有办法做到这一点? 提前感谢您的帮助。您只能在EC2实例、ECS容器和Lambda函数上使用基于角色的身份验证。不可能在本地或本地服务器上使用它们 如果无法通过任何其他方法找到凭据,将自动选择EC2实例角色。您还可以创建一个自定义对象,只需向其注入 AWSCredentialsProviderChain myCustomChain = new AWSCredentia

我的用例如下所示:

我需要使用JAVA SDK并借助IAM角色将一些数据推送到AWS SQS队列中(不使用凭证提供程序实现)

有没有办法做到这一点?


提前感谢您的帮助。

您只能在EC2实例、ECS容器和Lambda函数上使用基于角色的身份验证。不可能在本地或本地服务器上使用它们

如果无法通过任何其他方法找到凭据,将自动选择EC2实例角色。您还可以创建一个自定义对象,只需向其注入

AWSCredentialsProviderChain myCustomChain = new AWSCredentialsProviderChain(new InstanceProfileCredentialsProvider());

有关更多信息:

已经有一段时间了,但目前情况并非如此,现在可以在Java SDK中与用户一起使用假定角色。您可以在
.aws/credentials
文件中配置凭据,如下所示:

[useraccount]
aws_access_key_id=<key>
aws_secret_access_key=<secret>

[somerole]
role_arn=<the ARN of the role you want to assume>
source_profile=useraccount
[useraccount]
aws\u访问\u密钥\u id=
aws\u密码\u访问\u密钥=
[某个角色]
角色学习=
source\u profile=useraccount
然后,启动时,设置一个环境变量:
AWS\u PROFILE=somerole

SDK将使用
useraccount
中定义的凭据,使用您提供的
role\u arn
调用
assumeRole
。当然,您需要确保具有这些凭据的用户具有担任该角色的权限

请注意,如果您的项目中没有包含完整的Java SDK(即,您只包含用于所需服务的库),那么您还需要在类路径中包含
aws Java SDK sts
库,这样才能工作


也可以使用
STSAssumeRoleSessionCredentialsProvider
以编程方式执行所有这些操作,但这需要您直接配置所有服务,因此可能不如配置文件方法方便,因为配置文件方法只适用于所有服务。

谢谢您的回复!IAM角色也可以在ECS级别(任务/容器)上关联。不知道你为什么说它的限制只在EC2级别。对不起,我知道这是一个新的功能,这就是为什么我忘记了。Lambda函数也可以使用角色。问题是关于不使用凭据,但在您的回答中,您仅间接使用凭据,对吗?谢谢,这确实帮助了我。顺便说一句,gradle中的aws java sdk sts是软件.amazon.awssdk:sts:VERSION(已确认它与VERSION=
2.5.29
一起工作)Gradle与此无关。我想你的意思是:使用AWS SDK for Java 2.x时要使用的工件是
软件。amazon.awssdk:sts
vs
com.amazonaws:AWS Java SDK sts
for AWS SDK for Java 1.x