Terraform AWS提供程序中地形轮廓字段的使用

Terraform AWS提供程序中地形轮廓字段的使用,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我有一个$HOME/.aws/credentials文件,如下所示: [config1] aws_access_key_id=accessKeyId1 aws_secret_access_key=secretAccesskey1 [config2] aws_access_key_id=accessKeyId2 aws_secret_access_key=secretAccesskey2 terraform { backend "s3" { bucket = "myBucket"

我有一个
$HOME/.aws/credentials
文件,如下所示:

[config1]
aws_access_key_id=accessKeyId1
aws_secret_access_key=secretAccesskey1

[config2]
aws_access_key_id=accessKeyId2
aws_secret_access_key=secretAccesskey2
terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
    profile = "config2"
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}
因此,我希望通过此配置,
terraform
将选择第二个凭据:

terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}
但是当我尝试
terraforminit
时,它说它没有找到任何有效的凭证:

terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}
正在初始化后端

错误:找不到AWS提供程序的有效凭据源。 有关详细信息,请参阅 为AWS提供商提供凭据


作为解决方法,我在凭证文件中更改了
config2
default
,并从
provider
块中删除了
profile
字段,因此它可以工作,但我确实需要使用类似于第一种方法的方法。我这里缺少什么?

不幸的是,您还需要为后端配置以及AWS提供商配置提供IAM凭据配置

S3后端配置在此处采用与AWS提供程序相同的参数,因此您可以如下所示指定后端配置:

[config1]
aws_access_key_id=accessKeyId1
aws_secret_access_key=secretAccesskey1

[config2]
aws_access_key_id=accessKeyId2
aws_secret_access_key=secretAccesskey2
terraform {
  backend "s3" {
    bucket  = "myBucket"
    region  = "eu-central-1"
    key     = "path/to/terraform.tfstate"
    encrypt = true
    profile = "config2"
  }
}

provider "aws" {
  profile = "config2"
  region  = "eu-central-1"
}

这背后有几个原因需要单独完成。其中一个原因是,您可以独立使用不同的IAM凭据、帐户和区域来管理S3存储桶以及您将使用AWS提供商管理的资源。您可能还希望使用S3作为后端,即使您正在另一个云提供商中创建资源或根本不使用云提供商,Terraform可以在许多无法存储Terraform状态的地方管理资源。不过,主要原因是后端实际上是由核心Terraform二进制文件而不是提供程序二进制文件管理的,并且后端初始化在其他任何事情发生之前进行。

您如何配置远程状态?你能告诉我确切的错误吗?我做了建议的修改,删除了.terraform文件夹