正在本地测试使用IAM角色的应用程序



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

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

那里的一切都很完美。

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

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

AWS SDK使用凭据提供程序链来定位凭据。订单因语言而异,但通常会检查:

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

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

参考文献:

  • 在AWS SDK for Java中提供AWS凭据
  • .Net配置AWS凭据
  • AWS Python SDK(boto3)
  • PHP凭据供应链
  • (其他语言的SDK也类似)

您可以通过以下方式提供自己的凭证搜索顺序:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/AWSCredentialsProviderChain.html

因此,在您的情况下,订单将是:

  1. InstanceProfileCredentialsProvider或EC2ContainerCredentialsProviderWrapper
  2. AWSStaticCredentialsProvider或EnvironmentVariableCredentialsProvider

将您的所有提供者添加到提供者链构造函数中,然后将其传递给AWS客户端。

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

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/

相关内容

  • 没有找到相关文章