Joe*_*Joe 1 amazon-web-services docker visual-studio-2017
我有一个使用Visual Studio 2017开发的.NET Core 2.0控制台应用程序.unitSettings.json文件设置了一个环境变量,允许它使用开发人员的默认AWS凭据
"environmentVariables": {
"AWS_PROFILE": "default"
...
}
Run Code Online (Sandbox Code Playgroud)
我现在已经为VS解决方案添加了Docker支持,并且我正在尝试在Linux Docker容器中运行该应用程序.当然它失败并出现以下异常,因为它无法找到配置文件:
Amazon.Runtime.AmazonClientException: Unable to find the 'default' profile in CredentialProfileStoreChain.
Run Code Online (Sandbox Code Playgroud)
在开发环境中将AWS凭据传递给Docker容器的最佳方法是什么?我显然不希望将我的凭据作为环境变量放在launchSettings.json中,因为此文件已提交给源代码控制.
编辑
为了清楚起见,我正在寻找一种解决方案,允许我的Docker容器在开发人员的机器上的Visual Studio 2017中进行调试时访问开发人员的凭据.发布版本将部署到AWS,IAM角色将排除对凭据的需求.凭据在文件中%USERPROFILE%\.aws\credentials,我正在寻找一种解决方案,使我能够在Docker容器中使用它们而不将它们暴露在别处:因此我不想将它们放在launchSettings.json或任何其他启动的文件中Docker容器.
我设想的解决方案可能涉及将Windows驱动器安装在Docker容器(或至少是目录
%USERPROFILE%\.aws\)中,然后AWS_SHARED_CREDENTIALS_FILE在Docker容器中设置环境变量(?),以便AWS自动查找凭证文件.
我不知道怎么做,因为我对Docker很新.
我采用的解决方案是编辑docker-compose.override.ymlVisual Studio Tools for Docker添加的文件,并添加以下行:
version: '3'
services:
mydockerapp:
volumes:
- ${USERPROFILE}/.aws:/root/.aws
environment:
- AWS_REGION=(your region)
- AWS_PROFILE=default
Run Code Online (Sandbox Code Playgroud)
这会将包含AWS凭据的.aws目录安装在Docker容器中的适当位置(/root是默认的HOME目录),并设置环境变量以选择配置文件和区域.launchSettings.json在Docker中运行时,不使用.NET Core项目中的文件.
感谢乔的回答,这/root对我来说很关键。这是我的docker-compose.ymlJava/Maven/Mac OSX 环境的样子:
volumes:
# Map in the aws directory
- ~/.aws:/root/.aws:ro
Run Code Online (Sandbox Code Playgroud)
:RO当然使其只读。我没有必要明确定义 Region 和 Profile。
| 归档时间: |
|
| 查看次数: |
3475 次 |
| 最近记录: |