E hōʻike aku i kekahi mau pōʻino, me nā mea e pili ana i nā puka lou, inā nā ʻōlelo a me nā ʻenehana hoʻolālā, a me nā pilikia nui e pili ana iā Terraform ma ka laulā:
he mau palena ka helu a me no_each;
kau palena ʻole i ka hoʻolaha ʻana i ka wā hoʻomaha;
hiki i ka hoʻolālā maikaʻi ke hāʻule;
hiki i ka refactoring ke loaʻa kona mau pilikia;
kūlike ka hoʻopaneʻe ʻana... me ka hoʻopaneʻe.
He mau palena ka helu a me no_each
Hoʻohana nui nā laʻana ma kēia mokuna i ka ʻāpana helu a me ka ʻōlelo for_each i loko o nā puka lou a me nā loina kūlana. Hana maikaʻi lākou, akā ʻelua mau palena koʻikoʻi āu e pono ai e ʻike.
ʻAʻole hiki i ka helu a no_kekahi ke kuhikuhi i nā ʻano hoʻololi waiwai.
ʻAʻole hiki ke hoʻohana ʻia ka helu a no_kekahi i ka hoʻonohonoho module.
ʻAʻole hiki i ka helu a no_each ke kuhikuhi i nā ʻano hoʻololi waiwai
E noʻonoʻo pono ʻoe e kau i nā kikowaena EC2 a no kekahi kumu ʻaʻole makemake ʻoe e hoʻohana i ka ASG. Penei paha kāu code:
No ka mea ua hoʻonohonoho ʻia ka helu helu i kahi waiwai static, e hana kēia code me ka pilikia ʻole: ke holo ʻoe i ke kauoha noi, e hana ia i ʻekolu mau kikowaena EC2. Akā pehea inā makemake ʻoe e hoʻonoho i hoʻokahi kikowaena i kēlā me kēia Availability Zone (AZ) i loko o kāu ʻāina AWS o kēia manawa? Hiki iā ʻoe ke hoʻouka i kāu code i kahi papa inoa o nā ʻāpana mai ka aws_availability_zones kumu ʻikepili a laila e hoʻopaʻa i kēlā me kēia a hana i kahi kikowaena EC2 i loko me ka hoʻohana ʻana i ka helu helu a me ke komo ʻana i ka helu helu helu:
E hana maikaʻi ana kēia code, no ka mea hiki i ka helu helu ke kuhikuhi i nā kumu ʻikepili me ka pilikia ʻole. Akā he aha ka hopena inā pili ka helu o nā kikowaena āu e hana ai i ka hoʻopuka ʻana o kekahi kumuwaiwai? No ka hōʻike ʻana i kēia, ʻo ke ala maʻalahi ka hoʻohana ʻana i ka punawai random_integer, e like me ka manaʻo o ka inoa, e hoʻihoʻi i kahi integer random:
resource "random_integer" "num_instances" {
min = 1
max = 3
}
Hoʻopuka kēia code i kahi helu maʻamau ma waena o 1 a me 3. E ʻike kākou i ka hopena inā hoʻāʻo mākou e hoʻohana i ka pukana o kēia kumuwaiwai ma ka helu helu o ka aws_instance resource:
Inā holo ʻoe i ka hoʻolālā terraform ma kēia code, e loaʻa iā ʻoe kēia hewa:
Error: Invalid count argument
on main.tf line 30, in resource "aws_instance" "example_3":
30: count = random_integer.num_instances.result
The "count" value depends on resource attributes that cannot be determined until apply, so Terraform cannot predict how many instances will be created. To work around this, use the -target argument to first apply only the resources that the count depends on.
Pono ʻo Terraform e helu ʻia ka helu a no_kekahi i ka wā o ka hoʻolālā, ma mua o ka hana ʻana a hoʻololi ʻia paha nā kumuwaiwai. 'O ia ho'i, hiki i ka helu a no_each ke kuhikuhi i nā hua'ōlelo, nā mea ho'ololi, nā kumu 'ikepili, a me nā papa inoa waiwai (inā lō'ihi ka lō'ihi e hiki ke ho'oholo 'ia i ka manawa ho'onohonoho), akā, 'a'ole i ka helu 'ana i nā mea ho'ololi waiwai.
ʻAʻole hiki ke hoʻohana ʻia ka helu a no_kekahi i ka hoʻonohonoho module
I kekahi lā e hoʻowalewale ʻia ʻoe e hoʻohui i kahi ʻāpana helu i kāu hoʻonohonoho module:
Ke hoʻāʻo nei kēia code e hoʻohana i ka helu i loko o kahi module e hana i ʻekolu kope o ka punawai pūnaewele pūnaewele-cluster. A i ʻole makemake paha ʻoe e hoʻohui i kahi module ma muli o kekahi kūlana Boolean ma ka hoʻonohonoho ʻana i kāna ʻāpana helu i 0. Me he code kūpono paha kēia, akā e loaʻa iā ʻoe kēia kuhi ke holo ʻana i ka hoʻolālā terraform:
Error: Reserved argument name in module block
on main.tf line 13, in module "count_example":
13: count = 3
The name "count" is reserved for use in a future version of Terraform.
ʻO ka mea pōʻino, ʻo Terraform 0.12.6, ʻaʻole kākoʻo ʻia ka hoʻohana ʻana i ka helu a i ʻole for_each i loko o kahi kumuwaiwai module. Wahi a ka Terraform 0.12 memo hoʻokuʻu (http://bit.ly/3257bv4), hoʻolālā ʻo HashiCorp e hoʻohui i kēia hiki i ka wā e hiki mai ana, no laila e pili ana i ka wā e heluhelu ai ʻoe i kēia puke, aia paha ia. No ka ike maopopo ana, heluhelu i ka Terraform changelog maanei.
Nā palena o nā hoʻolālā Zero Downtime
ʻO ka hoʻohana ʻana i ka poloka create_before_destroy i hui pū ʻia me ASG he hopena maikaʻi loa ia no ka hoʻokumu ʻana i nā deployments zero-downtime, koe wale nō hoʻokahi caveat: ʻaʻole kākoʻo ʻia nā lula autoscaling. A i ʻole e ʻoi aku ka pololei, hoʻihoʻi kēia i ka nui ASG i min_size i kēlā me kēia hoʻolālā, hiki ke pilikia inā ʻoe e hoʻohana ana i nā lula autoscaling e hoʻonui i ka helu o nā kikowaena e holo nei.
No ka laʻana, loaʻa i ka module webserver-cluster ʻelua mau kumuwaiwai aws_autoscaling_schedule, ma ka hola 9 am e hoʻonui ai i ka helu o nā kikowaena i ka hui mai ʻelua a ʻumi. Inā ʻoe e hoʻolaha i ka hola 11 a.m., e hoʻomaka ka ASG hou me ʻelua mau kikowaena ma mua o ka ʻumi a noho ma ia ala a hiki i ka hola 9 a.m. o ka lā aʻe.
Hiki ke kaʻe ʻia kēia palena ma nā ʻano he nui.
E hoʻololi i ka palena hoʻihoʻi ma aws_autoscaling_schedule mai 0 9 * * * ("holo ma 9 am") i mea like me 0-59 9-17 * * * ("holo i kēlā me kēia minuke mai 9 am a 5 pm"). Inā loaʻa iā ASG he ʻumi mau kikowaena, ʻaʻole e hoʻololi hou i kēia lula autoscaling, ʻo ia kā mākou makemake. Akā inā i kau ʻia ka ASG i kēia manawa, e hōʻoia kēia lula i ka lōʻihi o ka minuke e hiki i ka helu o kāna mau kikowaena i ka ʻumi. ʻAʻole kēia he ala nani loa, a ʻo ka lele nui ʻana mai ka ʻumi a ʻelua mau kikowaena a i hope hiki ke hoʻopilikia i nā mea hoʻohana.
E hana i palapala maʻamau e hoʻohana ana i ka AWS API no ka hoʻoholo ʻana i ka heluna o nā kikowaena hana ma ka ASG, e kāhea iā ia me ka hoʻohana ʻana i kahi kumu ʻikepili waho (e ʻike i ka "Kumu ʻIke Kūwaho" ma ka ʻaoʻao 249), a hoʻonoho i ka ʻāpana makemake_capacity o ka ASG i ka waiwai i hoʻihoʻi ʻia e ka palapala. Ma kēia ala, e holo mau ana kēlā me kēia hihia ASG hou i ka mana like me ka code Terraform i loaʻa a paʻakikī loa ka mālama ʻana.
ʻOiaʻiʻo, ʻo Terraform ka mea i kūkulu ʻia i ke kākoʻo no ka zero-downtime deployments, akā mai Mei 2019, ʻaʻohe manaʻo o ka hui HashiCorp e hoʻohui i kēia hana (kikoʻī - maanei).
Hiki ʻole ke hoʻokō pono ʻia ka papahana kūpono
I kekahi manawa, hoʻopuka ke kauoha hoʻolālā i kahi hoʻolālā hoʻolālā kūpono, akā hoʻihoʻi ke kauoha noi i kahi hewa. E ho'āʻo, no ka laʻana, e hoʻohui i ka punawai aws_iam_user me ka inoa like āu i hoʻohana ai no ka mea hoʻohana IAM āu i hana ai ma mua ma ka Mokuna 2:
resource "aws_iam_user" "existing_user" {
# Подставьте сюда имя уже существующего пользователя IAM,
# чтобы попрактиковаться в использовании команды terraform import
name = "yevgeniy.brikman"
}
I kēia manawa, inā e holo ʻoe i ke kauoha hoʻolālā, e hoʻopuka ʻo Terraform i kahi hoʻolālā hoʻolālā kūpono.
Terraform will perform the following actions:
# aws_iam_user.existing_user will be created
+ resource "aws_iam_user" "existing_user" {
+ arn = (known after apply)
+ force_destroy = false
+ id = (known after apply)
+ name = "yevgeniy.brikman"
+ path = "/"
+ unique_id = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
Inā holo ʻoe i ke kauoha noi e loaʻa iā ʻoe kēia hewa:
Error: Error creating IAM User yevgeniy.brikman: EntityAlreadyExists:
User with name yevgeniy.brikman already exists.
on main.tf line 10, in resource "aws_iam_user" "existing_user":
10: resource "aws_iam_user" "existing_user" {
ʻO ka pilikia, ʻoiaʻiʻo, aia kahi mea hoʻohana IAM me kēlā inoa. A hiki i kēia ke hana ʻaʻole i nā mea hoʻohana IAM wale nō, akā kokoke i nā kumuwaiwai. Hiki paha i kekahi ke hana i kēia kumuwaiwai me ka lima a i ʻole ka hoʻohana ʻana i ka laina kauoha, akā i kēlā me kēia ʻaoʻao, alakaʻi nā ID pili i nā paio. Nui nā ʻano like ʻole o kēia hewa e hopu pinepine ai i nā mea hou i Terraform me ka pīhoihoi.
ʻO ka mea nui, ʻo ke kauoha hoʻolālā terraform wale nō e noʻonoʻo i kēlā mau kumuwaiwai i kuhikuhi ʻia ma ka faila state Terraform. Inā hana ʻia nā kumuwaiwai ma kekahi ʻano ʻē aʻe (e like me ke kaomi lima ʻana i ka console AWS), ʻaʻole lākou e pau i ka faila mokuʻāina a no laila ʻaʻole e noʻonoʻo ʻo Terraform iā lākou i ka wā e hoʻokō ai i ke kauoha hoʻolālā. ʻO ka hopena, ʻo kahi hoʻolālā i manaʻo ʻia he pololei i ka nānā mua ʻana e lilo i mea kūleʻa ʻole.
ʻElua mau haʻawina e aʻo ʻia mai kēia.
Inā ua hoʻomaka ʻoe e hana me Terraform, mai hoʻohana i kekahi mea ʻē aʻe. Inā mālama ʻia kahi ʻāpana o kāu ʻoihana me Terraform, ʻaʻole hiki iā ʻoe ke hoʻololi hou iā ia me ka lima. A i ʻole, ʻaʻole ʻoe e pilikia wale i nā hewa Terraform ʻē aʻe, akā ke hōʻole nei ʻoe i nā pono he nui o IaC no ka mea ʻaʻole e lilo ke code i hōʻike pololei o kāu ʻoihana.
Inā loaʻa iā ʻoe kekahi mau ʻōnaehana, e hoʻohana i ke kauoha import. Inā hoʻomaka ʻoe e hoʻohana i ka Terraform me nā ʻenehana i loaʻa, hiki iā ʻoe ke hoʻohui iā ia i ka faila mokuʻāina me ka hoʻohana ʻana i ke kauoha terraform import. Ma kēia ala e ʻike ai ʻo Terraform i nā ʻōnaehana pono e mālama ʻia. ʻElua manaʻo hoʻopaʻapaʻa i ke kauoha import. ʻO ka mua, ʻo ia ka helu wahi i kāu mau faila hoʻonohonoho. Ua like ka syntax ma aneʻi me nā loulou kumuwaiwai: _. (e like me aws_iam_user.existing_user). ʻO ka pane ʻelua, ʻo ia ka ID o ka waiwai e lawe ʻia mai. E ʻōlelo kākou ʻo ka ID kumu aws_iam_user ka inoa mea hoʻohana (no ka laʻana, yevgeniy.brikman), a ʻo ka ID kumu waiwai aws_instance ʻo ia ka ID server EC2 (e like me i-190e22e5). Hōʻike pinepine ʻia ke ʻano o ka lawe ʻana i kahi kumuwaiwai ma ka palapala ma lalo o kāna ʻaoʻao.
Aia ma lalo kahi kauoha hoʻokomo e hoʻohui i ka aws_iam_user kumu waiwai āu i hoʻohui ai i kāu hoʻonohonoho Terraform me ka mea hoʻohana IAM ma ka Mokuna 2 (e hoʻololi i kou inoa no yevgeniy.brikman, ʻoiaʻiʻo):
E kāhea ʻo Terraform i ka AWS API no ka ʻimi ʻana i kāu mea hoʻohana IAM a hana i kahi hui waihona mokuʻāina ma waena o ia a me ka kumu aws_iam_user.existing_user i kāu hoʻonohonoho Terraform. Mai kēia manawa, ke holo nei ʻoe i ke kauoha hoʻolālā, e ʻike ʻo Terraform aia ka mea hoʻohana IAM a ʻaʻole ia e hoʻāʻo e hana hou.
He mea pono e hoʻomaopopo inā loaʻa iā ʻoe nā kumuwaiwai he nui āu e makemake ai e hoʻokomo i loko o Terraform, hiki ke paʻakikī ke kākau lima i ke code a me ka lawe ʻana i kēlā me kēia i ka manawa. No laila, pono e nānā i kahi mea hana e like me Terraforming (http://terraforming.dtan4.net/), hiki iā ia ke hoʻokomo i ka code a me ka mokuʻāina mai kāu moʻokāki AWS.
Hiki i ka refactoring ke loaʻa kona mau pilikia
Hana hou He hana maʻamau i ka papahana kahi e hoʻololi ai ʻoe i ke ʻano o loko o ke code me ka waiho ʻole ʻana i ke ʻano o waho. ʻO kēia ka mea e maʻalahi ai ke code, maʻemaʻe a maʻalahi hoʻi ka mālama ʻana. ʻO ka refactoring kahi ʻano hana pono e hoʻohana mau ʻia. Akā i ka hiki ʻana iā Terraform a i ʻole kekahi mea hana IaC ʻē aʻe, pono ʻoe e makaʻala loa i ka mea āu e manaʻo ai e ka "hana waho" o kahi ʻāpana code, i ʻole e ala mai nā pilikia i manaʻo ʻole ʻia.
No ka laʻana, ʻo kahi ʻano refactoring maʻamau ke hoʻololi nei i nā inoa o nā mea hoʻololi a i ʻole nā hana me nā mea i hoʻomaopopo ʻia. Nui nā IDE i kākoʻo no ka refactoring a hiki ke hoʻololi hou i nā mea hoʻololi a me nā hana i loko o ka papahana. Ma nā ʻōlelo hoʻolālā maʻamau, he kaʻina hana liʻiliʻi kēia āu e noʻonoʻo ʻole ai, akā ma Terraform pono ʻoe e makaʻala loa i kēia, i ʻole e ʻike paha ʻoe i nā outages.
No ka laʻana, loaʻa i ka module webserver-cluster kahi hoʻololi cluster_name:
variable "cluster_name" {
description = "The name to use for all the cluster resources"
type = string
}
E noʻonoʻo ʻoe ua hoʻomaka ʻoe e hoʻohana i kēia module e kau i kahi microservice i kapa ʻia ʻo foo. Ma hope, makemake ʻoe e hoʻololi i kāu lawelawe i bar. He mea liʻiliʻi paha kēia hoʻololi, akā ma ka ʻoiaʻiʻo hiki ke hoʻopilikia i ka lawelawe.
ʻO ka ʻoiaʻiʻo ka hoʻohana ʻana o ka module webserver-cluster i ka cluster_name variable i kekahi mau kumuwaiwai, e komo pū me ka inoa inoa o nā pūʻulu palekana ʻelua a me ka ALB:
Inā hoʻololi ʻoe i ka palena inoa ma kahi kumuwaiwai, e holoi ʻo Terraform i ka mana kahiko o ia kumuwaiwai a hana i kahi mea hou ma kona wahi. Akā inā he ALB kēlā punawai, ma waena o ka holoi ʻana iā ia a me ka hoʻoiho ʻana i kahi mana hou, ʻaʻole ʻoe e loaʻa kahi hana e hoʻihoʻi hou i ke kaʻa i kāu kikowaena pūnaewele. Pēlā nō, inā holoi ʻia kahi pūʻulu palekana, e hoʻomaka ana kāu mau kikowaena e hōʻole i nā kaʻa pūnaewele a hiki i ka hana ʻana o kahi hui hou.
ʻO kekahi ʻano refactoring āu e makemake ai e hoʻololi i ka Terraform ID. E lawe kākou i ka waiwai aws_security_group i loko o ka webserver-cluster module ma ke ʻano he laʻana:
Ua kapa ʻia ka mea ʻike o kēia kumuwaiwai. E noʻonoʻo ʻoe i ka wā refactoring ua hoʻoholo ʻoe e hoʻololi iā ia i kahi inoa maʻalahi (i kou manaʻo) cluster_instance:
He aha ka hopena i ka hopena? Pololei: he hoʻohaunaele.
Hoʻopili ʻo Terraform i kēlā me kēia ID kumuwaiwai me ka ID mea hāʻawi kapua. No ka laʻana, pili ʻo iam_user me ka ID mea hoʻohana AWS IAM, a pili ʻo aws_instance me ka ID server AWS EC2. Inā hoʻololi ʻoe i ka ID kumu waiwai (e ʻōlelo mai ka laʻana i cluster_instance, e like me ka hihia me aws_security_group), iā Terraform e ʻike ʻia me he mea lā ua holoi ʻoe i ka punawai kahiko a hoʻohui i kahi mea hou. Inā hoʻohana ʻoe i kēia mau hoʻololi, e hoʻopau ʻo Terraform i ka pūʻulu palekana kahiko a hana i kahi mea hou, ʻoiai e hoʻomaka ana kāu mau kikowaena e hōʻole i nā kaʻa pūnaewele.
Eia nā haʻawina koʻikoʻi ʻehā āu e lawe ai mai kēia kūkākūkā ʻana.
E hoʻohana mau i ke kauoha hoʻolālā. Hiki iā ia ke hōʻike i kēia mau pilikia a pau. E noʻonoʻo pono i kāna mea hoʻopuka a nānā i nā kūlana kahi e hoʻolālā ai ʻo Terraform e holoi i nā kumuwaiwai ʻaʻole pono e holoi ʻia.
E hana ma mua o kou holoi ʻana. Inā makemake ʻoe e pani i kahi kumuwaiwai, e noʻonoʻo pono inā pono ʻoe e hana i kahi pani ma mua o ka holoi ʻana i ka mea kumu. Inā ʻae ka pane, hiki iā create_before_destroy ke kōkua. Hiki ke loaʻa ka hopena like me ka lima ma ka hana ʻana i ʻelua mau ʻanuʻu: hoʻohui mua i kahi kumuwaiwai hou i ka hoʻonohonoho a holo i ke kauoha noi, a laila wehe i ka punawai kahiko mai ka hoʻonohonoho ʻana a hoʻohana hou i ke kauoha noi.
Pono ka hoʻololi ʻana i nā mea hōʻike. Inā makemake ʻoe e hoʻololi i ka ID e pili ana i kahi kumuwaiwai (e laʻa, hoʻololi i ka inoa aws_security_group mai ka laʻana i cluster_instance) me ka ʻole e holoi i ka punawai a hana i kahi mana hou o ia mea, pono ʻoe e hoʻololi i ka faila state Terraform e like me ia. Mai hana lima i kēia - e hoʻohana i ke kauoha mokuʻāina terraform. Ke hoʻololi hou i nā mea ʻike, pono ʻoe e holo i ke kauoha terraform state mv, nona kēia syntax:
terraform state mv <ORIGINAL_REFERENCE> <NEW_REFERENCE>
ʻO ORIGINAL_REFERENCE kahi ʻōlelo e pili ana i ka punawai ma kona ʻano o kēia manawa, a ʻo NEW_REFERENCE kahi āu e makemake ai e neʻe. No ka laʻana, i ka hoʻololi ʻana i ka hui aws_security_group mai kahi laʻana i cluster_instance, pono ʻoe e holo i kēia kauoha:
$ terraform state mv
aws_security_group.instance
aws_security_group.cluster_instance
Hōʻike kēia iā Terraform e pili ana ka mokuʻāina i pili mua me aws_security_group.instance me aws_security_group.cluster_instance. Inā ma hope o ka hoʻololi ʻana a me ka holo ʻana i kēia kauoha terraform plan ʻaʻole hōʻike i nā loli, a laila ua hana pololei ʻoe i nā mea āpau.
ʻAʻole hiki ke hoʻololi ʻia kekahi mau hoʻonohonoho. ʻAʻole hiki ke hoʻololi i nā palena o nā kumuwaiwai he nui. Inā ho'āʻo ʻoe e hoʻololi iā lākou, e holoi ʻo Terraform i ka punawai kahiko a hana i kahi mea hou ma kona wahi. E hōʻike pinepine ʻia kēlā me kēia ʻaoʻao punawai i ka mea e hoʻololi ai i kahi hoʻonohonoho, no laila e nānā pono i ka palapala. E hoʻohana mau i ke kauoha hoʻolālā a noʻonoʻo e hoʻohana i ka hoʻolālā create_before_destroy.
Kūlike ka hoʻopaneʻe ʻia... me ka hoʻopaneʻe
ʻO kekahi mau API o nā mea hoʻolako kapua, e like me AWS, ʻaʻohe like ʻole a ua hoʻopaneʻe ka paʻa. Asynchrony 'o ia ho'i, hiki i ka interface ke ho'iho'i koke i ka pane me ka kali 'ole i ka hana i noi 'ia e ho'opau. ʻO ka hoʻopaneʻe ʻana, ʻo ia hoʻi, hiki i nā loli ke hoʻonui i ka manawa a puni ka ʻōnaehana; ʻOiai e hana ʻia ana kēia, ʻaʻole kūlike paha kāu mau pane a hilinaʻi ʻia i ka hoʻopiʻi kumu ʻikepili e pane ana i kāu mau kelepona API.
E noʻonoʻo, no ka laʻana, e hana ʻoe i kahi kelepona API iā AWS e noi ana iā ia e hana i kahi kikowaena EC2. E hoʻihoʻi ka API i kahi pane "kūpono" (201 Hana ʻia) kokoke koke, me ka kali ʻole e hana ʻia ka server ponoʻī. Inā ʻoe e hoʻāʻo e hoʻopili koke iā ia, ʻaneʻane pau ʻole ia no ka mea i kēlā manawa ke hoʻomaka nei ʻo AWS i nā kumuwaiwai a i ʻole, ʻaʻole i hoʻomaka ka server. Eia kekahi, inā ʻoe e kelepona hou e kiʻi i ka ʻike e pili ana i kēia kikowaena, loaʻa paha iā ʻoe kahi hewa (404 ʻAʻole Loaʻa). ʻO ka mea, hiki ke hoʻolaha ʻia ka ʻike e pili ana i kēia kikowaena EC2 ma AWS ma mua o ka loaʻa ʻana ma nā wahi āpau, pono ʻoe e kali i kekahi mau kekona.
I kēlā me kēia manawa āu e hoʻohana ai i kahi API asynchronous me ka palaualelo, pono ʻoe e hoʻāʻo hou i kāu noi a hiki i ka pau ʻana o ka hana a hoʻolaha i ka ʻōnaehana. ʻO ka mea pōʻino, ʻaʻole hāʻawi ka AWS SDK i nā mea hana maikaʻi no kēia, a ua hoʻohana ʻia ka papahana Terraform i ka nui o nā pōpoki e like me 6813 (https://github.com/hashicorp/terraform/issues/6813):
$ terraform apply
aws_subnet.private-persistence.2: InvalidSubnetID.NotFound:
The subnet ID 'subnet-xxxxxxx' does not exist
Ma nā huaʻōlelo ʻē aʻe, hana ʻoe i kahi kumuwaiwai (e like me kahi subnet) a laila e hoʻāʻo e kiʻi i kekahi ʻike e pili ana iā ia (e like me ka ID o ka subnet hou i hana ʻia), ʻaʻole hiki ke loaʻa iā Terraform. Ua hoʻopaʻa ʻia ka hapa nui o kēia mau pōpoki (me 6813), akā e ulu mau ana lākou i kēlā me kēia manawa, ʻoi aku ka nui o ka hoʻohui ʻana o Terraform i ke kākoʻo no kahi ʻano kumuwaiwai hou. He mea hoʻonāukiuki kēia, akā i ka hapanui o nā hihia, ʻaʻole ia e hōʻeha. Ke hoʻohana hou ʻoe i ka terraform, pono e hana nā mea a pau, no ka mea ma kēia manawa ua laha ka ʻike ma ka ʻōnaehana.