You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Terraform操作aws_cur_report_definition时长期挂起求助

排查Terraform创建/读取AWS CUR报告定义长期挂起的问题

问题现象

执行terraform apply创建aws_cur_report_definition资源时长期无响应,读取已有该数据源时同样持续挂起超过9分钟,日志重复输出Still reading...。

排查步骤

1. 修正AWS Provider区域配置

AWS Cost and Usage Reports(CUR)是全局服务,仅支持在us-east-1区域调用API,即使你的S3桶或其他资源在其他区域。当前provider配置为eu-west-1,会导致API请求无法正确路由到CUR服务,引发超时。

修改provider区域为us-east-1:

provider "aws" {
  profile = "xxxxxxxxx"
  region  = "us-east-1" # CUR服务仅支持该区域
}

2. 验证S3桶的权限配置

CUR服务需要特定权限才能写入目标S3桶,检查以下两点:

  • 桶策略:添加允许AWS CUR服务访问桶的策略,示例:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "cur.amazonaws.com"
          },
          "Action": [
            "s3:GetBucketAcl",
            "s3:GetBucketPolicy"
          ],
          "Resource": "arn:aws:s3:::cur-grafana-test"
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "cur.amazonaws.com"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::cur-grafana-test/*"
        }
      ]
    }
    
  • IAM权限:确保Terraform使用的IAM用户/角色拥有cur:PutReportDefinition和cur:DescribeReportDefinitions权限。

3. 用AWS CLI直接测试

跳过Terraform,用AWS CLI手动创建报告,验证问题根源是AWS服务端/权限还是Terraform Provider:

# 切换到us-east-1区域
aws configure set region us-east-1
# 手动创建报告定义
aws cur create-report-definition --report-definition '{
  "ReportName": "my_cost_and_usage_report_test",
  "TimeUnit": "HOURLY",
  "Format": "Parquet",
  "Compression": "Parquet",
  "AdditionalSchemaElements": ["RESOURCES"],
  "S3Bucket": "cur-grafana-test",
  "S3Region": "us-east-1",
  "AdditionalArtifacts": ["ATHENA"],
  "S3Prefix": "/test",
  "ReportVersioning": "OVERWRITE_REPORT"
}'

如果CLI也卡住或报错,直接排查AWS账户或服务问题;如果CLI成功,说明是Terraform Provider的问题。

4. 调整Terraform AWS Provider版本

当前使用的5.42.0版本可能存在CUR资源的已知bug,尝试升级到最新稳定版或降级到验证过的版本:

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.50.0" # 替换为最新稳定版
    }
  }
}

5. 检查AWS控制台的CUR状态

登录AWS Billing控制台,查看是否存在同名报告定义处于异常(pending/failed)状态,这类残留资源可能导致新请求卡住。如果有,手动删除后再重新执行Terraform。

6. 排查网络连接问题

确保Terraform运行环境能正常访问us-east-1的AWS API端点,检查防火墙、代理或VPC端点是否限制了请求。可以通过curl测试连通性:

curl https://cur.us-east-1.amazonaws.com

内容的提问来源于stack exchange,提问作者Olfa2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 19:52:47