我的简单的terraform文件是:
provider "aws" {
region = "region"
access_key = "key"
secret_key = "secret_key"
}
terraform {
backend "s3" {
# Replace this with your bucket name!
bucket = "great-name-terraform-state-2"
key = "global/s3/terraform.tfstate"
region = "eu-central-1"
# Replace this with your DynamoDB table name!
dynamodb_table = "great-name-locks-2"
encrypt = true
}
}
resource "aws_s3_bucket" "terraform_state" {
bucket = "great-name-terraform-state-2"
# Enable versioning so we can see the full revision history of our
# state files
versioning {
enabled = true
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
}
resource "aws_dynamodb_table" "terraform_locks" {
name = "great-name-locks-2"
billing_mode = "PAY_PER_REQUEST"
hash_key = "LockID"
attribute {
name = "LockID"
type = "S"
}
}
我所要做的就是把我的后端从本地替换成在S3的商店。我所做的工作如下:
terraform init
(当terrafrom{}块是注释时)terrafrom apply
-我可以在我的AWS中看到桶和Dynmpo表都是创建的。terraform init
,并得到以下错误:Error loading state:
AccessDenied: Access Denied
status code: 403, request id: xxx, host id: xxxx
我的IAM有管理访问,我使用的是Terraform v0.12.24
,可以观察到,我是直接在文件中写入AWS密钥和机密的。
我做错什么了?
我很感激你的帮助!
发布于 2020-12-26 15:13:25
我以前也遇到过这个。以下是帮助您克服错误的步骤-
backend "s3" {
bucket = "great-name-terraform-state-2"
key = "global/s3/terraform.tfstate"
region = "eu-central-1"
access_key = "<access-key>"
secret_key = "<secret-key>"
}
}
错误应该消失了。
发布于 2020-11-10 04:04:14
我也面临着同样的问题。然后,我从本地系统手动删除状态文件。您可以在. .terraform/目录下找到terraform.tfstate文件,并再次在其中运行。如果您在aws中配置了多个配置文件的话。不提及aws提供程序配置下的概要文件将使terraform使用默认配置文件。
发布于 2022-02-17 11:49:43
我知道,通过在其他为Terraform后端共享相同的terraform init
桶的项目上运行S3,我的凭据是可以的。
对我有用的是:
rm -rf .terraform/
编辑
删除本地terraform init
目录后,确保再次运行.terraform
,以确保安装了所需的包。
https://stackoverflow.com/questions/61851903
复制相似问题