如何使本地计算机承担 IAM 角色



我有什么

  1. IAM 用户
  2. 具有 s3,sqs 权限的 IAM 角色
  3. 弹簧靴架
  4. 利用 AWS 资源的 Web 服务 对 AWS 进行身份验证的服务 基于角色(未提供密钥)

我想要什么

  1. 在本地运行应用程序
  2. 使本地计算机承担所需 IAM 角色的某种方法

AWS 资源初始化

AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new EC2ContainerCredentialsProviderWrapper())
.withRegion(Regions.DEFAULT_REGION)
.withForceGlobalBucketAccessEnabled(true)
.build();
AmazonSQS amazonSQSClient = amazonSQSClient = AmazonSQSClientBuilder.standard()
.withCredentials(new EC2ContainerCredentialsProviderWrapper())
.withRegion(Region.getRegion(regions).getName())
.build();

现在当我运行应用程序并进行调用时 显然AWS访问被拒绝

我找不到任何教程,我可以在本地机器上进行某些配置并在本地机器上承担所需的角色。

我们经常遇到这个问题。但是您的情况更简单,因为您使用的是DefaultCredentialProviderChain。该链在环境中搜索凭证,然后搜索 IAM(我认为按此顺序)。

我的建议是忘记嘲笑IAM,而是嘲笑服务。在环境中设置一些虚拟凭证,以便提供程序链使用这些凭证,而不是尝试使用 IAM。

对于 S3:https://github.com/adobe/S3Mock

对于 SQS:https://github.com/MeteoGroup/sqsmock

现在,如果您绝对决心嘲笑IAM,请查看以下内容: https://github.com/NYTimes/mock-ec2-metadata

请注意,这样做的设置不值得您从中得到什么。扬子晚报

您可能还对以下内容感兴趣: https://github.com/localstack/localstack

但我还没有使用那个(还没有)。

编辑:为什么嘲笑IAM很难?因为 iam 凭证来自元数据终端节点,即http://169.254.168.254.因此,要模拟 IAM,您必须模拟元数据终端节点。这通常涉及某种iptables黑客攻击。

相关内容

  • 没有找到相关文章

最新更新