【问题标题】:Terraform import fails due to erroneous region although defined in the provider尽管在提供程序中定义了错误区域,但 Terraform 导入失败
【发布时间】:2021-01-27 03:59:09
【问题描述】:

我正在使用以下 tf 配置:

variable "aws_profile" {
  description = "The AWS profile to use for this account"
}

provider "aws" {
  version = "~> 2"
  region  = "us-east-1"
  profile = "${var.aws_profile}"
}

provider "aws" {
  version = "~> 2"
  region  = "us-west-2"
  alias   = "us_west_2"
  profile = "profile-us-west-2"
}

在哪里

cat ~/.aws/credentials

[profile-us-west-2]
region=us-west-2
aws_access_key_id = ΧΧΧΧΧΧΧΧΧΧΧ
aws_secret_access_key =  ΧΧΧΧΧΧΧΧΧΧΧΧΧ

并尝试 import 现有的 S3 存储桶

到下面的 tf 资源

resource "aws_s3_bucket" "my_tf_bucket" {
  provider = "aws.us_west_2"
  bucket   = "my_tf_bucket"

使用以下命令:

terraform import aws_s3_bucket.my_tf_bucket existing_bucket_name

失败如下:

 Error importing AWS S3 bucket policy: AuthorizationHeaderMalformed: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'us-west-2'
    status code: 400, request id: 64242424244D21946, host id: bddw422424

为什么provider 别名不起作用?

【问题讨论】:

  • 您是否检查环境变量 AWS_REGION 或 AWS_DEFAULT_REGION 是否已设置?
  • 它们没有设置,我检查了
  • 我认为问题来自存储桶名称(在这种情况下尝试使用唯一的名称更改它)或来自您多次导入同一个对象并且它已经存在于您的状态文件中的事实(尝试更改后端或移动您的状态文件以确保。)注意:有时 terraform 中的错误消息并不能真正反映问题。

标签: amazon-web-services amazon-s3 terraform


【解决方案1】:

问题是(出于某种原因)terraform 需要在导入时显式传递 provider

terraform import --provider=aws.us_west_2 aws_s3_bucket.my_tf_bucket existing_bucket_name

【讨论】:

  • 感谢您发布答案。 12.26 之前的旧 TF 版本似乎确实存在问题。文档说此选项已弃用,将使用配置文件。但是,如果您在最近的版本中也看到了这一点,那么问题仍然存在。 github.com/hashicorp/terraform/issues/17139 .... 不过,你的问题已经解决了...
猜你喜欢
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2015-08-18
  • 2023-04-02
  • 2019-05-01
相关资源
最近更新 更多