1

由于某种原因,Packer 无法通过 AWS 进行身份验证,但使用普通的 aws 客户端可以工作,并且我的环境变量设置正确:

AWS_ROLE_SESSION_NAME=...
AWS_SESSION_TOKEN=...
AWS_SECRET_ACCESS_KEY=...
AWS_ROLE=...
AWS_ACCESS_KEY_ID=...
AWS_CLI=...
AWS_ACCOUNT=...
AWS_SECURITY_TOKEN=...

我正在使用 aws saml 进行身份验证,Packer 给了我以下信息:

Error querying AMI: AWS was not able to validate the provided access credentials (AuthFailure)
4

1 回答 1

2

问题在于 Packer 通过 AWS 进行身份验证的方式。

Packer 是用 go 编写的,使用 goamz 进行身份验证。使用 aws saml 创建配置时,会在 ~/.aws 中生成几个文件:配置和凭据。

结果证明这个凭证文件优先于环境变量,所以如果这些凭证不正确并且你依赖于你的环境变量,你会得到同样的错误。

由于 aws-saml 需要定义 aws_access_key_id 和 aws_secret_access_key,因此在这种情况下删除凭证文件是不够的。

我们必须将这些值复制到 ~/.aws/config 并删除凭证文件,然后 Packer 很乐意使用我们的环境变量。

已在 github 中为 goamz 提出票证,因此 AWS CLI 和 Packer 可以具有相同的身份验证行为,如果您也有问题,请随时投票:https ://github.com/mitchellh/goamz/issues/171

于 2014-12-11T22:55:45.720 回答