# 错误：Provider 在 apply 后产生不一致的结果：在应用 terraform plan 后，provider 返回的 "instance_type" 值不在计划中："t2.micro" -> "t3.micro"

- **ID:** `terraform/provider-inconsistent-result-after-apply`
- **领域:** terraform
- **类别:** runtime_error
- **验证级别:** ai_generated
- **修复率:** 80%

## 根因

Provider 在创建/更新期间修改了 Terraform 未预期的资源属性，通常是由于 AWS 默认或自动转换实例类型（例如在某些区域 t2.micro 变为 t3.micro）。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Terraform v1.5 | active | — | — |
| Terraform v1.6 | active | — | — |
| AWS Provider v5.0 | active | — | — |
| AWS Provider v4.67 | active | — | — |

## 解决方案

1. ```
   Update the configuration to explicitly set the attribute to the value the provider expects. For example, change 'instance_type = "t2.micro"' to 'instance_type = "t3.micro"' in the resource block, then run 'terraform apply' again.
   ```
2. ```
   If the attribute is not critical, use lifecycle.ignore_changes with caution. Add 'lifecycle { ignore_changes = [instance_type] }' to the resource, then run 'terraform apply' to accept the current state. Example: resource "aws_instance" "example" { ami = "ami-abc123" instance_type = "t2.micro" lifecycle { ignore_changes = [instance_type] } }
   ```

## 无效尝试

- **** — State files should not be manually edited; it can cause drift, corruption, and is not idempotent. Terraform will detect the edit and may error on next plan. (95% 失败率)
- **** — This prevents Terraform from detecting future changes to instance_type, masking the issue and allowing drift to go unnoticed. (60% 失败率)
- **** — Older providers may have the same issue or other bugs; it also prevents using new features and security fixes. (70% 失败率)
