我在私人VPC中在AWS地区US-West-2(俄勒冈州(运行Terraform。因此,我正在使用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.
什么可能导致这个问题?在公共VPC中使用相同的无端点覆盖的相同地形代码按预期工作。
我已经检查的东西:
- 实例Terraform正在运行的是显示正确的时间(UTC(
- aws_region和aws_default_region env var设置为us-west-2
- aws_secret_access_key env v v v v v v v v v v v v v v v v var(一起使用AWS_ACCESS_KEY_ID(仅包含字母数字字符
版本:
-
terraform version
:Terraform V0.11.13 -
terraform-provider-aws
:v2.17.0
似乎Terraform在将它们发送到AWS之前没有对URL进行消毒:
provider "aws" {
endpoints {
sts = "https://sts.us-west-2.amazonaws.com" # No trailing slash
}
}
对我来说很好,而随着拖延的速度,它会导致您的错误