Docker构建过程中的AWS凭据

时间:2017-07-21 08:44:51

标签: docker dockerfile aws-cli

作为构建我的docker容器的过程的一部分,我需要从s3存储桶中提取一些文件,但我仍然获得fatal error: Unable to locate credentials,即使现在我将凭据设置为ENV vars(尽管想知道一个更好的方法来做到这一点)

因此,在构建容器时,我运行

docker build -t my-container --build-arg AWS_DEFAULT_REGION="region" --build-arg AWS_ACCESS_KEY="key" --build-arg AWS_SECRET_ACCESS_KEY="key" . --squash

在我的Dockerfile中我有

ARG AWS_DEFAULT_REGION
ENV AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION

ARG AWS_ACCESS_KEY
ENV AWS_ACCESS_KEY=$AWS_ACCESS_KEY

ARG AWS_SECRET_ACCESS_KEY
ENV AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY

RUN /bin/bash -l -c "aws s3 cp s3://path/to/folder/ /my/folder --recursive"

有谁知道如何解决这个问题(我知道有一个选项可以添加一个配置文件,但这似乎是一个不必要的额外步骤,因为我应该能够从ENV读取)。

2 个答案:

答案 0 :(得分:4)

环境变量的名称为AWS_ACCESS_KEY_ID vs AWS_ACCESS_KEY

您可以查看amazon doc

的完整列表
  

AWS CLI支持以下变量

     

AWS_ACCESS_KEY_ID - AWS访问密钥。

     

AWS_SECRET_ACCESS_KEY - AWS密钥。访问和密钥   变量覆盖存储在凭证和配置文件中的凭证。

     

AWS_SESSION_TOKEN - 会话令牌。只有在需要时才需要会话令牌   您正在使用临时安全凭证。

     

AWS_DEFAULT_REGION - AWS区域。此变量会覆盖默认值   正在使用的配置文件的区域,如果已设置。

     

AWS_DEFAULT_PROFILE - 要使用的CLI配置文件的名称。这可以是   存储在凭证或配置文件中的配置文件的名称,或默认为   使用默认配置文件。

     

AWS_CONFIG_FILE - CLI配置文件的路径。

答案 1 :(得分:0)

滥用预定义的* _PROXY参数使凭据数据对于“ docker history ..”调用完全不可见:-)

FROM mcr.microsoft.com/windows/servercore:ltsc2019
WORKDIR "C:\zenonSetup"
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

RUN net use X: \\ATSZG-WKS210\zenonSetup $Env:FTP_PROXY /user:$Env:HTTP_PROXY;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual C++ 2010 Redistributable\vstor_redist.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual C++ 2013 Redistributable (x86)\vcredist_x86.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual C++ 2013 Redistributable (x64)\vcredist_x64.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual C++ 2017 Redistributable (x86)\vc_redist.x86.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual C++ 2017 Redistributable (x64)\vc_redist.x64.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\Microsoft Visual Studio 2017 Remote Tools\VS_RemoteTools.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\CodeMeter Runtime Kit (x64)\CodeMeterRuntime64.exe' '/q' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\VBA\x86\Vba71.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\VBA\x86\Vba71_1033.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\VBA\x64\Vba71.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\VBA\x64\Vba71_1033.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\dotnet-runtime-2.1.5-win-x86.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\SetupPrerequisites\dotnet-runtime-2.1.5-win-x64.exe' '/quiet /install' -PassThru | Wait-Process;\
    Start-Process 'X:\MSI\commonX86.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\MSI\commonX64.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\MSI\commonoemX86.msi' '/qn' -PassThru | Wait-Process;\
    Start-Process 'X:\MSI\scadaX86.msi' '/qn CDPROP_TYPE=RT CDPROP_EDITION=SUPERVISOR INSTALLDIR_X86=C:\zenonSetup\32 INSTALLDIR_X64=C:\zenonSetup\64 ADDLOCAL=ALL' -PassThru | Wait-Process;\
    Start-Process 'X:\MSI\scadaX64.msi' '/qn CDPROP_TYPE=RT CDPROP_EDITION=SUPERVISOR INSTALLDIR_X86=C:\zenonSetup\32 INSTALLDIR_X64=C:\zenonSetup\64 ADDLOCAL=ALL' -PassThru | Wait-Process;\
    Start-Process 'regedit' '/s /q X:\RegistryDataDir.reg' -Wait -NoNewWindow;\
    Copy-Item -Path 'X:\settings.ps1' -Destination '.\settings.ps1';\
    Copy-Item -Path 'X:\templates.ps1' -Destination '.\templates.ps1';\
    Copy-Item -Path 'X:\start.bat' -Destination '.\start.bat';\
    Copy-Item -Path 'X:\zenonDataTemplates' -Destination '.\zenonDataTemplates' -Recurse;

ENTRYPOINT ["CMD", "/K", "C:\\zenonSetup\\start.bat"]