使用 Visual Studio 2017 运行 Docker 容器时如何管理 AWS 凭证

2024-01-09

我有一个使用 Visual Studio 2017 开发的 .NET Core 2.0 控制台应用程序。 launchSettings.json 文件设置一个环境变量,允许其使用开发人员的默认 AWS 凭证

"environmentVariables": {
  "AWS_PROFILE": "default"
  ...
}

我现在已向 VS 解决方案添加了 Docker 支持,并尝试在 Linux Docker 容器中运行该应用程序。当然,它会失败,但会出现以下异常,因为它无法找到配置文件:

Amazon.Runtime.AmazonClientException: Unable to find the 'default' profile in CredentialProfileStoreChain.

在开发环境中将 AWS 凭证传递到 Docker 容器的最佳方式是什么?我显然不想将我的凭据作为环境变量放在 launchSettings.json 中,因为该文件已提交给源代码管理。

EDIT

需要明确的是,我正在寻找一种解决方案,允许我的 Docker 容器在开发人员计算机上的 Visual Studio 2017 中进行调试时访问开发人员的凭据。发布版本将部署到 AWS,并且 IAM 角色将不再需要凭证。凭证位于文件中%USERPROFILE%\.aws\credentials我正在寻找一种解决方案,使我能够在 Docker 容器中使用它们,而不会将它们暴露在其他地方:因此我不想将它们放在 launchSettings.json 或启动 Docker 容器的任何其他文件中。

我设想的解决方案可能涉及在 Docker 容器中安装 Windows 驱动器(或者至少是目录)%USERPROFILE%\.aws\)然后设置一个环境变量(AWS_SHARED_CREDENTIALS_FILE?)在 Docker 容器中,以便 AWS 自动找到凭证文件。

但我不知道如何做到这一点,因为我对 Docker 很陌生。


我寻求的解决方案是编辑docker-compose.override.yml通过 Visual Studio Tools for Docker 添加的文件,并添加以下行:

version: '3'

services:
  mydockerapp:
    volumes:
      - ${USERPROFILE}/.aws:/root/.aws
    environment:
      - AWS_REGION=(your region)
      - AWS_PROFILE=default

这会将包含 AWS 凭证的 .aws 目录挂载到 Docker 容器中的适当位置(/root是默认的 HOME 目录),并设置环境变量来选择配置文件和区域。这launchSettings.json在 Docker 中运行时不使用 .NET Core 项目中的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Visual Studio 2017 运行 Docker 容器时如何管理 AWS 凭证 的相关文章

随机推荐