Tas*_*man 5 amazon-web-services terraform terraform-provider-aws
我试图为我的S3存储桶创建一个远程后端。
provider "aws" {
version = "1.36.0"
profile = "tasdik"
region = "ap-south-1"
}
terraform {
backend "s3" {
bucket = "ops-bucket"
key = "aws/ap-south-1/homelab/s3/terraform.tfstate"
region = "ap-south-1"
}
}
resource "aws_s3_bucket" "ops-bucket" {
bucket = "ops-bucket"
acl = "private"
versioning {
enabled = true
}
lifecycle {
prevent_destroy = true
}
tags {
Name = "ops-bucket"
Environmet = "devel"
}
}
Run Code Online (Sandbox Code Playgroud)
我尚未执行任何操作,到目前为止,该存储桶尚不存在。因此,terraform要求我做一个init。但是当我尝试这样做时,我得到了
$ terraform init
Initializing the backend...
Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.
Error loading state: BucketRegionError: incorrect region, the bucket is not in 'ap-south-1' region
status code: 301, request id: , host id:
Run Code Online (Sandbox Code Playgroud)
Terraform将在执行任何其他动作(例如计划或应用)之前初始化任何状态配置。因此,您无法在定义状态后端的同时创建要存储的状态的S3存储桶。
Terraform也不会为您创建一个S3存储桶来放入您的状态,您必须提前创建它。
您可以在Terraform外部执行此操作,例如使用AWS CLI:
aws s3api create-bucket --bucket "${BUCKET_NAME}" --region "${BUCKET_REGION}" \
--create-bucket-configuration LocationConstraint="${BUCKET_REGION}"
Run Code Online (Sandbox Code Playgroud)
或者您可以尝试通过Terraform进行创建,但是首先使用本地状态创建存储桶apply,然后添加状态配置并重新初始化以使Terraform将状态迁移到新的S3存储桶。
对于错误消息,S3存储桶名称在所有区域和所有AWS账户中是全局唯一的。错误消息告诉您它已运行该GetBucketLocation调用,但在中找不到存储桶ap-south-1。创建存储桶时,我建议通过将帐户ID和可能的区域名称连接到存储桶名称中来确保它们可能是唯一的。
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |