AWS 本地构建(CodeBuild):如何通过 WSL2 传递凭据文件

3

我将我的Docker桌面升级到版本3.2.1(61626),并选择使用WSL2,此后我无法运行AWS CodeBuild的本地构建,因为找不到AWS配置。我使用的命令是(我从Windows终端的Ubuntu 20选项卡中运行命令):

./codebuild_build.sh -i aws/codebuild/standard:5.0 -a ./ -s ./  -b ./buildspec.yml  -c ~/.aws

那个命令适用于使用 Hyper-V 的 Docker 版本,在升级到 wsl2 后出现了错误:

agent_1  | [Container] 2021/03/05 21:04:05 Phase complete: DOWNLOAD_SOURCE State: FAILED
agent_1  | [Container] 2021/03/05 21:04:05 Phase context status code: Decrypted Variables Error Message: MissingRegion: could not find region configuration 

生成的Docker命令如下:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/standard:5.0" -e "ARTIFACTS=/mnt/c/[redacted]" -e "SOURCE=/mnt/c/[redacted]" -e "BUILDSPEC=/mnt/c/[redacted]" -e "AWS_CONFIGURATION=NONE" -e "INITIATOR=[redacted]" amazon/aws-codebuild-local:latest

编辑:

在Git Bash中运行命令会生成以下命令:

winpty docker run -it -v //var/run/docker.sock:/var/run/docker.sock -e "IMAGE_NAME=aws/codebuild/standard:5.0" -e "ARTIFACTS=//C/[redacted]" -e "SOURCE=//C/[redacted]" -e "BUILDSPEC=//C/[redacted]" -e "AWS_CONFIGURATION=//C/Users/[redacted]/.aws" -e "INITIATOR=[redacted]" amazon/aws-codebuild-local:latest

但也以错误的形式失败:

agent_1  | [Container] 2021/03/05 22:17:43 Phase complete: DOWNLOAD_SOURCE State: FAILED
agent_1  | [Container] 2021/03/05 22:17:43 Phase context status code: YAML_FILE_ERROR Message: stat /codebuild/output/srcDownload/src/buildspec.pr.yml: no such file or directory

使用之前的命令,变量AWS_CONFIGURATION包含我的.aws文件夹的路径,我尝试过-c //c/Users/[myProfile]/.aws和/mnt/c/Users/[myProfile]/.aws,但AWS_CONFIGURATION始终为NONE。

我是否缺少某些配置?或者我需要在wsl2中添加额外的步骤?

编辑: 我安装了Ubuntu 18,但仍然无法成功。

1个回答

1

我遇到了类似的问题。我发现由于我必须使用sudo命令以root用户身份运行docker,我的主目录现在是/root而不是/home/<用户名>

可能有更好的解决方法,但我将文件夹/home/<用户名>/.aws链接到/root/.aws

此外,您可以使用codebuild_build.sh命令的-e标志通过环境文件传递变量AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN和AWS_ACCESS_KEY_ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接