【问题标题】:How to manage AWS credentials when running Docker container with Visual Studio 2017使用 Visual Studio 2017 运行 Docker 容器时如何管理 AWS 凭证
【发布时间】:2018-09-29 14:22:44
【问题描述】:

我有一个使用 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 中,因为该文件已提交到源代码管理。

编辑

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

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

我不知道怎么做,因为我对 Docker 很陌生。

【问题讨论】:

  • 你检查this了吗?
  • @Venkatesh,是的,我确实检查过,它提供了在 AWS 上部署时管理 AWS 凭证的解决方案(使用 IAM 角色)。但我的问题是关于在我的开发机器上运行容器。

标签: amazon-web-services docker visual-studio-2017


【解决方案1】:

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

version: '3'

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

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

【讨论】:

  • 为什么无法挂载包含区域详细信息的配置文件?
  • 不使用docker compose怎么办?
【解决方案2】:

感谢Joe's answer,因为/root 对我来说很关键。这就是我的docker-compose.yml 在 Java/Maven/Mac OSX 环境下的样子:

volumes:
  # Map in the aws directory
  - ~/.aws:/root/.aws:ro

:RO 当然是只读的。我没有必要明确定义 Region 和 Profile。

【讨论】:

  • ":RO 使其成为只读" - 有用的知识,我不知道这一点。虽然目前我只运行图像,但我相信不会尝试修改它。
  • Joe,有时这不是信任问题,如果您使用 ssh 私钥做同样的事情,则所需的权限是 0600,但由于它由不同于 root 的用户拥有您正在映射它,:ro 掩盖了它实际上并不由 ssh 的 root 拥有的事实,因为它的行为等同于 0600。
猜你喜欢
  • 2018-07-01
  • 2021-08-06
  • 1970-01-01
  • 2017-09-19
  • 2016-07-25
  • 2017-11-02
  • 2019-05-28
  • 2019-04-05
  • 1970-01-01
相关资源
最近更新 更多