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

Terraform计划删除未手动创建的OPTIONS类型API Gateway集成资源原因

问题描述

执行terraform plan操作时,发现Terraform计划删除4个非手动创建的资源。这些资源名称与我创建的资源一致,但HTTP方法为OPTIONS(我创建的所有资源均使用GET/POST方法)。我了解OPTIONS方法用于浏览器预检请求,但不清楚这与当前情况的关联。以下是其中一个待删除资源的示例:

> # module.RESOURCENAME.aws_api_gateway_integration._ will be destroyed
>   - resource "aws_api_gateway_integration" "_" {
>       - cache_key_parameters = [] -> null
>       - cache_namespace      = "zsfbtm" -> null
>       - connection_type      = "INTERNET" -> null
>       - http_method          = "OPTIONS" -> null
>       - id                   = "agi-234cjz85m3-zsfbtm-OPTIONS" -> null
>       - passthrough_behavior = "WHEN_NO_MATCH" -> null
>       - request_parameters   = {} -> null
>       - request_templates    = {
>           - "application/json" = jsonencode(
>                 {
>                   - statusCode = 200
>                 }
>             )
>         } -> null
>       - resource_id          = "zsfbtm" -> null
>       - rest_api_id          = "234cjz85m3" -> null
>       - timeout_milliseconds = 29000 -> null
>       - type                 = "MOCK" -> null
>     }

请问导致这些资源被标记为待删除的原因是什么?

原因分析
  • 资源未在Terraform配置中声明:Terraform仅管理本地配置文件中明确定义的资源。这些OPTIONS方法的API Gateway集成是AWS自动创建的(用于处理CORS预检请求),但你的Terraform代码里没有定义这类资源,因此Terraform会将其判定为“超出配置范围的额外资源”,计划删除以对齐配置与远程状态。
  • CORS配置的变更或缺失:如果之前通过AWS控制台、CLI或其他方式为API Gateway开启了CORS,AWS会自动生成这些OPTIONS方法的MOCK集成。若后续你的Terraform配置未包含对应的CORS设置,或者移除了相关配置,Terraform对比后会识别出这些自动生成的资源不在当前配置内,进而标记删除。
  • 状态文件未记录该类资源:Terraform的状态文件(terraform.tfstate)中原本没有记录这些自动创建的OPTIONS资源,当执行terraform plan时,Terraform对比远程AWS资源与本地配置、状态文件,发现远程存在未被管理的资源,就会计划将其删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:05:23