要将 Terraform 状态文件存储在 S3 存储桶中,我使用了管理员帐户凭据并进行了配置。现在我已经创建了 IAM 用户并尝试使用承担角色。假设角色附加了管理员策略。
我已经用aws sts assume-role --role-arn
命令测试了这个 AIM 用户设置。我能够获取令牌并使用能够使用aws s3 ls
命令访问 S3 存储桶的令牌。
现在尝试使用 IAM 用户访问/密钥和 terraform 的承担角色。当我运行terraform refresh
命令时,它给出以下错误。
提供者代码:
provider "aws" {
region = "us-west-2"
max_retries = 1
assume_role {
role_arn = var.assume_role_arn
}
}
错误
Error: Error acquiring the state lock
│
│ Error message: 2 errors occurred:
│ * AccessDeniedException: User: arn:aws:iam::xxxxxxxx:user/deploy is not authorized to perform: dynamodb:PutItem on resource:
│ arn:aws:dynamodb:us-west-2:xxxxxxxx:table/terraform-state-lock
│ status code: 400, request id: CV4J3JN1LD0KPDGHAOA9UL13ONVV4KQNSO5AEMVJF66Q9ASUAAJG
│ * AccessDeniedException: User: arn:aws:iam::xxxxxxxx:user/deploy is not authorized to perform: dynamodb:GetItem on resource:
│ arn:aws:dynamodb:us-west-2:xxxxxxxx:table/terraform-state-lock
│ status code: 400, request id: BISQQDU4659LLI3CEDP26T8RJ7VV4KQNSO5AEMVJF66Q9ASUAAJG
│
│
│
│ Terraform acquires a state lock to protect the state from being written
│ by multiple users at the same time. Please resolve the issue above and try
│ again. For most commands, you can disable locking with the "-lock=false"
│ flag, but this is not recommended.
为什么这在 Terraform 中不起作用如何修复此错误?
谢谢