Учетные данные Packer и AWS: CryptProtectData не удалось

Я подготавливаю машину Windows с помощью Packer. Я использую сценарий Powershell для большей части подготовки.

Важным этапом подготовки является загрузка некоторого программного обеспечения из частной корзины S3. Пытаясь сначала установить учетные данные AWS, я запускаю этот фрагмент:

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, она работает нормально.

Спасибо, Джевон


person Jevon Kendon    schedule 07.12.2015    source источник


Ответы (1)


из документа PowerShell:

Инструменты PowerShell могут использовать любое из двух хранилищ учетных данных.

  • Хранилище AWS SDK, которое шифрует ваши учетные данные и сохраняет их в вашей домашней папке. AWS SDK для .NET и AWS Toolkit для Visual Studio также могут использовать хранилище AWS SDK.
  • Файл учетных данных, который также находится в вашей домашней папке, но хранит учетные данные в виде обычного текста. По умолчанию файл учетных данных хранится здесь: `C:\Users\username.aws. Пакеты AWS SDK и интерфейс командной строки AWS также могут использовать файл учетных данных. Если вы запускаете сценарий вне контекста пользователя AWS, убедитесь, что файл, содержащий ваши учетные данные, скопирован в место, где все учетные записи пользователей (локальная система и пользователь) могут получить доступ к вашим учетным данным.

Судя по поиску в Google, люди начинают использовать BasicAWSCredentials.

Я не уверен, что это то, что вы можете сделать (в зависимости от того, используете ли вы SDK или нет), если нет, вы можете использовать второй подход, описанный в документе, и сохранить переменные в C:\Users\username\.aws и использовать команду S3 с учетными данными, сохраненными из этого файла

person Frederic Henri    schedule 07.12.2015
comment
Это сработало. Просто создайте файл C:\Users\username\.aws\credentials с профилем учетных данных AWS. - person Jevon Kendon; 08.12.2015