Packer 凭据问题错误 "NoCredentialProviders"?
Packer credentials issue error "NoCredentialProviders"?
我正在尝试 运行 Packer 模板来构建基于 AWS EBS 的基本实例。但是,我不断收到以下错误。
==> amazon-ebs: Error querying AMI: NoCredentialProviders: no valid providers in chain. Deprecated.
==> amazon-ebs: For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Build 'amazon-ebs' errored: Error querying AMI: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
我已经从模板中的环境变量中提取了我的凭据。
{
"type": "amazon-ebs",
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
"region": "us-east-1",
"source_ami": "ami-fce3c696",
"instance_type": "t2.micro",
"ssh_username": "broodadmin",
"ami_name": "broodbox"
}
我从 AWS 中提取了密钥和秘密,并按照文档 here 中的说明设置了该组的权限。我还确保用户在设置了所有这些权限的组中。
看到了吗?
这是模板的更多内容,模板中列出了其他 google 计算和变量...
{
"variables": {
"account_json": "../../../secrets/account.json",
"instance_name": "broodbox",
"image_name": "broodbox"
},
"builders": [
{
"type": "googlecompute",
"account_file": "{{user `account_json`}}",
"project_id": "that-big-universe",
"source_image": "debian-8-jessie-v20160923",
"zone": "us-west1-a",
"instance_name": "{{user `instance_name`}}",
"image_name": "{{user `image_name`}}",
"image_description": "Node.js Server.",
"communicator": "ssh",
"ssh_username": "broodadmin"
},
{
"type": "amazon-ebs",
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
"region": "us-east-1",
"source_ami": "ami-fce3c696",
"instance_type": "t2.micro",
"ssh_username": "broodadmin",
"ami_name": "broodbox"
}
],
"provisioners": [
完整模板在这里https://github.com/Adron/multi-cloud/blob/master/ecosystem/packer/nodejs_server.json
该存储库是我正在处理的多云存储库 https://github.com/Adron/multi-cloud
在这里做一些橡皮鸭。但是您还没有添加用户变量 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
。您需要将这些行添加到 variables
部分:
"AWS_ACCESS_KEY_ID": "{{env `AWS_ACCESS_KEY_ID`}}",
"AWS_SECRET_ACCESS_KEY": "{{env `AWS_SECRET_ACCESS_KEY`}}"
有关详细信息,请参阅有关 environment-variables 的文档。
但是您可能想要做的只是从 amazon-ebs
构建器部分删除这两行:
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
从那时起,Packer 将从默认环境变量(您无论如何都在使用)中读取它们。参见 Packer Documentation - AWS credentials。
我认为 access_key
和 secret_key
并不像文档中描述的那样需要。我会从构建器中删除这些属性——只要 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
环境变量被导出——构建器应该选择它们。它还将使用 AWS Go SDK 使用的默认凭证查找策略来查找 ~/.aws/credentials
,例如。
我试了一下 运行 模板,唯一可以解决 return 错误的方法是环境变量不存在。创建它们后,出现了不同的错误:
==> amazon-ebs: Error launching source instance: VPCResourceNotSpecified: The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.
因此,如果您创建变量 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
,您应该没问题。 (我似乎记得我偶尔会看到名为 AWS_ACCESS_KEY
和 AWS_SECRET_KEY
的变量,这在过去曾让我绊倒过。)
我对 Linux 的决定:
export AWS_ACCESS_KEY_ID="XXX"
export AWS_SECRET_ACCESS_KEY="XXX"
并从配置中删除
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
我正在尝试 运行 Packer 模板来构建基于 AWS EBS 的基本实例。但是,我不断收到以下错误。
==> amazon-ebs: Error querying AMI: NoCredentialProviders: no valid providers in chain. Deprecated.
==> amazon-ebs: For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Build 'amazon-ebs' errored: Error querying AMI: NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
我已经从模板中的环境变量中提取了我的凭据。
{
"type": "amazon-ebs",
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
"region": "us-east-1",
"source_ami": "ami-fce3c696",
"instance_type": "t2.micro",
"ssh_username": "broodadmin",
"ami_name": "broodbox"
}
我从 AWS 中提取了密钥和秘密,并按照文档 here 中的说明设置了该组的权限。我还确保用户在设置了所有这些权限的组中。
看到了吗?
这是模板的更多内容,模板中列出了其他 google 计算和变量...
{
"variables": {
"account_json": "../../../secrets/account.json",
"instance_name": "broodbox",
"image_name": "broodbox"
},
"builders": [
{
"type": "googlecompute",
"account_file": "{{user `account_json`}}",
"project_id": "that-big-universe",
"source_image": "debian-8-jessie-v20160923",
"zone": "us-west1-a",
"instance_name": "{{user `instance_name`}}",
"image_name": "{{user `image_name`}}",
"image_description": "Node.js Server.",
"communicator": "ssh",
"ssh_username": "broodadmin"
},
{
"type": "amazon-ebs",
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
"region": "us-east-1",
"source_ami": "ami-fce3c696",
"instance_type": "t2.micro",
"ssh_username": "broodadmin",
"ami_name": "broodbox"
}
],
"provisioners": [
完整模板在这里https://github.com/Adron/multi-cloud/blob/master/ecosystem/packer/nodejs_server.json
该存储库是我正在处理的多云存储库 https://github.com/Adron/multi-cloud
在这里做一些橡皮鸭。但是您还没有添加用户变量 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
。您需要将这些行添加到 variables
部分:
"AWS_ACCESS_KEY_ID": "{{env `AWS_ACCESS_KEY_ID`}}",
"AWS_SECRET_ACCESS_KEY": "{{env `AWS_SECRET_ACCESS_KEY`}}"
有关详细信息,请参阅有关 environment-variables 的文档。
但是您可能想要做的只是从 amazon-ebs
构建器部分删除这两行:
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",
从那时起,Packer 将从默认环境变量(您无论如何都在使用)中读取它们。参见 Packer Documentation - AWS credentials。
我认为 access_key
和 secret_key
并不像文档中描述的那样需要。我会从构建器中删除这些属性——只要 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
环境变量被导出——构建器应该选择它们。它还将使用 AWS Go SDK 使用的默认凭证查找策略来查找 ~/.aws/credentials
,例如。
我试了一下 运行 模板,唯一可以解决 return 错误的方法是环境变量不存在。创建它们后,出现了不同的错误:
==> amazon-ebs: Error launching source instance: VPCResourceNotSpecified: The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.
因此,如果您创建变量 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
,您应该没问题。 (我似乎记得我偶尔会看到名为 AWS_ACCESS_KEY
和 AWS_SECRET_KEY
的变量,这在过去曾让我绊倒过。)
我对 Linux 的决定:
export AWS_ACCESS_KEY_ID="XXX"
export AWS_SECRET_ACCESS_KEY="XXX"
并从配置中删除
"access_key": "{{user `AWS_ACCESS_KEY_ID`}}",
"secret_key": "{{user `AWS_SECRET_ACCESS_KEY`}}",