Packer и AWS идентификационни данни: CryptProtectData неуспешно

Осигурявам машина с Windows с помощта на Packer. Използвам Powershell Script, за да направя по-голямата част от осигуряването.

Важна стъпка за осигуряване е да изтеглите някакъв софтуер от частна кофа 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 store.
  • Файлът с идентификационни данни, който също се намира във вашата домашна папка, но съхранява идентификационните данни като обикновен текст. По подразбиране файлът с идентификационни данни се съхранява тук: `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