【问题标题】:Testing application locally that uses IAM Role在本地测试使用 IAM 角色的应用程序
【发布时间】:2016-08-02 16:52:30
【问题描述】:

我有一个在 S3 中添加文件的 Java 应用程序。此应用程序在 EC2 实例中运行。

我们正在使用 IAM 角色。因此,我们已将所需的 IAM 角色附加到此 EC2 实例。

那里一切都很完美。

但我们也想在我的笔记本电脑上本地测试应用程序。每次需要测试时都很难将应用程序上传到 EC2。

我们如何在不更改代码的情况下动态切换,以便我可以在我的笔记本电脑上测试它(使用 accesskey 和 secretKey)以及在 EC2 中使用 IAM 角色?

【问题讨论】:

  • 不是您问题的答案。如果你真的想让它在你的本地机器上工作,那么你应该有自己的用户,并且应该可以访问你的应用程序的所有资源。

标签: amazon-web-services amazon-ec2 amazon-iam


【解决方案1】:

AWS SDK 使用凭证提供者链 来定位凭证。顺序因语言而异,但通常会检查:

  • 环境变量
  • 本地配置文件
  • EC2 实例元数据

因此,如果您想在本地运行应用程序,您可以提供凭据文件或在环境变量中设置凭据。代码将自动定位凭证,就像在 EC2 实例上一样。

参考资料:

【讨论】:

  • 如果我们使用 DefaultCredentialsProviderChain,这很好。但是我们正在使用 InstanceProfileCredentialsProvider 来利用 IAM 角色。 docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/…InstanceProfileCredentialsProvider 首选 IAM 角色
  • 切换到使用提供者链。它将自动使用实例配置文件提供程序。
【解决方案2】:

如果您使用的是类似 docker 的实例,那么将环境变量设置为 docker run 会很容易。

docker run --env-file=FILE

docker run -it --rm -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_KEY

参考:https://hub.docker.com/r/pmcjury/aws-cli/

【讨论】:

  • @sag 询问的是 IAM 角色的使用情况,而不是 IAM 用户。此答案仅显示如何将环境变量传递到 docker 容器中。
  • @steviejay ,抱歉错过了那部分。为了使用基于角色的访问,我们还需要传递 AWS_SESSION_TOKEN。它的价值是不断变化的。但这是一项繁琐的工作,不鼓励在 EC2 外部使用(由 AWS 管理)参考:docs.aws.amazon.com/cli/latest/reference/sts/…
猜你喜欢
  • 2014-03-18
  • 2013-01-17
  • 2020-10-23
  • 2015-05-22
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 2021-12-07
  • 2016-04-14
相关资源
最近更新 更多