Сбой импорта Terraform из-за ошибочного региона, хотя он определен в поставщике

#amazon-web-services #amazon-s3 #terraform

#amazon-web-services #amazon-s3 #terraform

Вопрос:

Я использую следующую конфигурацию 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 псевдоним не работает?

Комментарии:

1. Вы проверяете, установлены ли переменные среды AWS_REGION или AWS_DEFAULT_REGION или нет?

2. они не установлены, я проверил

3. Я думаю, что проблема возникает либо из-за имени корзины (в этом случае попробуйте изменить его на уникальное), либо из-за того факта, что вы импортируете один и тот же объект несколько раз, и он уже существует в вашем файле состояния (попробуйте изменить серверную часть или переместить файл состояния, чтобы быть уверенным.) N.B: иногда сообщения об ошибках в terraform на самом деле не отражают рассматриваемую проблему.

Ответ №1:

Проблема заключалась в том, что (по какой-то причине) terraform требуется явно передавать provider значение при импорте

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

Комментарии:

1. Спасибо за публикацию ответа. Похоже, это проблема со старыми версиями TF до 12.26. В документации говорится, что эта опция устарела, и будет использоваться файл конфигурации. Однако, если вы видели это и в последних версиях, проблема все еще остается. github.com/hashicorp/terraform/issues/17139 …. Тем не менее, хорошо, что проблема исправлена…