Terraform:无法使用共享配置文件或静态变量连接到 AWS 提供商

Terraform:无法使用共享配置文件或静态变量连接到 AWS 提供商

我正在尝试使用 terraform 来管理 AWS 资源并尝试设置凭证配置。我遵循官方文档:https://www.terraform.io/docs/providers/aws/index.html

我的第一个想法是设置一个共享凭证文件,因此我对其进行配置:

  • ~.aws/凭证

    [default]
    aws_access_key_id=****
    aws_secret_access_key=****
    
  • ~.aws/配置

    [default]
    region=us-east-1
    output=json
    
  • 应用程序/main.tf

    provider "aws" {
        region = "us-east-1"
        version = "~> 2.0"
        profile = "default"
    }
    
    terraform {
        backend "s3" {
            bucket = "example-bucket"
            key    = "terraform-test.tfstate"
            region = "us-east-1"
      }
    }
    

当我运行时,terraform init我收到以下消息:

Error: No valid credential sources found for AWS Provider.
        Please see https://terraform.io/docs/providers/aws/index.html for more information on
        providing credentials for the AWS Provider

我已经使用 aws cli 测试了凭证并且它运行良好。

之后,我尝试在 main.tf 中配置静态凭据,如下所示:

provider "aws" {
    region = "us-east-1"
    version = "~> 2.0"
    profile = "default"
    access_key = "****"
    secret_key = "****"
}

同样的错误...

我决定用环境变量进行测试,然后它就成功了。但现在我想知道为什么我无法使用静态变量或共享配置文件进行配置。所有这些情况都在官方文档中进行了描述,我做错了什么?

答案1

我看到的唯一不同之处是 ~.aws/config,我的配置是这样的

~/.aws/凭证

[default]
aws_access_key_id = ****
aws_secret_access_key = ****
region = us-east-2

使用上面的这个配置,terraform 只需要

provider "aws" {
    region = "us-east-1"
    version = "~> 2.0"
}

另一方面,你可以把所有东西都放在提供者身上,就像这样

provider "aws" {
    region = "us-east-1"
    version = "~> 2.0"
    access_key = "****"
    secret_key = "****"
}

顺便说一下backend,第一次使用时不会起作用,因此注释掉运行terraform init,在提供商下载后取消注释备份,然后再次运行 terraform init。如果错误继续,请告知 terraform 版本。

相关内容