Packer和AWS凭据:CryptProtectData失败

时间:2015-12-07 00:49:35

标签: windows aws-cli packer

我正在使用Packer配置Windows机器。我使用Powershell脚本来完成大部分配置。

重要的配置步骤是从私有S3存储桶下载某些软件。为了首先设置AWS凭据,我运行此snippit:

echo "Configure AWS"
echo "AWS_ACCESS_KEY_ID: ${env:AWS_ACCESS_KEY_ID}"
echo "AWS_SECRET_ACCESS_KEY: ${env:AWS_SECRET_ACCESS_KEY}"
echo "AWS_DEFAULT_REGION: ${env:AWS_DEFAULT_REGION}"

Set-AWSCredentials -AccessKey ${env:AWS_ACCESS_KEY_ID} -SecretKey ${env:AWS_SECRET_ACCESS_KEY} -StoreAs default

当Packer在机器上运行它时,总是会出错:

amazon-ebs: Set-AWSCredentials : CryptProtectData failed.
amazon-ebs: At C:\Windows\Temp\script.ps1:15 char:1
amazon-ebs: + Set-AWSCredentials -AccessKey ${env:AWS_ACCESS_KEY_ID} -SecretKey
amazon-ebs: ${env:AWS_SECR ...

如果我直接在Windows实例上运行此命令,它可以正常工作。

谢谢, 杰文

1 个答案:

答案 0 :(得分:1)

来自PowerShell doc

  

PowerShell Tools可以使用两个凭据存储中的任意一个。

     
      
  • AWS SDK商店,用于加密您的凭据并将其存储在您的主文件夹中。 AWS SDK for .NET和AWS Toolkit for Visual   Studio还可以使用AWS SDK商店。
  •   
  • 凭据文件,它也位于您的主文件夹中,但将凭据存储为纯文本。默认情况下,凭据文件是   存储在这里:`C:\ Users \ username.aws。 AWS软件开发工具包和AWS Command   线路接口也可以使用凭证文件。如果你正在运行   您的AWS用户上下文之外的脚本,请确保该文件   包含您的凭据被复制到所有用户的位置   帐户(本地系统和用户)可以访问您的凭据。
  •   

从谷歌搜索,似乎人们转而使用BasicAWSCredentials

我不确定这是你可以做的事情(取决于你是否使用SDK),如果不是,你可以使用doc中描述的第二种方法并将变量存储在C:\Users\username\.aws中并使用S3命令从该文件存储的凭证