我正在使用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实例上运行此命令,它可以正常工作。
谢谢, 杰文
答案 0 :(得分:1)
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命令从该文件存储的凭证