首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何解决错误加载状态: AccessDenied:访问拒绝状态代码: 403当试图使用s3作为terraform后端?

如何解决错误加载状态: AccessDenied:访问拒绝状态代码: 403当试图使用s3作为terraform后端?
EN

Stack Overflow用户
提问于 2020-05-17 12:37:43
回答 11查看 50.2K关注 0票数 17

我的简单的terraform文件是:

代码语言:javascript
运行
复制
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的商店。我所做的工作如下:

  1. terraform init (当terrafrom{}块是注释时)
  2. terrafrom apply -我可以在我的AWS中看到桶和Dynmpo表都是创建的。
  3. 现在,我不对terrafrom块进行注释,然后再一次使用terraform init,并得到以下错误:
代码语言:javascript
运行
复制
Error loading state:
    AccessDenied: Access Denied
        status code: 403, request id: xxx, host id: xxxx

我的IAM有管理访问,我使用的是Terraform v0.12.24,可以观察到,我是直接在文件中写入AWS密钥和机密的。

我做错什么了?

我很感激你的帮助!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2020-12-26 15:13:25

我以前也遇到过这个。以下是帮助您克服错误的步骤-

  1. 删除.terraform目录
  2. 将access_key和secret_key放在后端块下。如下所示
  3. 运行地状井
代码语言:javascript
运行
复制
  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>"
  }
}

错误应该消失了。

票数 19
EN

Stack Overflow用户

发布于 2020-11-10 04:04:14

我也面临着同样的问题。然后,我从本地系统手动删除状态文件。您可以在. .terraform/目录下找到terraform.tfstate文件,并再次在其中运行。如果您在aws中配置了多个配置文件的话。不提及aws提供程序配置下的概要文件将使terraform使用默认配置文件。

票数 5
EN

Stack Overflow用户

发布于 2022-02-17 11:49:43

我知道,通过在其他为Terraform后端共享相同的terraform init桶的项目上运行S3,我的凭据是可以的。

对我有用的是:

代码语言:javascript
运行
复制
rm -rf .terraform/

编辑

删除本地terraform init目录后,确保再次运行.terraform,以确保安装了所需的包。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61851903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档