SignatureDoesNotMatch при переопределении конечной точки API-интерфейса STS в Terraform - PullRequest
3 голосов
/ 02 июля 2019

Я управляю Terraform в регионе AWS us-west-2 (Oregon) в частном VPC.Из-за этого я использую конечные точки VPC для предоставления STS API и переопределяю эту конечную точку в Terraform следующим образом:

provider "aws" {
  endpoints {
    sts = "https://sts.us-west-2.amazonaws.com/"
  }
}

К сожалению, это приводит к следующей ошибке:

provider.aws: error validating provider credentials: error calling sts:GetCallerIdentity: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

Что может быть причиной этой проблемы?Применение того же кода Terraform без переопределения конечной точки в общедоступном VPC сработало как ожидалось.

Вещи, которые я проверял:

  • Экземпляр, на котором работает Terraform, отображает правильное время (UTC)
  • Для env-переменных AWS_REGION и AWS_DEFAULT_REGION задано значение us-west-2
  • env-переменная AWS_SECRET_ACCESS_KEY, которую я использую для аутентификации (вместе с AWS_ACCESS_KEY_ID) содержит только 10 буквенно-цифровых символов

Версии:

  • terraform version: Terraform v0.11.13
  • terraform-provider-aws: v2.17.0

1 Ответ

1 голос
/ 03 июля 2019

Похоже, что terraform не очищает URL-адреса перед отправкой их в AWS:

provider "aws" {
  endpoints {
    sts = "https://sts.us-west-2.amazonaws.com" # No trailing slash
  }
}

Просто у меня работает нормально, а с косой чертой это приводит к вашей ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...