我有一个使用 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(使用前将#替换为@)