Terraform 是否自动批处理资源创建?

Does Terraform batch resource creation automatically?

所以我使用 TF Provider 通过简单 terraform apply 创建了 150 个资源,并注意到它会批量打印资源:

# batch #1
foo_resource.bar_1: Creating...
...
foo_resource.bar_10: Creating...
foo_resource.bar_1: Creation complete after 12s [id=...]
...
foo_resource.bar_10: Creation complete after 15s [id=...]
# batch #2
foo_resource.bar_11: Creating...
...

此外,当我打开跟踪日志时,我可以看到同一秒内有 10 个日志:

# batch #1
2022-03-03T00:48:59.139-0800 [INFO]  provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_1: timestamp=2022-03-03T00:48:59.139-0800
2022-03-03T00:48:59.139-0800 [INFO]  provider.: 2022/03/03 00:48:59 [DEBUG] Created foo_3: timestamp=2022-03-03T00:48:59.139-0800
...
# batch #2
2022-03-03T00:49:20.866-0800 [INFO]  provider.: 2022/03/03 00:49:20 [DEBUG] Created foo_12: timestamp=2022-03-03T00:49:10.866-0800

因此您可以清楚地看到批次 #1 和批次 #2 之间的时间戳差异约为 20 秒(00:49:20 - 00:48:59),这与提供商使用的超时完全相同在创建每个资源后在内部,所以它似乎不会同时发送 150 创建请求,而是分批执行它们,每个批处理大小为 10.

问题是 Terraform 批量资源创建是自动的还是只是巧合?

Terraform 不执行批处理,但有并行度限制,默认为 10:https://www.terraform.io/cli/commands/apply#parallelism-n