所以我通过简单的terraform apply
应用TF Provider创建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