如何在 EC2 和 SQS 之间以及本地计算机到 SQS 之间进行身份验证
How to authenticate between EC2 and SQS and local machine to SQS
我正在尝试在我的本地计算机 和 EC2 实例上使用 SQS 进行身份验证。在我的本地机器上,我可以成功使用配置文件:
ProfileCredentialsProvider p = ProfileCredentialsProvider.builder().profileName("my-profile").build();
但是,我不确定我需要做什么才能从 EC2 进行身份验证,我是否需要添加一个 IAM 角色并将 EC2 权限授予 SQS(我对 AWS Auth 很陌生)?
我以为我可以对 EC2 使用 InstanceProfileCredentialsProvider
,但这没有用,但可能是因为我缺少上面的角色权限步骤?
SqsClient sqsClient = SqsClient.builder().credentialsProvider(p)
.region(Region.US_WEST_2)
.build();
我在猜测,但我认为最终结果将是:
ProfileCredentialsProvider p = ProfileCredentialsProvider.builder().profileName("my-profile").build();
InstanceProfileCredentialsProvider i = InstanceProfileCredentialsProvider.builder().build();
sqsClient = SqsClient.builder()
.credentialsProvider(p)
.credentialsProvider(i)
.region(Region.US_WEST_2)
.build();
我正在使用 aws SDK 版本 2 software.amazon.awssdk:sqs:2.17.24
对于 EC2,首选方法是将 IAM 角色分配给具有所需 SQS 权限的实例。
我建议阅读 default credential provider 的工作原理。只要您提供默认凭据提供程序查找的其中一种凭据方法,您就无需在代码中执行任何特殊操作即可使用这些凭据。
例如,当您的代码在 EC2 上 运行 时,它可以自动获取分配给该实例的 IAM 角色,并且您的代码可以如下所示:
sqsClient = SqsClient.builder().build();
请注意,没有凭据提供程序传递给客户端。此外,默认情况下,它会使用 EC2 实例 运行 所在的相同区域,因此您也不需要传递该区域。
对于 运行 本地,您可以在 运行 您的代码之前简单地设置 AWS_PROFILE
环境变量。
我正在尝试在我的本地计算机 和 EC2 实例上使用 SQS 进行身份验证。在我的本地机器上,我可以成功使用配置文件:
ProfileCredentialsProvider p = ProfileCredentialsProvider.builder().profileName("my-profile").build();
但是,我不确定我需要做什么才能从 EC2 进行身份验证,我是否需要添加一个 IAM 角色并将 EC2 权限授予 SQS(我对 AWS Auth 很陌生)?
我以为我可以对 EC2 使用 InstanceProfileCredentialsProvider
,但这没有用,但可能是因为我缺少上面的角色权限步骤?
SqsClient sqsClient = SqsClient.builder().credentialsProvider(p)
.region(Region.US_WEST_2)
.build();
我在猜测,但我认为最终结果将是:
ProfileCredentialsProvider p = ProfileCredentialsProvider.builder().profileName("my-profile").build();
InstanceProfileCredentialsProvider i = InstanceProfileCredentialsProvider.builder().build();
sqsClient = SqsClient.builder()
.credentialsProvider(p)
.credentialsProvider(i)
.region(Region.US_WEST_2)
.build();
我正在使用 aws SDK 版本 2 software.amazon.awssdk:sqs:2.17.24
对于 EC2,首选方法是将 IAM 角色分配给具有所需 SQS 权限的实例。
我建议阅读 default credential provider 的工作原理。只要您提供默认凭据提供程序查找的其中一种凭据方法,您就无需在代码中执行任何特殊操作即可使用这些凭据。
例如,当您的代码在 EC2 上 运行 时,它可以自动获取分配给该实例的 IAM 角色,并且您的代码可以如下所示:
sqsClient = SqsClient.builder().build();
请注意,没有凭据提供程序传递给客户端。此外,默认情况下,它会使用 EC2 实例 运行 所在的相同区域,因此您也不需要传递该区域。
对于 运行 本地,您可以在 运行 您的代码之前简单地设置 AWS_PROFILE
环境变量。