【发布时间】:2021-03-28 08:55:15
【问题描述】:
我这辈子都无法让它发挥作用。我需要设置 AWS_PROFILE 环境变量才能让 terragrunt 正常运行。如果我跑:
export AWS_PROFILE=myprofile; terragrunt plan
这会起作用,但这不是我想要运行之后的目标:
terragrunt plan
并让它自动选择我应该使用的正确 aws 配置文件。这是我所拥有的:
generate "provider" {
path = "provider.tf"
if_exists = "overwrite_terragrunt"
contents = <<EOF
provider "aws" {
region = "${local.region}"
profile = "${trimspace(run_cmd("bash", "${get_parent_terragrunt_dir()}/../../set_profile.sh",local.profile))}"
}
EOF
}
remote_state {
backend = "s3"
generate = {
path = "backend.tf"
if_exists = "overwrite"
}
config = {
...
...
region = local.region
profile = local.profile
...
...
}
}
它总是向我抛出错误:
Error finding AWS credentials (did you set the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables?): NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors
set_profile.sh 脚本如下:
#!/bin/bash
VALUE=$(echo $1 | sed $'s/\r//')
export AWS_PROFILE=$VALUE
echo "$AWS_PROFILE"
如果我回显我的AWS_PROFILE,它仍然是空白的。所以这就好像运行命令实际上并没有将导出值保存到我的控制台。
我做错了什么?有没有人能够成功地使用 terragrunt 动态设置他们的AWS_PROFILE?
【问题讨论】:
-
可能不相关,但请确保在更改提供程序配置时清除两次运行之间的 terragrunt 缓存
-
不幸的是没有骰子。我清除了我的
.terragrunt-cache目录。重新运行一个 terragrunt plan 相同的错误,仍然得到一个空白结果echo $AWS_PROFILE -
哦,等等。我已经删除了在 s3 后端中指定我的个人资料的行。我再次添加它,再次被缓存清除,现在它可以工作了。我想就是这样!
标签: amazon-web-services terraform terragrunt