{"id":68848,"date":"2024-07-10T18:04:31","date_gmt":"2024-07-10T14:34:31","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/"},"modified":"2024-07-10T18:04:31","modified_gmt":"2024-07-10T14:34:31","slug":"deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/","title":{"rendered":"\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Terraform \u06cc\u06a9 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0628\u0627 \u06af\u0648\u0627\u0647\u06cc Route53\u060c CloudFront \u0648 AWS \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f."},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0645\u062a \u0627\u0632 \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0645\u0644\u06a9\u0647 \u0627\u0633\u062a\u060c \u0647\u0631 \u0686\u0647 \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Terraform \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc\u0646 \u0627\u0628\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.  Terraform \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 \u06a9\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0645\u0646\u0627\u0628\u0639 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u0633\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0646\u0633\u062e\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.  \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062b\u0627\u0628\u062a \u0628\u0631\u0627\u06cc \u062a\u0647\u06cc\u0647 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062e\u0648\u062f \u062f\u0631 \u0637\u0648\u0644 \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0627\u0645\u0644 \u062a\u0631\u0627\u0641\u0648\u0631\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u06a9\u0647 \u0627\u0645\u0631\u0648\u0632 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0627\u0628\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646 \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f main.tf \u0641\u0627\u06cc\u0644 \u0648 \u0627\u0644\u0641 provider.tf \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0645\u0646.  \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 AWS \u0631\u0627 \u0628\u0631\u0627\u06cc Terraform \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0631\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u0646\u0627\u0628\u0639 AWS \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062a\u0648\u0633\u0637 Terraform \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API \u0647\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0633\u0627\u0632\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a AWS \u0647\u0633\u062a\u06cc\u0645\u060c \u0627\u0632 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a AWS \u0628\u0631\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0627\u06af\u0631 \u062f\u0631 GCP \u06cc\u0627 Azure \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0622\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0628\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0631 provider.tf \u0641\u0627\u06cc\u0644 \u0645\u0646 \u0628\u0644\u0648\u06a9 terraform \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0644\u0648\u06a9 \u06a9\u062f terraform \u0628\u0647 terraform \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0627\u0632 API AWS \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0645\u0627 \u0631\u0627 \u0628\u0633\u0627\u0632\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 AWS \u0631\u0627 \u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 provider.tf \u0641\u0627\u06cc\u0644 \u062e\u0637\u0648\u0637 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>terraform {<br \/>\n  required_providers {<br \/>\n    aws = {<br \/>\n      source = &#8220;hashicorp\/aws&#8221;<br \/>\n    }<br \/>\n  }<br \/>\n}<\/p>\n<p>provider &#8220;aws&#8221; {<br \/>\n  region = &#8220;us-east-1&#8221;<br \/>\n  shared_credentials_files = [&#8220;~\/.aws\/credentials&#8221;]\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u062f\u0631 \u0645\u0648\u0631\u062f terraform \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u06cc\u062f \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0628\u0627 terraform \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u06a9\u0645\u06a9 \u0628\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a Terraform \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0628\u0644\u0648\u06a9 terraform \u0645\u0646 AWS \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0627 \u0645\u0646\u0628\u0639 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0645 hashicorp\/aws \u0627\u0645\u0627 \u0645\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0645 version \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0686\u0648\u0646 \u0645\u0646 \u0645\u0627\u06cc\u0644\u0645 terraform \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0634\u062f \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0627\u0635 \u0628\u0647 AWS \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0645 region \u0627\u0633\u062a\u062f\u0644\u0627\u0644\u060c \u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.  \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0645 AWS configure \u0628\u0627 AWS CLI \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0645 shared_credentials_file \u0622\u0631\u06af\u0648\u0645\u0627\u0646 (\u0627\u06af\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0647 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0631\u062c \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f profile \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0627\u0645 \u0646\u0645\u0627\u06cc\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f) \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Terraform \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 AWS \u062e\u0648\u062f \u062f\u0631 AWS CLI\u060c \u0627\u06cc\u0646 \u067e\u0633\u062a \u0645\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u0645.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u0646 \u0622\u0645\u0627\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0647\u0633\u062a\u0645 terraform init \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 terraform \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 AWS \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>terraform init<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Terraform \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.  \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0634\u0645\u0627 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0631\u062c\u0627\u0639 \u062f\u0627\u062f\u0647 \u0648 \u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u06cc\u06a9 \u0631\u0627\u0647 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0647\u0633\u062a\u0646\u062f Don&#8217;t Repeat Yourself (DRY) \u0627\u0635\u0644 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u06a9\u0647 \u0628\u06cc\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u062f \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0627\u0631 \u0646\u0648\u0634\u062a\u0647 \u0634\u0648\u062f \u0648 \u062a\u06a9\u0631\u0627\u0631 \u0646\u0634\u0648\u062f.  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062e\u062f\u0645\u062a \u0628\u0647 \u06cc\u06a9 \u0647\u062f\u0641 \u062e\u0627\u0635 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u062c\u0632\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062f\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0627\u0633\u0627\u0633\u0627\u064b \u062f\u0648 \u0646\u0648\u0639 \u0645\u0627\u0698\u0648\u0644 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634 \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f (\u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0631\u06cc\u0634\u0647 \u0648 \u0641\u0631\u0632\u0646\u062f) \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f \u06cc\u0627 \u0646\u0647\u060c \u0645\u0627 \u062f\u0648 \u0646\u0648\u0639 \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0646\u06cc\u0632 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0645\u062d\u0644\u06cc \u0648 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647).<\/p>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0647\u062a\u0631\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f Terraform \u0627\u0633\u062a.  \u062a\u06a9\u0631\u0627\u0631 \u0647\u0645\u0627\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0627\u0631 \u062f\u0634\u0648\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0632\u06cc\u0631\u0627 HCL \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0627\u0639\u0644\u0627\u0646\u06cc \u0627\u0633\u062a \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0644\u0641\u0638\u06cc \u0628\u0627\u0634\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0647\u06cc\u0646\u0647\u060c \u0628\u0627\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0645\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0627\u0698\u0648\u0644 \u0645\u06cc \u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 a \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f modules \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0647\u0631 \u0686\u0647 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0646\u0627\u0645 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 Modules \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u060c \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0645\u0646 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 S3 \u062e\u0648\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 s3-bucket \u062f\u0631 Modules \u0641\u0647\u0631\u0633\u062a \u0631\u0627\u0647\u0646\u0645\u0627.  \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 main.tf\u060c variables.tf\u060c output.tf.<\/p>\n<p>  \u0633\u0637\u0644 S3 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>  modules\/s3-bucket\/variables.tf<\/p>\n<p>\u062f\u0631 variables.tf \u0645\u0646 \u0646\u0627\u0645 \u0633\u0637\u0644 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u0645:<\/p>\n<p>variable &#8220;bucket-name&#8221; {<br \/>\n  description = &#8220;The name of the S3 bucket&#8221;<br \/>\n  type        = string<\/p>\n<p>  validation {<br \/>\n    condition     = (<br \/>\n      length(var.bucket-name) &gt;= 3 &amp;&amp; length(var.bucket-name) = 63 &amp;&amp;<br \/>\n      can(regex(&#8220;^[a-z0-9][a-z0-9-.]*[a-z0-9]$&#8221;, var.bucket-name))<br \/>\n    )<br \/>\n    error_message = &#8220;The bucket name must be between 3 and 63 characters, start and end with a lowercase letter or number, and can contain only lowercase letters, numbers, hyphens, and dots.&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0627\u0645 \u0633\u0637\u0644 \u0628\u06cc\u0646 3 \u062a\u0627 63 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0627 \u06cc\u06a9 \u062d\u0631\u0641 \u06cc\u0627 \u0639\u062f\u062f \u06a9\u0648\u0686\u06a9 \u0634\u0631\u0648\u0639 \u0648 \u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0628\u062f \u0648 \u0641\u0642\u0637 \u0634\u0627\u0645\u0644 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9\u060c \u0627\u0639\u062f\u0627\u062f\u060c \u062e\u0637 \u062a\u06cc\u0631\u0647 \u0648 \u0646\u0642\u0637\u0647 \u0628\u0627\u0634\u062f.  \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0647\u0631\u06af\u0648\u0646\u0647 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a AWS \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u0633\u0637\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0647\u0645\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u06af\u06cc \u0648 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0622\u0633\u0627\u0646 \u06a9\u062f \u0627\u0633\u062a.  \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u0648 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0647\u0631 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 .var \u0646\u0634\u0627\u0646\u0647 \u06af\u0630\u0627\u0631\u06cc.<\/p>\n<p>  modules\/s3-bucket\/main.tf<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0633\u0637\u0644 S3\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 aws_s3_bucket \u0628\u0644\u0648\u06a9 \u0645\u0646\u0627\u0628\u0639 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 main.tf \u0645\u0637\u0627\u0628\u0642 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p># Create S3 Bucket<br \/>\nresource &#8220;aws_s3_bucket&#8221; &#8220;site-bucket&#8221; {<br \/>\n  bucket = var.bucket-name<br \/>\n  force_destroy = true<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0646\u0627\u0645 \u0633\u0637\u0644 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0639\u0631\u0636\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>  modules\/s3-bucket\/outputs.tf<\/p>\n<p>\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0642\u06cc\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<p>\u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f outputs.tf \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>output &#8220;bucket_regional_domain_name&#8221; {<br \/>\n  description = &#8220;This is the bucket domain name including the region name.&#8221;<br \/>\n  value = aws_s3_bucket.site-bucket.bucket_regional_domain_name<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  S3 Bucket \u0631\u0627 \u0628\u0647 Root Module \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>  main.tf<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u06a9\u0647 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0646\u0648\u0634\u062a\u0647 \u0627\u06cc\u0645\u060c \u06cc\u06a9 \u0633\u0637\u0644 s3 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0628\u0647 \u0633\u0645\u062a main.tf \u0641\u0627\u06cc\u0644 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627\u060c \u062e\u0627\u0631\u062c \u0627\u0632 \u0634\u0645\u0627 Module \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>module &#8220;s3-bucket&#8221; {<br \/>\n  source = &#8220;.\/Modules\/s3-bucket&#8221;<br \/>\n  bucket-name = var.bucket-name<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/p>\n<p>\u0633\u0647 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0646\u06cc\u0632 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f variables.tf\u060c outputs.tf \u0648 terraform.tfvars.<\/p>\n<p>\u062f\u0631 variables.tf \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>variable &#8220;bucket-name&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062e\u0631\u0648\u062c\u06cc \u0647\u0627.tf<\/p>\n<p>\u062f\u0631 outputs.tf \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>output &#8220;bucket-name&#8221; {<br \/>\n  value = module.s3-bucket.site-bucket.bucket_regional_domain_name<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<p>  terraform.tfvars<\/p>\n<p>\u062f\u0631 terraform.tfvars \u0641\u0627\u06cc\u0644\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>bucket-name = &#8221;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u26a0\ufe0f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/p>\n<p>\u0634\u0645\u0627 .tfvars \u0641\u0627\u06cc\u0644 \u0647\u0631\u06af\u0632 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0633\u062e\u0647 \u0645\u062a\u0639\u0647\u062f \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f .gitignore \u0641\u0627\u06cc\u0644.  \u0645\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f .gitignore \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0634\u0645\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc gitignore \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f\u060c \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f terraform init \u0645\u062c\u062f\u062f\u0627\u064b \u062f\u0633\u062a\u0648\u0631\u060c \u0647\u0646\u06af\u0627\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u06cc\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u0627\u06af\u0631 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f \u0648 \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 terraform \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u06cc\u062f terraform plan \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f terraform \u0642\u0635\u062f \u062f\u0627\u0631\u062f \u062f\u0631 \u062d\u0633\u0627\u0628 AWS \u0634\u0645\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0633\u0637\u0644\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>terraform apply<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c terraform \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 \u0634\u0645\u0627 \u0645\u06cc \u067e\u0631\u0633\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0639\u0645\u0644 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u0627 \u0628\u0644\u0647 \u06cc\u0627 \u062e\u06cc\u0631 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.  \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0637\u0631\u062d \u0634\u062f\u0646 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0622\u0646 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f auto approve \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0645\u0637\u0627\u0628\u0642 \u0634\u06a9\u0644 \u0632\u06cc\u0631:<\/p>\n<p>terraform apply &#8211;auto-approve<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 \u0633\u0637\u0644 s3 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u062f\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0628\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a terraform \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0633\u0637\u0644 \u0646\u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f\u0646 \u0633\u0637\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>terraform destroy<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 TF \u0628\u0631\u0627\u06cc Terraform<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u06a9\u0648\u062a\u0627\u0647 \u0628\u0631\u0627\u06cc terraform \u0628\u06af\u0630\u0627\u0631\u0645\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0644\u06cc \u0622\u0646 \u0631\u0627 terraform \u0628\u0646\u0627\u0645\u06cc\u0645.  \u062a\u0646\u0638\u06cc\u0645 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 terraform to be tf \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u0645\u060c \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0635\u0631\u06cc\u062d \u0646\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a. terraform \u0627\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 tf \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 tf apply \u0628\u062c\u0627\u06cc terraform apply.  \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u0641\u0631\u0645\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u06a9\u0648\u062a\u0627\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0628\u0631\u0627\u06cc \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645:<\/p>\n<p>vi ~\/.bash_profile<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc bash \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u060c \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0628\u0627 \u0634\u06a9\u0644 \u06a9\u0648\u062a\u0627\u0647 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<p>alias tf=&#8221;terraform&#8221;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0639\u0645\u0627\u0644 \u0634\u0648\u062f.<\/p>\n<p>source ~\/.bash_profile<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u062c\u0627\u06cc terraform \u0627\u0632 tf \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/p>\n<p>  \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0637\u0644 S3 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0648\u0628 \u0633\u0627\u06cc\u062a \u062e\u0648\u062f \u062f\u0631 \u0633\u0637\u0644\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0646 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0630\u062e\u06cc\u0631\u0647 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f web-assets \u0648 \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  modules\/s3-bucket\/main.tf<\/p>\n<p>\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f for_each \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0647\u0627\u06cc \u0645\u062a\u0627 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0633\u0637\u0644 \u062e\u0648\u062f\u060c \u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u06cc\u0645.  \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0645\u0646\u0637\u0642\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u0645\u0646\u0627\u0628\u0639 Terraform \u0631\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062c\u0632\u0626\u06cc \u062f\u0631 \u0647\u0631 \u0628\u0644\u0648\u06a9 \u06a9\u067e\u06cc \u0648 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.  \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0641\u0642\u0637 \u0628\u0631 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u062a\u0623\u062b\u06cc\u0631 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc IaC \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f main.tf \u0641\u0627\u06cc\u0644:<\/p>\n<p># Upload objects into the s3 Bucket<br \/>\nresource &#8220;aws_s3_object&#8221; &#8220;upload-assets&#8221; {<br \/>\n  for_each = fileset(&#8220;${var.web-assets-path}&#8221;, &#8220;**\/*&#8221;)<br \/>\n  bucket = aws_s3_bucket.site-bucket.bucket<br \/>\n  key = each.value<br \/>\n  source = &#8220;${var.web-assets-path}\/${each.value}&#8221;<br \/>\n  content_type = lookup(var.mime_types, regex(&#8220;\\\\.[^.]+$&#8221;, each.value), &#8220;application\/octet-stream&#8221;)<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 for-each \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0648\u0628 \u0633\u0627\u06cc\u062a \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.  \u0645\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645 fileset \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0628\u0631 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647\u060c \u0647\u0631 \u0641\u0627\u06cc\u0644\/\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0644\u0642\u0647 for_each \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u0646\u0628\u0639 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0645\u0633\u06cc\u0631 \u0633\u062e\u062a \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a variable.tf \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06cc\u0646 for_each \u062d\u0644\u0642\u0647 \u0631\u0648\u06cc fileset \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0646\u0647 \u062c\u0641\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 each.value \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0645\u0627 \u0648 \u0646\u0647 each.key.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0647\u0631 \u0646\u0648\u0639 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0648\u0639 MIME \u0645\u0631\u0628\u0648\u0637\u0647 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0632 lookup \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0631 content_type \u0628\u062d\u062b \u0648 \u062c\u062f\u0644. lookup(map, key, default) \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u062f\u0631 \u0646\u0642\u0634\u0647 \u062c\u0633\u062a\u062c\u0648 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u06cc\u0627\u0641\u062a\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.  \u0627\u06af\u0631 \u06a9\u0644\u06cc\u062f \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u062f.<\/p>\n<p>\u062a\u0627\u0628\u0639 regex \u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 each.value \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06a9\u0647 \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0646\u0648\u0639 MIME \u062f\u0642\u06cc\u0642\u200c\u062a\u0631 \u0628\u0647\u200c\u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f.<\/p>\n<p>  modules\/s3-bucket\/variables.tf<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0628\u0627\u0644\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p># Set the variable for the file path of the files to be uploaded to the bucket<br \/>\nvariable &#8220;web-assets-path&#8221; {<br \/>\n  description = &#8220;This is the location of our website files&#8221;<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;mime_types&#8221; {<br \/>\n  description = &#8220;Map of file extensions to MIME types&#8221;<br \/>\n  type        = map(string)<br \/>\n  default = {<br \/>\n    &#8220;.html&#8221; = &#8220;text\/html&#8221;<br \/>\n    &#8220;.css&#8221;  = &#8220;text\/css&#8221;<br \/>\n    &#8220;.png&#8221;  = &#8220;image\/png&#8221;<br \/>\n    &#8220;.jpg&#8221;  = &#8220;image\/jpeg&#8221;<br \/>\n    &#8220;.jpeg&#8221; = &#8220;image\/jpeg&#8221;<br \/>\n    &#8220;.pdf&#8221;  = &#8220;application\/pdf&#8221;<br \/>\n    &#8220;json&#8221; = &#8220;application\/json&#8221;<br \/>\n    &#8220;js&#8221;   = &#8220;application\/javascript&#8221;<br \/>\n    &#8220;gif&#8221;  = &#8220;image\/gif&#8221;<br \/>\n    # Add more extensions and MIME types as needed<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f main.tf\u060c variable.tf \u0648 terraform.tfvars \u0641\u0627\u06cc\u0644 \u0647\u0627<\/p>\n<p>  main.tf<\/p>\n<p>\u0645\u0627 \u0645\u0627\u0698\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645.  \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 main.tf \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p>module &#8220;s3-bucket&#8221; {<br \/>\n  source = &#8220;.\/Modules\/s3-bucket&#8221;<br \/>\n  bucket-name = var.bucket-name<br \/>\n  web-assets-path = var.web-assets-path<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062a\u063a\u06cc\u0631.tf<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 variable.tf \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p>variable &#8220;bucket-name&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;web-assets-path&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  terraform.tfvars<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 terraform.tfvars \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p>bucket-name = &#8221;<br \/>\nweb-assets-path = &#8221;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u26a0\ufe0f \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f <\/p>\n<p>\u062d\u062a\u06cc \u0627\u06af\u0631 \u0634\u0645\u0627 \u0647\u0646\u0648\u0632 \u0648\u0627\u062c\u062f \u0634\u0631\u0627\u06cc\u0637 \u0633\u0637\u062d \u0631\u0627\u06cc\u06af\u0627\u0646 AWS \u0647\u0633\u062a\u06cc\u062f\u060c \u0633\u0631\u0648\u06cc\u0633 Route53 \u0647\u0631\u06af\u0632 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0646\u06cc\u0633\u062a.  \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0647\u0632\u06cc\u0646\u0647 0.50 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0645\u0627\u0647 \u0631\u0627 \u062c\u0630\u0628 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647 \u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0622\u0646 \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06a9\u062b \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0634\u0648\u062f\u060c \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u0645 \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062f\u0633\u062a\u06cc \u0645\u0646\u0628\u0639 \u0631\u0627 \u0628\u0647 terraform \u0648\u0627\u0631\u062f \u06a9\u0646\u0645\u060c \u0627\u0645\u0627 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0628\u06cc\u0634\u062a\u0631\u060c \u062f\u0644\u06cc\u0644\u06cc \u0646\u062f\u0627\u0631\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 Terraform \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u062f. <\/p>\n<p>\u062f\u0644\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  Terraform \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0631\u0627 \u0646\u062f\u0627\u0631\u062f \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0645\u0627 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0646\u0627\u0645\u0648\u0641\u0642 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645\u060c \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0631\u0627 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 terraform data \u0645\u0646\u0628\u0639\u060c \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 Terraform \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0647\u0631 \u06af\u0648\u0646\u0647 \u0645\u0634\u06a9\u0644\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f\u0647 \u0628\u0627\u0634\u062f \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647<\/p>\n<p>\u06a9\u0646\u0633\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<br \/>\n\u06a9\u0647 \u062f\u0631 Services \u0632\u06cc\u0631 Network and Content delivery \u062f\u0633\u062a\u0647 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f Route53<\/p>\n<p>\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f create hosted zone<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f domain name.<br \/>\n\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f public hosted zone \u0632\u06cc\u0631 type.<br \/>\n\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\n\u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f create hosted zone.<\/p>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 AWS \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f.<br \/>\n\u0647\u0631 \u0633\u0631\u0648\u0631 \u0646\u0627\u0645 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0645\u0627 \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0628\u0639 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0628\u0639 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 terraform\u060c \u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f Module \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0634\u062f route53.<\/p>\n<p>  Modules\/route53\/main.tf<\/p>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p># Retrieve information about your hosted zone from AWS<br \/>\ndata &#8220;aws_route53_zone&#8221; &#8220;created&#8221; {<br \/>\n  name = var.domain_name<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u062f \u0628\u0627\u0644\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0632\u06cc\u0627\u062f \u0628\u0647 \u0646\u0638\u0631 \u0646\u0631\u0633\u062f \u0627\u0645\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062d\u0633\u0627\u0628 AWS \u0645\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0646\u0627\u0645\u06cc \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f \u0648 \u0633\u067e\u0633 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0647\u0631 \u06a9\u062c\u0627 \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. data \u0645\u0646\u0628\u0639 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627<\/p>\n<p>  Modules\/route53\/variables.tf<\/p>\n<p>\u0634\u0645\u0627 \u0645\u062a\u0647 \u0631\u0627 \u0645\u06cc \u0634\u0646\u0627\u0633\u06cc\u062f\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0645 \u0634\u062f\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u062f \u0634\u0645\u0627 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0627\u0634\u062f.<\/p>\n<p># domain name variable<br \/>\nvariable &#8220;domain_name&#8221; {<br \/>\n  description = &#8220;This is the name of the hosted zone.&#8221;<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0641\u0631\u0622\u06cc\u0646\u062f \u06cc\u06a9 \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u062f\u0631 terraform \u0646\u06cc\u0633\u062a\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u06af\u0648\u0627\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc SSL \u062e\u0648\u062f \u062f\u0631 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644\u060c \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f certificate \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631 Module \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644 \u06af\u0648\u0627\u0647\u06cc \u0645\u0627 \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u062c\u0627\u06cc \u0645\u06cc \u062f\u0647\u062f.  3 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0622\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f main.tf\u060c variable.tf \u0648 output.tf.<\/p>\n<p>  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\/\u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\/main.tf<\/p>\n<p># Create the TLS\/SSL certificate<br \/>\nresource &#8220;aws_acm_certificate&#8221; &#8220;cert&#8221; {<br \/>\n  domain_name               = var.domain_name<br \/>\n  validation_method         = var.validation_method<br \/>\n  subject_alternative_names = var.subject_alternative_names<\/p>\n<p>  # Ensure that the resource is rebuilt before destruction when running an update<br \/>\n  lifecycle {<br \/>\n    create_before_destroy = true<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/certificate\/variables.tf<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>variable &#8220;domain_name&#8221; {<br \/>\n  description = &#8220;Domain name for which the certificate should be issued&#8221;<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;validation_method&#8221; {<br \/>\n  description = &#8220;Which method to use for validation.&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;DNS&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;subject_alternative_names&#8221; {<br \/>\n  description = &#8220;Set of domains that should be SANs in the issued certificate.&#8221;<br \/>\n  type = list(string)<br \/>\n  default = []\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/certificate\/outputs.tf<\/p>\n<p>\u062e\u0631\u0648\u062c\u06cc \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0631\u062c\u0627\u0639 \u062f\u0647\u06cc\u0645 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<p>output &#8220;cert-arn&#8221; {<br \/>\n  value = aws_acm_certificate.cert.arn<br \/>\n}<\/p>\n<p>output &#8220;domain_validation_options&#8221; {<br \/>\n  value = aws_acm_certificate.cert.domain_validation_options<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0631\u06a9\u0648\u0631\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc ACM \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0628\u0639 \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f DNS \u062f\u0631 AWS Route 53 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0645\u0627\u0644\u06a9\u06cc\u062a \u062f\u0627\u0645\u0646\u0647 \u0628\u0631\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc AWS ACM \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.  \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u06a9\u0648\u0631\u062f DNS (\u0646\u0627\u0645\u060c \u0645\u0642\u062f\u0627\u0631\u060c \u0646\u0648\u0639) \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0627\u0645\u0646\u0647 \u06af\u0648\u0627\u0647\u06cc ACM \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u06cc\u062f. <\/p>\n<p>\u0645\u0627 \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f \u0631\u0627 \u062f\u0631 route53 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u067e\u0633 \u0628\u0647 \u0633\u0631\u0627\u063a \u062e\u0648\u062f\u062a\u0627\u0646 \u0628\u0631\u0648\u06cc\u062f Modules\/route53\/main.tf \u0641\u0627\u06cc\u0644.  \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>  Modules\/route53\/main.tf<\/p>\n<p># Create DNS record that will be used for our certificate validation<br \/>\nresource &#8220;aws_route53_record&#8221; &#8220;cert_validation&#8221; {<br \/>\n  for_each   = { for dvo in var.domain_validation_options : dvo.domain_name =&gt; {<br \/>\n    name     = dvo.resource_record_name<br \/>\n    type     = dvo.resource_record_type<br \/>\n    record   = dvo.resource_record_value<br \/>\n  } }<\/p>\n<p>  name       = each.value.name<br \/>\n  type       = each.value.type<br \/>\n  records    = [each.value.record]\n  ttl        = 60<br \/>\n  zone_id  = data.aws_route53_zone.created.zone_id<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u062f \u0628\u0627\u0644\u0627 \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f CNAME \u062f\u0631 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06af\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06af\u0648\u0627\u0647\u06cc te \u0648 \u0627\u06cc\u062c\u0627\u062f \u0631\u06a9\u0648\u0631\u062f \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u062e\u0637 \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f terraform apply \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f.<\/p>\n<p>  Modules\/route53\/variables.tf<\/p>\n<p>\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 route53 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>variable &#8220;domain_validation_options&#8221; {<br \/>\n  description             = &#8220;The domain validation options from the ACM certificate.&#8221;<br \/>\n  type                    = list(object({<br \/>\n    domain_name           = string<br \/>\n    resource_record_name  = string<br \/>\n    resource_record_type  = string<br \/>\n    resource_record_value = string<br \/>\n  }))<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 aws_acm_certificate \u0645\u0646\u0628\u0639 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u062f\u0631 Terraform \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc \u062f\u0647\u062f\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 aws_acm_certificate_validation \u0645\u0646\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0622\u0646<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0645 \u0648 \u0627\u0632 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f domain_validation_options \u0627\u0628\u062a\u062f\u0627 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0642\u0628\u0644 \u0627\u0632 terraform \u062f\u0633\u062a\u0648\u0631 for_each \u0645\u0627 \u0631\u0627 \u0627\u0631\u062c \u0645\u06cc \u0646\u0647\u062f\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0633\u067e\u0633 \u0631\u06a9\u0648\u0631\u062f \u0648 \u0633\u067e\u0633 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0628\u0627\u0644\u0627\u060c \u0645\u0627 \u0645\u0631\u062d\u0644\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u06af\u0648\u0627\u0647\u06cc \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u0628\u0644\u06a9\u0647 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 Route53 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645. Route53 \u0645\u062f\u0648\u0644.<\/p>\n<p>\u06a9\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<p>  Modules\/route53\/main.tf<\/p>\n<p># Validate the certificate<br \/>\nresource &#8220;aws_acm_certificate_validation&#8221; &#8220;validate-cert&#8221; {<br \/>\n  certificate_arn = var.certificate_arn<br \/>\n  validation_record_fqdns = [for record in aws_route53_record.cert_validation : record.fqdn]\n<p>  depends_on = [aws_route53_record.cert_validation]\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 depends_on \u0622\u0631\u06af\u0648\u0645\u0627\u0646 terraform \u0631\u0627 \u0645\u062c\u0628\u0648\u0631 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f aws_route53_record.cert_validation \u0642\u0628\u0644 \u0627\u0632 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc \u0645\u0627\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0646\u0628\u0639 \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  Modules\/route53\/variables.tf<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 variables.tf \u0645\u0627\u0698\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>variable &#8220;certificate_arn&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/route53\/outputs.tf<\/p>\n<p>\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 outputs.tf \u0645\u0627\u0698\u0648\u0644 route53 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>output &#8220;dns_records&#8221; {<br \/>\n  value = aws_route53_record.cert_validation<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u0631\u06a9\u0648\u0631\u062f \u0645\u0633\u062a\u0639\u0627\u0631 \u062a\u0648\u0632\u06cc\u0639 CloudFront \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062a\u0648\u0632\u06cc\u0639 cloudfront \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u0648 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 cloudfront \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631 Modules \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u062c\u0627\u062f main.tf \u0648 variables.tf \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0628\u062f\u0627 &#8211; OAC<\/p>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 Origin Access Control \u0645\u0627 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062a\u0648\u0632\u06cc\u0639 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0647 \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f main.tf \u0641\u0627\u06cc\u0644:<\/p>\n<p>  Modules\/cloudfront\/main.tf<\/p>\n<p># Create the access origin control that will be used in creating our cloudfront distribution with s3 origin<br \/>\nresource &#8220;aws_cloudfront_origin_access_control&#8221; &#8220;assign-oac&#8221; {<br \/>\n  name                              = var.oac-name<br \/>\n  description                       = &#8220;An origin access control with s3 origin domain for cloudfront&#8221;<br \/>\n  origin_access_control_origin_type = var.origin_access_control_origin_type<br \/>\n  signing_behavior                  = var.signing_behavior<br \/>\n  signing_protocol                  = var.signing_protocol<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/cloudfront\/variables.tf<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>variable &#8220;oac-name&#8221; {<br \/>\n  description = &#8220;This is the name of the cloudfront origin Access control with s3 bucket origin domain&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;s3-bucket-oac&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;origin_access_control_origin_type&#8221; {<br \/>\n  description = &#8220;The origin type must be the same as the origin domain&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;s3&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;signing_behavior&#8221; {<br \/>\n  description = &#8220;Specifies which requests CloudFront signs.&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;always&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;signing_protocol&#8221; {<br \/>\n  description = &#8220;Determines how CloudFront signs (authenticates) requests.&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;sigv4&#8221; # The only valid value<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0648\u0632\u06cc\u0639 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f main.tf \u0641\u0627\u06cc\u0644:<\/p>\n<p>  Modules\/cloudfront\/main.tf<\/p>\n<p># Create CloudFront Distribution<br \/>\nresource &#8220;aws_cloudfront_distribution&#8221; &#8220;cdn&#8221; {<br \/>\n  origin {<br \/>\n    domain_name              = var.cdn-domain_name-and-origin_id<br \/>\n    origin_id                = var.cdn-domain_name-and-origin_id<br \/>\n    origin_access_control_id = aws_cloudfront_origin_access_control.assign-oac.id<br \/>\n  }<\/p>\n<p>  default_cache_behavior {<br \/>\n    compress = true<br \/>\n    viewer_protocol_policy = &#8220;redirect-to-https&#8221;<br \/>\n    allowed_methods        = [ &#8220;GET&#8221;, &#8220;HEAD&#8221; ]\n    cached_methods         = [ &#8220;GET&#8221;, &#8220;HEAD&#8221; ]\n    target_origin_id       = var.cdn-domain_name-and-origin_id<br \/>\n    min_ttl                = 0<br \/>\n    default_ttl            = 3600<br \/>\n    max_ttl                = 86400<\/p>\n<p>    forwarded_values {<br \/>\n      query_string = false<br \/>\n      cookies {<br \/>\n        forward    = &#8220;all&#8221;<br \/>\n      }<br \/>\n    }<br \/>\n  }<\/p>\n<p>  restrictions {<br \/>\n    geo_restriction {<br \/>\n      restriction_type = var.restriction_type<br \/>\n    }<br \/>\n  }<\/p>\n<p>  viewer_certificate {<br \/>\n    acm_certificate_arn            = var.acm_certificate_arn<br \/>\n    ssl_support_method             = &#8220;sni-only&#8221;<br \/>\n    minimum_protocol_version       = &#8220;TLSv1.2_2021&#8221;<br \/>\n    cloudfront_default_certificate = false<br \/>\n  }<\/p>\n<p>  enabled             = true<br \/>\n  is_ipv6_enabled     = true<br \/>\n  default_root_object = var.default_root_object<br \/>\n  aliases             = [var.domain_name, &#8220;www.${var.domain_name}&#8221;]\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/cloudfront\/variables.tf<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>variable &#8220;restriction_type&#8221; {<br \/>\n  description = &#8220;Method that you want to use to restrict distribution of your content by country&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;none&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;default_root_object&#8221; {<br \/>\n  description = &#8220;Object that you want CloudFront to return when an end user requests the root URL.&#8221;<br \/>\n  type = string<br \/>\n  default = &#8220;index.html&#8221;<br \/>\n}<\/p>\n<p>variable &#8220;domain_name&#8221; {<br \/>\n  description = &#8220;your custom Domain name for which the certificate should be issued&#8221;<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;cdn-domain_name-and-origin_id&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;acm_certificate_arn&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/cloudfront\/outputs.tf<\/p>\n<p>output &#8220;cloudfront-arn&#8221; {<br \/>\n  value = aws_cloudfront_distribution.cdn.arn<br \/>\n}<\/p>\n<p>output &#8220;cloudfront_domain_name&#8221; {<br \/>\n  value = aws_cloudfront_distribution.cdn.domain_name<br \/>\n}<\/p>\n<p>output &#8220;cloudfront_hosted-zone_id&#8221; {<br \/>\n  value = aws_cloudfront_distribution.cdn.hosted_zone_id<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0633\u0637\u0644 \u062e\u0627\u0635\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0622\u0646 cloudfront \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0628\u0627 \u0633\u0637\u0644 s3 \u0645\u0627 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0633\u0637\u0644 s3 \u0645\u0627.<\/p>\n<p>\u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f.<\/p>\n<p>  Modules\/s3-bucket\/main.tf<\/p>\n<p>\u0627\u06cc\u0646 \u062e\u0637 \u0645\u0634\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u0645\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0637\u0644 s3 \u0648 \u0634\u06cc\u0621 \u0622\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u0646\u062a\u0631\u0644 \u0645\u0628\u062f\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 main.tf \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<p>  Modules\/s3-bucket\/main.tf<\/p>\n<p># Add the permissions needed by cloudfront&#8217;s origin access control to access the bucket and it&#8217;s objects<br \/>\nresource &#8220;aws_s3_bucket_policy&#8221; &#8220;cloudfront-oac-policy&#8221; {<br \/>\n  bucket = aws_s3_bucket.site-bucket.bucket<br \/>\n  policy = jsonencode({<br \/>\n    Version = &#8220;2012-10-17&#8221;,<br \/>\n    Statement = [<br \/>\n      {<br \/>\n        Sid = &#8220;AllowCloudFrontServicePrincipal&#8221;,<br \/>\n        Effect = &#8220;Allow&#8221;,<br \/>\n        Principal = {<br \/>\n          Service = &#8220;cloudfront.amazonaws.com&#8221;<br \/>\n        },<br \/>\n        Action = &#8220;s3:GetObject&#8221;,<br \/>\n        Resource = &#8220;${aws_s3_bucket.site-bucket.arn}\/*&#8221;,<br \/>\n        Condition = {<br \/>\n          StringLike = {<br \/>\n            &#8220;aws:UserAgent&#8221; = &#8220;Amazon CloudFront&#8221;<br \/>\n          }<br \/>\n        }<br \/>\n      }<br \/>\n    ]\n  })<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u060c \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 alias\u060c \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f main.tf \u0648 variables.tf.<\/p>\n<p>  Modules\/alias\/main.tf<\/p>\n<p># Retrieve information about your hosted zone from AWS<br \/>\ndata &#8220;aws_route53_zone&#8221; &#8220;created&#8221; {<br \/>\n  name = var.domain_name<br \/>\n}<\/p>\n<p># Create an alias that will point to the cloudfront distribution domain name<br \/>\nresource &#8220;aws_route53_record&#8221; &#8220;alias&#8221; {<br \/>\n  zone_id                  = data.aws_route53_zone.created.zone_id<br \/>\n  name                     = var.domain_name<br \/>\n  type                     = &#8220;A&#8221;<\/p>\n<p>  alias {<br \/>\n    name                   = var.cloudfront_domain_name<br \/>\n    zone_id                = var.cloudfront-zone-id<br \/>\n    evaluate_target_health = false<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  Modules\/alias\/variables.tf<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>variable &#8220;domain_name&#8221; {<br \/>\n  description = &#8220;your custom domain name&#8221;<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;cloudfront_domain_name&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;cloudfront-zone-id&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u062f\u0631 \u0633\u0627\u062e\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u0627\u0698\u0648\u0644 \u062f\u0631 main.tf \u0641\u0627\u06cc\u0644 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0645\u0627\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0645\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0627 \u0642\u0628\u0644\u0627 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0627\u0648\u0627\u06cc\u0644 \u067e\u0631\u0648\u0698\u0647 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645 \u0628\u0647 main.tf \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645\u060c \u0627\u06a9\u0646\u0648\u0646 \u0628\u0642\u06cc\u0647 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. main.tf.<\/p>\n<p>  main.tf<\/p>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0634\u0645\u0627 main.tf \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p># Create S3 bucket, upload objects into the bucket and set bucket policy.<br \/>\nmodule &#8220;s3-bucket&#8221; {<br \/>\n  source = &#8220;.\/Modules\/s3-bucket&#8221;<br \/>\n  bucket-name = var.bucket-name<br \/>\n  web-assets-path = var.web-assets-path<br \/>\n}<\/p>\n<p># Create and validate TLS\/SSL certificate<br \/>\nmodule &#8220;certificate&#8221; {<br \/>\n  source = &#8220;.\/Modules\/certificate&#8221;<br \/>\n  domain_name = var.domain_name<br \/>\n  subject_alternative_names  = [&#8220;www.${var.domain_name}&#8221;]\n  }<\/p>\n<p># Create OAC and cloudfront distribution,<br \/>\nmodule &#8220;cloudfront&#8221; {<br \/>\n  source = &#8220;.\/Modules\/cloudfront&#8221;<br \/>\n  domain_name = var.domain_name<br \/>\n  cdn-domain_name-and-origin_id = module.s3-bucket.bucket_regional_domain_name<br \/>\n  acm_certificate_arn = module.certificate.cert-arn<br \/>\n  depends_on = [ module.route53 ]\n}<\/p>\n<p># Import the hosted zone from AWS, create dns records for certificate validation, and create A and CNAME records.<br \/>\nmodule &#8220;route53&#8221; {<br \/>\n  source = &#8220;.\/Modules\/route53&#8221;<br \/>\n  domain_name = var.domain_name<br \/>\n  domain_validation_options = module.certificate.domain_validation_options<br \/>\n  certificate_arn = module.certificate.cert-arn<br \/>\n  }<\/p>\n<p># Create an alias to point the cloudfront cdn to our domain name.<br \/>\nmodule &#8220;alias&#8221; {<br \/>\n  source = &#8220;.\/Modules\/alias&#8221;<br \/>\n  domain_name = var.domain_name<br \/>\n  cloudfront_domain_name = module.cloudfront.cloudfront_domain_name<br \/>\n  cloudfront-zone-id = module.cloudfront.cloudfront_hosted-zone_id<br \/>\n  depends_on = [ module.cloudfront ]\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0641\u0627\u06cc\u0644 variable.tf \u0646\u0647\u0627\u06cc\u06cc \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<p>variable &#8220;bucket-name&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;web-assets-path&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>variable &#8220;domain_name&#8221; {<br \/>\n  type = string<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  terraform.tfvars<\/p>\n<p>\u0627\u0633\u0631\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f *.tfvars \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<p>bucket-name = &#8221;<br \/>\nweb-assets-path = &#8220;the path to your website files (best to supply the absolute path)&gt;<br \/>\ndomain_name = &#8220;&#8221;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0647\u0645\u0647 \u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u0627\u062c\u0631\u0627 tf init \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u062a\u0645\u0627\u0645 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647<\/p>\n<p>tf init<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<\/p>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 validate \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<p>tf validate<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0645 for_each \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u0631\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0632\u0645\u0627\u0646 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f apply \u062f\u0633\u062a\u0648\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c terraform \u062e\u0637\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 &#8211;target \u067e\u0631\u0686\u0645 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u06a9\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644:<\/p>\n<p>tf apply &#8211;target module.certificate<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0646\u0627\u0628\u0639 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<p>tf apply<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0633\u0627\u062e\u062a \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0646\u0633\u0648\u0644 AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0646\u0627\u0628\u0639 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p>\u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0628\u0631\u0648\u06cc\u062f \u0648 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f \u06a9\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627\u0644 \u0645\u0646 \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0631\u0627 \u062a\u0645\u06cc\u0632 \u06a9\u0646\u06cc\u062f.  \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0635\u0648\u0631\u062a\u062d\u0633\u0627\u0628 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc\u060c \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 AWS \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0631\u0647\u0627 \u0646\u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u062a\u062e\u0631\u06cc\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>tf destroy<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<div data-article-id=\"1914126\" id=\"article-body\">\n<p>\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0645\u062a \u0627\u0632 \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0645\u0644\u06a9\u0647 \u0627\u0633\u062a\u060c \u0647\u0631 \u0686\u0647 \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Terraform \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc\u0646 \u0627\u0628\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.  Terraform \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 \u06a9\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u0645\u0646\u0627\u0628\u0639 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u0633\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0646\u0633\u062e\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u06cc\u062f.  \u0633\u067e\u0633 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u06af\u0631\u062f\u0634 \u06a9\u0627\u0631 \u062b\u0627\u0628\u062a \u0628\u0631\u0627\u06cc \u062a\u0647\u06cc\u0647 \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u0646 \u0648 \u06a9\u0627\u0631\u0622\u0645\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062e\u0648\u062f \u062f\u0631 \u0637\u0648\u0644 \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<hr\/>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0627\u0645\u0644 \u062a\u0631\u0627\u0641\u0648\u0631\u0645 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u06a9\u0647 \u0627\u0645\u0631\u0648\u0632 \u0645\u06cc \u0633\u0627\u0632\u06cc\u0645 \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u06cc\u0627\u0628\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646 \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f <code>main.tf<\/code> \u0641\u0627\u06cc\u0644 \u0648 \u0627\u0644\u0641 <code>provider.tf<\/code> \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0645\u0646.  \u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 AWS \u0631\u0627 \u0628\u0631\u0627\u06cc Terraform \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0631\u0627\u06cc \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0622\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u0646\u0627\u0628\u0639 AWS \u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u062a\u0648\u0633\u0637 Terraform \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 API \u0647\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0628\u0633\u0627\u0632\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a AWS \u0647\u0633\u062a\u06cc\u0645\u060c \u0627\u0632 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a AWS \u0628\u0631\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0627\u06af\u0631 \u062f\u0631 GCP \u06cc\u0627 Azure \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f\u060c \u0627\u0632 \u06cc\u06a9 \u0627\u0631\u0627\u0626\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0622\u0646 \u062e\u062f\u0645\u0627\u062a \u0627\u0628\u0631\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u062f\u0631 <code>provider.tf<\/code> \u0641\u0627\u06cc\u0644 \u0645\u0646 \u0628\u0644\u0648\u06a9 terraform \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u0645\u060c \u0628\u0644\u0648\u06a9 \u06a9\u062f terraform \u0628\u0647 terraform \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0627\u0632 API AWS \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0645\u0627 \u0631\u0627 \u0628\u0633\u0627\u0632\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 AWS \u0631\u0627 \u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 <code>provider.tf<\/code> \u0641\u0627\u06cc\u0644 \u062e\u0637\u0648\u0637 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">terraform<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">required_providers<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">aws<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"hashicorp\/aws\"<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">provider<\/span> <span class=\"s2\">\"aws\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">region<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"us-east-1\"<\/span>\n  <span class=\"nx\">shared_credentials_files<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"~\/.aws\/credentials\"<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u062f\u0631 \u0645\u0648\u0631\u062f terraform \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u0645\u062c\u0628\u0648\u0631 \u0646\u06cc\u0633\u062a\u06cc\u062f \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u06a9\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0628\u0627 terraform \u0634\u0631\u0648\u0639 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0631\u0627\u06cc \u06a9\u0645\u06a9 \u0628\u0647 \u0645\u0633\u062a\u0646\u062f\u0627\u062a Terraform \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u062f\u0631 \u0628\u0644\u0648\u06a9 terraform \u0645\u0646 AWS \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0627 \u0645\u0646\u0628\u0639 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0645 <code>hashicorp\/aws<\/code> \u0627\u0645\u0627 \u0645\u0646 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0645 <code>version<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0686\u0648\u0646 \u0645\u0646 \u0645\u0627\u06cc\u0644\u0645 terraform \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0634\u062f \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u062e\u0627\u0635 \u0628\u0647 AWS \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0628\u0644\u0648\u06a9 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0646 \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0645 <code>region<\/code> \u0627\u0633\u062a\u062f\u0644\u0627\u0644\u060c \u0627\u06cc\u0646 \u062a\u0646\u0647\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0646 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f.  \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0645 <code>AWS configure<\/code> \u0628\u0627 AWS CLI \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0645 <code>shared_credentials_file<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 (\u0627\u06af\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0647 \u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0631\u062c \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f <code>profile<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u06a9\u0646\u06cc\u062f \u0648 \u0646\u0627\u0645 \u0646\u0645\u0627\u06cc\u0647 \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u06cc\u062f) \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 Terraform \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0646\u0627\u0645\u0647 AWS \u062e\u0648\u062f \u062f\u0631 AWS CLI\u060c \u0627\u06cc\u0646 \u067e\u0633\u062a \u0645\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0646 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u0645.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u0646 \u0622\u0645\u0627\u062f\u0647 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0647\u0633\u062a\u0645 <code>terraform init<\/code> \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 terraform \u0628\u062a\u0648\u0627\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0631\u0627 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 AWS \u0645\u062a\u0635\u0644 \u0634\u0648\u062f.<\/p>\n<p>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u062f \u0648 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>terraform init\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><\/p>\n<hr\/>\n<p>\u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Terraform \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.  \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u06af\u0631\u0648\u0647\u200c\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0647\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0686\u0646\u062f\u06cc\u0646 \u0628\u0627\u0631 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0634\u0645\u0627 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0627\u0631\u062c\u0627\u0639 \u062f\u0627\u062f\u0647 \u0648 \u0646\u0645\u0648\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u06cc\u06a9 \u0631\u0627\u0647 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0647\u0633\u062a\u0646\u062f <code>Don't Repeat Yourself<\/code> (DRY) \u0627\u0635\u0644 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u06a9\u0647 \u0628\u06cc\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u062f \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0628\u0627\u0631 \u0646\u0648\u0634\u062a\u0647 \u0634\u0648\u062f \u0648 \u062a\u06a9\u0631\u0627\u0631 \u0646\u0634\u0648\u062f.  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0631\u0627 \u062f\u0631 \u0628\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062e\u062f\u0645\u062a \u0628\u0647 \u06cc\u06a9 \u0647\u062f\u0641 \u062e\u0627\u0635 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u062c\u0632\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062f\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f.  \u0627\u0633\u0627\u0633\u0627\u064b \u062f\u0648 \u0646\u0648\u0639 \u0645\u0627\u0698\u0648\u0644 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u062d\u0648\u0647 \u0646\u06af\u0627\u0631\u0634 \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f (\u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0631\u06cc\u0634\u0647 \u0648 \u0641\u0631\u0632\u0646\u062f) \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u0628\u0627\u0634\u0646\u062f \u06cc\u0627 \u0646\u0647\u060c \u0645\u0627 \u062f\u0648 \u0646\u0648\u0639 \u0645\u062e\u062a\u0644\u0641 \u0631\u0627 \u0646\u06cc\u0632 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 (\u0645\u062d\u0644\u06cc \u0648 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647).<\/p>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0647\u062a\u0631\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f Terraform \u0627\u0633\u062a.  \u062a\u06a9\u0631\u0627\u0631 \u0647\u0645\u0627\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0627\u0631 \u062f\u0634\u0648\u0627\u0631\u06cc \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0632\u06cc\u0631\u0627 HCL \u06cc\u06a9 \u0632\u0628\u0627\u0646 \u0627\u0639\u0644\u0627\u0646\u06cc \u0627\u0633\u062a \u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0633\u06cc\u0627\u0631 \u0644\u0641\u0638\u06cc \u0628\u0627\u0634\u062f.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0647\u06cc\u0646\u0647\u060c \u0628\u0627\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0645\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u0627\u0698\u0648\u0644 \u0645\u06cc \u0646\u0648\u06cc\u0633\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u0634\u0648\u062f \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u062f\u0631 a \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f <code>modules<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u062a\u0648\u0633\u0639\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0627\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0647\u0631 \u0686\u0647 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u062f \u0646\u0627\u0645 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 <code>Modules<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc\u060c \u0627\u06cc\u0646\u062c\u0627 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0645\u0646 \u062f\u0631 \u0622\u0646 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f.<\/p>\n<hr\/>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 S3 \u062e\u0648\u062f\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0645 <code>s3-bucket<\/code> \u062f\u0631 <code>Modules<\/code> \u0641\u0647\u0631\u0633\u062a \u0631\u0627\u0647\u0646\u0645\u0627.  \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0645\u0646 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645 <code>main.tf<\/code>\u060c <code>variables.tf<\/code>\u060c <code>output.tf<\/code>.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%B3%D8%B7%D9%84_S3_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0633\u0637\u0644 S3 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#moduless3-bucketvariablestf\" >modules\/s3-bucket\/variables.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#moduless3-bucketmaintf\" >modules\/s3-bucket\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#moduless3-bucketoutputstf\" >modules\/s3-bucket\/outputs.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#S3_Bucket_%D8%B1%D8%A7_%D8%A8%D9%87_Root_Module_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\" >S3 Bucket \u0631\u0627 \u0628\u0647 Root Module \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#maintf\" >main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf\" >\u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%AE%D8%B1%D9%88%D8%AC%DB%8C_%D9%87%D8%A7tf\" >\u062e\u0631\u0648\u062c\u06cc \u0647\u0627.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#terraformtfvars\" >terraform.tfvars<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%86%D8%A7%D9%85_%D9%85%D8%B3%D8%AA%D8%B9%D8%A7%D8%B1_TF_%D8%A8%D8%B1%D8%A7%DB%8C_Terraform\" >\u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 TF \u0628\u0631\u0627\u06cc Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%B3%D8%B7%D9%84_S3_%D8%A2%D9%BE%D9%84%D9%88%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0637\u0644 S3 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#moduless3-bucketmaintf-2\" >modules\/s3-bucket\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#moduless3-bucketvariablestf-2\" >modules\/s3-bucket\/variables.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%A7%DA%98%D9%88%D9%84_%D8%B1%DB%8C%D8%B4%D9%87_%D8%B1%D8%A7_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%DA%A9%D9%86%DB%8C%D8%AF_maintf%D8%8C_variabletf_%D9%88_terraformtfvars_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7\" >\u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f main.tf\u060c variable.tf \u0648 terraform.tfvars \u0641\u0627\u06cc\u0644 \u0647\u0627<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#maintf-2\" >main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%AA%D8%BA%DB%8C%D8%B1tf\" >\u0645\u062a\u063a\u06cc\u0631.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#terraformtfvars-2\" >terraform.tfvars<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D9%86%D8%B7%D9%82%D9%87_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86%DB%8C_%D8%B4%D8%AF%D9%87\" >\u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA_%D9%85%D9%86%D8%A8%D8%B9_%D9%85%D9%86%D8%B7%D9%82%D9%87_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86%DB%8C_%D8%B4%D8%AF%D9%87_%D8%B1%D8%A7_%D8%AF%D8%B1_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Terraform_%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0628\u0639 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53maintf\" >Modules\/route53\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53variablestf\" >Modules\/route53\/variables.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%DA%AF%D9%88%D8%A7%D9%87%DB%8C_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06af\u0648\u0627\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%A7%DA%98%D9%88%D9%84_%D9%87%D8%A7%DA%AF%D9%88%D8%A7%D9%87%DB%8C%D9%86%D8%A7%D9%85%D9%87maintf\" >\u0645\u0627\u0698\u0648\u0644 \u0647\u0627\/\u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescertificatevariablestf\" >Modules\/certificate\/variables.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescertificateoutputstf\" >Modules\/certificate\/outputs.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%B1%DA%A9%D9%88%D8%B1%D8%AF_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%DA%AF%D9%88%D8%A7%D9%87%DB%8C_ACM_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0631\u06a9\u0648\u0631\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc ACM \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53maintf-2\" >Modules\/route53\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53variablestf-2\" >Modules\/route53\/variables.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%DA%AF%D9%88%D8%A7%D9%87%DB%8C%D9%86%D8%A7%D9%85%D9%87_%D8%B1%D8%A7_%D8%AA%D8%A3%DB%8C%DB%8C%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53maintf-3\" >Modules\/route53\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53variablestf-3\" >Modules\/route53\/variables.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesroute53outputstf\" >Modules\/route53\/outputs.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D9%85%D8%A8%D8%AF%D8%A7_%E2%80%93_OAC\" >\u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0628\u062f\u0627 &#8211; OAC<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescloudfrontmaintf\" >Modules\/cloudfront\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescloudfrontvariablestf\" >Modules\/cloudfront\/variables.tf<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%AA%D9%88%D8%B2%DB%8C%D8%B9\" >\u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescloudfrontmaintf-2\" >Modules\/cloudfront\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescloudfrontvariablestf-2\" >Modules\/cloudfront\/variables.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulescloudfrontoutputstf\" >Modules\/cloudfront\/outputs.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Moduless3-bucketmaintf\" >Modules\/s3-bucket\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Moduless3-bucketmaintf-2\" >Modules\/s3-bucket\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesaliasmaintf\" >Modules\/alias\/main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#Modulesaliasvariablestf\" >Modules\/alias\/variables.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#maintf-3\" >main.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf-2\" >\u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#terraformtfvars-3\" >terraform.tfvars<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D9%85%D8%A7%DA%98%D9%88%D9%84_%D9%87%D8%A7_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\" >\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B2%DB%8C%D8%B1%D8%B3%D8%A7%D8%AE%D8%AA\" >\u0627\u06cc\u062c\u0627\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/nabfollower.com\/blog\/deploy-a-static-website-with-route53-cloudfront-and-aws-certificate-using-a-terraform-script-25i8\/#%D8%B3%D8%A7%D8%AE%D8%AA_%D8%B1%D8%A7_%D8%AA%D8%A7%DB%8C%DB%8C%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0633\u0627\u062e\u062a \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D8%B7%D9%84_S3_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0633\u0637\u0644 S3 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h4><span class=\"ez-toc-section\" id=\"moduless3-bucketvariablestf\"><\/span>\n<p>  <strong>modules\/s3-bucket\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062f\u0631 <code>variables.tf<\/code> \u0645\u0646 \u0646\u0627\u0645 \u0633\u0637\u0644 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0627 \u06a9\u062f \u0632\u06cc\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"bucket-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The name of the S3 bucket\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n\n  <span class=\"nx\">validation<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">condition<\/span>     <span class=\"p\">=<\/span> <span class=\"p\">(<\/span>\n      <span class=\"nx\">length<\/span><span class=\"p\">(<\/span><span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span><span class=\"p\">)<\/span> <span class=\"err\">&gt;<\/span><span class=\"p\">=<\/span> <span class=\"mi\">3<\/span> <span class=\"err\">&amp;&amp;<\/span> <span class=\"nx\">length<\/span><span class=\"p\">(<\/span><span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span><span class=\"p\">)<\/span> <span class=\"err\"><span class=\"p\">=<\/span> <span class=\"mi\">63<\/span> <span class=\"err\">&amp;&amp;<\/span> \n      <span class=\"nx\">can<\/span><span class=\"p\">(<\/span><span class=\"nx\">regex<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"^[a-z0-9][a-z0-9-.]*[a-z0-9]$\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"nx\">error_message<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The bucket name must be between 3 and 63 characters, start and end with a lowercase letter or number, and can contain only lowercase letters, numbers, hyphens, and dots.\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0627\u0645 \u0633\u0637\u0644 \u0628\u06cc\u0646 3 \u062a\u0627 63 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0627 \u06cc\u06a9 \u062d\u0631\u0641 \u06cc\u0627 \u0639\u062f\u062f \u06a9\u0648\u0686\u06a9 \u0634\u0631\u0648\u0639 \u0648 \u067e\u0627\u06cc\u0627\u0646 \u06cc\u0627\u0628\u062f \u0648 \u0641\u0642\u0637 \u0634\u0627\u0645\u0644 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9\u060c \u0627\u0639\u062f\u0627\u062f\u060c \u062e\u0637 \u062a\u06cc\u0631\u0647 \u0648 \u0646\u0642\u0637\u0647 \u0628\u0627\u0634\u062f.  \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0647\u0631\u06af\u0648\u0646\u0647 \u062e\u0637\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a AWS \u062f\u0631 \u0646\u062a\u06cc\u062c\u0647 \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u0633\u0637\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0627\u0647\u0645\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0633\u0627\u062f\u06af\u06cc \u0648 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0622\u0633\u0627\u0646 \u06a9\u062f \u0627\u0633\u062a.  \u062f\u0631 \u0635\u0648\u0631\u062a\u06cc \u06a9\u0647 \u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645\u060c \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0645\u06a9\u0627\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645 \u0648 \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0631 \u0647\u0631 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0622\u0646 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>.var<\/code> \u0646\u0634\u0627\u0646\u0647 \u06af\u0630\u0627\u0631\u06cc.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"moduless3-bucketmaintf\"><\/span>\n<p>  <strong>modules\/s3-bucket\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u0633\u0637\u0644 S3\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>aws_s3_bucket<\/code> \u0628\u0644\u0648\u06a9 \u0645\u0646\u0627\u0628\u0639 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 <code>main.tf<\/code> \u0645\u0637\u0627\u0628\u0642 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0641\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create S3 Bucket<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_s3_bucket\"<\/span> <span class=\"s2\">\"site-bucket\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">bucket<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span>\n  <span class=\"nx\">force_destroy<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u0627\u0645 \u0633\u0637\u0644 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0639\u0631\u0636\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0628\u0627 \u0645\u0642\u062f\u0627\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"moduless3-bucketoutputstf\"><\/span>\n<p>  <strong>modules\/s3-bucket\/outputs.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0628\u0642\u06cc\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<p>\u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f \u0648 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>outputs.tf<\/code> \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"bucket_regional_domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This is the bucket domain name including the region name.\"<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_s3_bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">site-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket_regional_domain_name<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"S3_Bucket_%D8%B1%D8%A7_%D8%A8%D9%87_Root_Module_%D8%A7%D8%B6%D8%A7%D9%81%D9%87_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  S3 Bucket \u0631\u0627 \u0628\u0647 Root Module \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h4><span class=\"ez-toc-section\" id=\"maintf\"><\/span>\n<p>  <strong>main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0628\u0631\u0627\u06cc \u0622\u0632\u0645\u0627\u06cc\u0634 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0627\u0698\u0648\u0644 \u06a9\u0647 \u0628\u0647 \u062a\u0627\u0632\u06af\u06cc \u0646\u0648\u0634\u062a\u0647 \u0627\u06cc\u0645\u060c \u06cc\u06a9 \u0633\u0637\u0644 s3 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0628\u0647 \u0633\u0645\u062a <code>main.tf<\/code> \u0641\u0627\u06cc\u0644 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627\u060c \u062e\u0627\u0631\u062c \u0627\u0632 \u0634\u0645\u0627 <code>Module<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0648 \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0641\u0627\u06cc\u0644 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">module<\/span> <span class=\"s2\">\"s3-bucket\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/s3-bucket\"<\/span>\n  <span class=\"nx\">bucket-name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf\"><\/span>\n<p>  <strong>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0633\u0647 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u0646\u06cc\u0632 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>variables.tf<\/code>\u060c <code>outputs.tf<\/code> \u0648 <code>terraform.tfvars<\/code>.<\/p>\n<p>\u062f\u0631 <code>variables.tf<\/code> \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"bucket-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B1%D9%88%D8%AC%DB%8C_%D9%87%D8%A7tf\"><\/span>\n<p>  <strong>\u062e\u0631\u0648\u062c\u06cc \u0647\u0627.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062f\u0631 <code>outputs.tf<\/code> \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"bucket-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">s3-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">site-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket_regional_domain_name<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0631\u0648\u062c\u06cc \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"terraformtfvars\"><\/span>\n<p>  <strong>terraform.tfvars<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062f\u0631 <code>terraform.tfvars<\/code> \u0641\u0627\u06cc\u0644\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>bucket-name = \"<your unique=\"\" bucket=\"\" name=\"\">\n<\/your><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u26a0\ufe0f <strong>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/strong><\/p>\n<p>\u0634\u0645\u0627 <code>.tfvars<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0631\u06af\u0632 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0633\u062e\u0647 \u0645\u062a\u0639\u0647\u062f \u0634\u0648\u062f\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>.gitignore<\/code> \u0641\u0627\u06cc\u0644.  \u0645\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f <code>.gitignore<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0634\u0645\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0627\u06cc\u062a \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc gitignore \u062e\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u0622\u06cc\u0646\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u062a\u0631\u0645\u06cc\u0646\u0627\u0644 \u062e\u0648\u062f\u060c \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>terraform init<\/code> \u0645\u062c\u062f\u062f\u0627\u064b \u062f\u0633\u062a\u0648\u0631\u060c \u0647\u0646\u06af\u0627\u0645 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u06cc\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f\u0647\u060c \u0628\u0627\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.  \u0627\u06af\u0631 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f \u0648 \u0647\u0631 \u062f\u0633\u062a\u0648\u0631 terraform \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--v7lLMli6--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/dd7f92a8-8059-4ad9-877c-cdb8011331d6\" alt=\"Uninstalled-module-error\" loading=\"lazy\" width=\"800\" height=\"154\" title=\"\"><\/p>\n<p>\u062d\u0627\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u06cc\u062f <code>terraform plan<\/code> \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f terraform \u0642\u0635\u062f \u062f\u0627\u0631\u062f \u062f\u0631 \u062d\u0633\u0627\u0628 AWS \u0634\u0645\u0627 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f. <\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0633\u0637\u0644\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>terraform apply\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c terraform \u0647\u0645\u06cc\u0634\u0647 \u0627\u0632 \u0634\u0645\u0627 \u0645\u06cc \u067e\u0631\u0633\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0639\u0645\u0644 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u0627 \u0628\u0644\u0647 \u06cc\u0627 \u062e\u06cc\u0631 \u067e\u0627\u0633\u062e \u062f\u0647\u06cc\u062f.  \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0645\u0637\u0631\u062d \u0634\u062f\u0646 \u0627\u06cc\u0646 \u0633\u0648\u0627\u0644\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0622\u0646 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f <code>auto approve<\/code> \u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0645\u0637\u0627\u0628\u0642 \u0634\u06a9\u0644 \u0632\u06cc\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>terraform apply <span class=\"nt\">--auto-approve<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u062f\u060c \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06cc\u06a9 \u0633\u0637\u0644 s3 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0631\u062f\u06cc\u062f\u060c \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0628\u0631\u06cc\u0645 \u0648 \u0628\u0647 \u0646\u0648\u0634\u062a\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a terraform \u062e\u0648\u062f \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0633\u0637\u0644 \u0646\u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u0645. <\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f\u0646 \u0633\u0637\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>terraform destroy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D8%A7%D9%85_%D9%85%D8%B3%D8%AA%D8%B9%D8%A7%D8%B1_TF_%D8%A8%D8%B1%D8%A7%DB%8C_Terraform\"><\/span>\n<p>  \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 TF \u0628\u0631\u0627\u06cc Terraform<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u0645\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u06a9\u0648\u062a\u0627\u0647 \u0628\u0631\u0627\u06cc terraform \u0628\u06af\u0630\u0627\u0631\u0645\u060c \u0632\u06cc\u0631\u0627 \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0644\u06cc \u0622\u0646 \u0631\u0627 terraform \u0628\u0646\u0627\u0645\u06cc\u0645.  \u062a\u0646\u0638\u06cc\u0645 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 terraform to be <code>tf<\/code> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062f\u0633\u062a\u0648\u0631\u0627\u062a \u062e\u0648\u062f \u0647\u0633\u062a\u06cc\u0645\u060c \u06a9\u0627\u0631\u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062f\u06cc\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0635\u0631\u06cc\u062d \u0646\u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a. <code>terraform<\/code> \u0627\u0645\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>tf<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 <code>tf apply<\/code> \u0628\u062c\u0627\u06cc <code>terraform apply<\/code>.  \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u0641\u0631\u0645\u0627\u0646 \u062e\u0648\u062f \u0631\u0627 \u06a9\u0648\u062a\u0627\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062f\u0631 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0628\u0631\u0627\u06cc \u062a\u0631\u0645\u06cc\u0646\u0627\u0644\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>vi ~\/.bash_profile\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc bash \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u060c \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0628\u0627 \u0634\u06a9\u0644 \u06a9\u0648\u062a\u0627\u0647 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">alias <\/span><span class=\"nv\">tf<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"terraform\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062f\u0633\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u067e\u0631\u0648\u0641\u0627\u06cc\u0644 bash \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0639\u0645\u0627\u0644 \u0634\u0648\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"nb\">source<\/span> ~\/.bash_profile\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u062c\u0627\u06cc terraform \u0627\u0632 tf \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%A7%D8%B1%D8%A7%DB%8C%DB%8C_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AF%D8%B1_%D8%B3%D8%B7%D9%84_S3_%D8%A2%D9%BE%D9%84%D9%88%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627 \u0631\u0627 \u062f\u0631 \u0633\u0637\u0644 S3 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0648\u0628 \u0633\u0627\u06cc\u062a \u062e\u0648\u062f \u062f\u0631 \u0633\u0637\u0644\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0648 \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0646 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0630\u062e\u06cc\u0631\u0647 \u062e\u0648\u0627\u0647\u0645 \u06a9\u0631\u062f <code>web-assets<\/code> \u0648 \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"moduless3-bucketmaintf-2\"><\/span>\n<p>  <strong>modules\/s3-bucket\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>for_each<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0647\u0627\u06cc \u0645\u062a\u0627 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u0627\u06cc\u06cc \u0647\u0627\u06cc \u0633\u0637\u0644 \u062e\u0648\u062f\u060c \u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0622\u067e\u0644\u0648\u062f \u062f\u0627\u0631\u06cc\u0645.  \u0627\u06cc\u0646 \u0632\u0645\u0627\u0646\u06cc \u0645\u0641\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0634\u0627\u0628\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<p>\u0645\u0646\u0637\u0642\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0644\u0648\u06a9 \u0647\u0627\u06cc \u0645\u0646\u0627\u0628\u0639 Terraform \u0631\u0627 \u0628\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062c\u0632\u0626\u06cc \u062f\u0631 \u0647\u0631 \u0628\u0644\u0648\u06a9 \u06a9\u067e\u06cc \u0648 \u062c\u0627\u06cc\u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f.  \u0627\u0646\u062c\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0641\u0642\u0637 \u0628\u0631 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u062a\u0623\u062b\u06cc\u0631 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc IaC \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc \u0637\u0648\u0644\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>main.tf<\/code> \u0641\u0627\u06cc\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Upload objects into the s3 Bucket<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_s3_object\"<\/span> <span class=\"s2\">\"upload-assets\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">for_each<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">fileset<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"${var.web-assets-path}\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"**\/*\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"nx\">bucket<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_s3_bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">site-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket<\/span>\n  <span class=\"nx\">key<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"${var.web-assets-path}\/${each.value}\"<\/span>\n  <span class=\"nx\">content_type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">lookup<\/span><span class=\"p\">(<\/span><span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">mime_types<\/span><span class=\"p\">,<\/span> <span class=\"nx\">regex<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"<\/span><span class=\"err\">\\\\<\/span><span class=\"s2\">.[^.]+$\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">),<\/span> <span class=\"s2\">\"application\/octet-stream\"<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>for-each<\/code> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0648\u0628 \u0633\u0627\u06cc\u062a \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.  \u0645\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0645 <code>fileset<\/code> \u062a\u0627\u0628\u0639 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0628\u0631 \u0631\u0648\u06cc \u0647\u0645\u0647 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0647\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647\u060c \u0647\u0631 \u0641\u0627\u06cc\u0644\/\u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0644\u0642\u0647 for_each \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u0646\u0628\u0639 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f. <\/p>\n<p>\u0645\u0633\u06cc\u0631 \u0633\u062e\u062a \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a <code>variable.tf<\/code> \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<\/p>\n<p>\u0627\u06cc\u0646 <code>for_each<\/code> \u062d\u0644\u0642\u0647 \u0631\u0648\u06cc <code>fileset<\/code> \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0646\u0647 \u062c\u0641\u062a \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>each.value<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0645\u0627 \u0648 \u0646\u0647 <code>each.key<\/code>.<\/p>\n<p>\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0647\u0631 \u0646\u0648\u0639 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0648\u0639 MIME \u0645\u0631\u0628\u0648\u0637\u0647 \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u062f\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0632 <code>lookup<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0631 <code>content_type<\/code> \u0628\u062d\u062b \u0648 \u062c\u062f\u0644. <code>lookup(map, key, default)<\/code> \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u06cc\u062f \u0631\u0627 \u062f\u0631 \u0646\u0642\u0634\u0647 \u062c\u0633\u062a\u062c\u0648 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u06cc\u0627\u0641\u062a\u0646 \u0645\u0642\u062f\u0627\u0631 \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.  \u0627\u06af\u0631 \u06a9\u0644\u06cc\u062f \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f\u060c \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u062f.<\/p>\n<p>\u062a\u0627\u0628\u0639 regex \u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0632 each.value \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06a9\u0647 \u0646\u0627\u0645 \u0641\u0627\u06cc\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0645\u062c\u0645\u0648\u0639\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0631\u0627\u06cc \u062a\u0639\u06cc\u06cc\u0646 \u0646\u0648\u0639 MIME \u062f\u0642\u06cc\u0642\u200c\u062a\u0631 \u0628\u0647\u200c\u062f\u0633\u062a \u0645\u06cc\u200c\u0622\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"moduless3-bucketvariablestf-2\"><\/span>\n<p>  <strong>modules\/s3-bucket\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u062f\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0628\u0627\u0644\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Set the variable for the file path of the files to be uploaded to the bucket<\/span>\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"web-assets-path\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This is the location of our website files\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"mime_types\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Map of file extensions to MIME types\"<\/span>\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">map<\/span><span class=\"p\">(<\/span><span class=\"nx\">string<\/span><span class=\"p\">)<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n    <span class=\"s2\">\".html\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"text\/html\"<\/span>\n    <span class=\"s2\">\".css\"<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"text\/css\"<\/span>\n    <span class=\"s2\">\".png\"<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"image\/png\"<\/span>\n    <span class=\"s2\">\".jpg\"<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"image\/jpeg\"<\/span>\n    <span class=\"s2\">\".jpeg\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"image\/jpeg\"<\/span>\n    <span class=\"s2\">\".pdf\"<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"application\/pdf\"<\/span>\n    <span class=\"s2\">\"json\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"application\/json\"<\/span>\n    <span class=\"s2\">\"js\"<\/span>   <span class=\"p\">=<\/span> <span class=\"s2\">\"application\/javascript\"<\/span>\n    <span class=\"s2\">\"gif\"<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"image\/gif\"<\/span>\n    <span class=\"c1\"># Add more extensions and MIME types as needed<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%A7%DA%98%D9%88%D9%84_%D8%B1%DB%8C%D8%B4%D9%87_%D8%B1%D8%A7_%D8%A8%D9%87_%D8%B1%D9%88%D8%B2_%DA%A9%D9%86%DB%8C%D8%AF_maintf%D8%8C_variabletf_%D9%88_terraformtfvars_%D9%81%D8%A7%DB%8C%D9%84_%D9%87%D8%A7\"><\/span>\n<p>  \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f <code>main.tf<\/code>\u060c <code>variable.tf<\/code> \u0648 <code>terraform.tfvars<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h4><span class=\"ez-toc-section\" id=\"maintf-2\"><\/span>\n<p>  <strong>main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627 \u0645\u0627\u0698\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0631\u062f\u06cc\u0645 \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0627\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u062e\u0648\u062f \u0631\u0627 \u0646\u06cc\u0632 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u0645.  \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 <code>main.tf<\/code> \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">module<\/span> <span class=\"s2\">\"s3-bucket\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/s3-bucket\"<\/span>\n  <span class=\"nx\">bucket-name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span>\n  <span class=\"nx\">web-assets-path<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">web-assets-path<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AA%D8%BA%DB%8C%D8%B1tf\"><\/span>\n<p>  <strong>\u0645\u062a\u063a\u06cc\u0631.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 <code>variable.tf<\/code> \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"bucket-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"web-assets-path\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"terraformtfvars-2\"><\/span>\n<p>  <strong>terraform.tfvars<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 <code>terraform.tfvars<\/code> \u0627\u06a9\u0646\u0648\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>bucket-name = \"<your unique=\"\" bucket=\"\" name=\"\">\nweb-assets-path = \"<the path=\"\" to=\"\" your=\"\" website=\"\" files=\"\" supply=\"\" the=\"\" absolute=\"\">\n<\/the><\/your><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<p>\u26a0\ufe0f <strong>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/strong> <\/p>\n<blockquote>\n<p>\u062d\u062a\u06cc \u0627\u06af\u0631 \u0634\u0645\u0627 \u0647\u0646\u0648\u0632 \u0648\u0627\u062c\u062f \u0634\u0631\u0627\u06cc\u0637 \u0633\u0637\u062d \u0631\u0627\u06cc\u06af\u0627\u0646 AWS \u0647\u0633\u062a\u06cc\u062f\u060c \u0633\u0631\u0648\u06cc\u0633 Route53 \u0647\u0631\u06af\u0632 \u0631\u0627\u06cc\u06af\u0627\u0646 \u0646\u06cc\u0633\u062a.  \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0647\u0632\u06cc\u0646\u0647 0.50 \u062f\u0644\u0627\u0631 \u062f\u0631 \u0645\u0627\u0647 \u0631\u0627 \u062c\u0630\u0628 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647 \u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0642\u0628\u0644\u0627\u064b \u0622\u0646 \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0645\u06a9\u062b \u06a9\u0646\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0634\u0648\u062f\u060c \u062f\u0631 \u0627\u0628\u062a\u062f\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0633\u062a\u0645 \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062f\u0633\u062a\u06cc \u0645\u0646\u0628\u0639 \u0631\u0627 \u0628\u0647 terraform \u0648\u0627\u0631\u062f \u06a9\u0646\u0645\u060c \u0627\u0645\u0627 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0628\u06cc\u0634\u062a\u0631\u060c \u062f\u0644\u06cc\u0644\u06cc \u0646\u062f\u0627\u0631\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 Terraform \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u062f. <\/p>\n<p>\u062f\u0644\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0648\u0642\u062a\u06cc \u06cc\u06a9 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0645\u062c\u0645\u0648\u0639\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.  Terraform \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0644\u0627\u0632\u0645 \u0628\u0631\u0627\u06cc \u062a\u06a9\u0645\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0631\u0627 \u0646\u062f\u0627\u0631\u062f \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0645\u0627 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062e\u0648\u062f\u062a\u0627\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0646\u0627\u0645\u0648\u0641\u0642 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u0642\u0628\u0644\u0627\u064b \u0627\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645\u060c \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0631\u0627 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 terraform <code>data<\/code> \u0645\u0646\u0628\u0639\u060c \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 Terraform \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0627\u0632 \u0647\u0631 \u06af\u0648\u0646\u0647 \u0645\u0634\u06a9\u0644\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0645\u062f\u0647 \u0628\u0627\u0634\u062f \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D9%86%D8%B7%D9%82%D9%87_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86%DB%8C_%D8%B4%D8%AF%D9%87\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u06a9\u0646\u0633\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u06a9\u0647 \u062f\u0631 <code>Services<\/code> \u0632\u06cc\u0631 <code>Network and Content delivery<\/code> \u062f\u0633\u062a\u0647 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <code>Route53<\/code>\n<\/li>\n<li>\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <code>create hosted zone<\/code>\n<\/li>\n<li>\u0627\u0632 \u0622\u0646\u062c\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0641\u0636\u0627\u06cc \u0628\u0631\u0627\u06cc \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f <code>domain name<\/code>.<\/li>\n<li>\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f <code>public hosted zone<\/code> \u0632\u06cc\u0631 <code>type<\/code>.<\/li>\n<li>\u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u0628\u0631\u0686\u0633\u0628 \u0648 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u062f\u0631 \u067e\u0627\u06cc\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <code>create hosted zone<\/code>.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--Ub518ZEX--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/1c7cadca-fe58-46a4-b5a7-d4253b306863\" alt=\"\u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0645\u0646\u0637\u0642\u0647\" loading=\"lazy\" width=\"595\" height=\"619\" title=\"\"><\/p>\n<ul>\n<li>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0646\u0627\u0645 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 AWS \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\u0647\u0631 \u0633\u0631\u0648\u0631 \u0646\u0627\u0645 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u062f\u0631 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0645\u0627 \u0647\u0633\u062a\u0646\u062f \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u062c\u062f\u06cc\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AC%D8%B2%D8%A6%DB%8C%D8%A7%D8%AA_%D9%85%D9%86%D8%A8%D8%B9_%D9%85%D9%86%D8%B7%D9%82%D9%87_%D9%85%DB%8C%D8%B2%D8%A8%D8%A7%D9%86%DB%8C_%D8%B4%D8%AF%D9%87_%D8%B1%D8%A7_%D8%AF%D8%B1_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C_Terraform_%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0628\u0639 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc Terraform \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0628\u0639 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u062e\u0648\u062f \u0628\u0647 terraform\u060c \u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0622\u0646 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>Module<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0634\u062f <code>route53<\/code>.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53maintf\"><\/span>\n<p>  <strong>Modules\/route53\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Retrieve information about your hosted zone from AWS<\/span>\n<span class=\"nx\">data<\/span> <span class=\"s2\">\"aws_route53_zone\"<\/span> <span class=\"s2\">\"created\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u062f \u0628\u0627\u0644\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0632\u06cc\u0627\u062f \u0628\u0647 \u0646\u0638\u0631 \u0646\u0631\u0633\u062f \u0627\u0645\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u062d\u0633\u0627\u0628 AWS \u0645\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0627 \u0646\u0627\u0645\u06cc \u06a9\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f \u0648 \u0633\u067e\u0633 \u0627\u0632 \u0622\u0646 \u062f\u0631 \u0647\u0631 \u06a9\u062c\u0627 \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f. <code>data<\/code> \u0645\u0646\u0628\u0639 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0627<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53variablestf\"><\/span>\n<p>  <strong>Modules\/route53\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0634\u0645\u0627 \u0645\u062a\u0647 \u0631\u0627 \u0645\u06cc \u0634\u0646\u0627\u0633\u06cc\u062f\u060c \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0627\u0639\u0644\u0627\u0645 \u0634\u062f\u0647 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06a9\u062f \u0634\u0645\u0627 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># domain name variable<\/span>\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This is the name of the hosted zone.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0641\u0631\u0622\u06cc\u0646\u062f \u06cc\u06a9 \u0645\u0631\u062d\u0644\u0647\u200c\u0627\u06cc \u062f\u0631 terraform \u0646\u06cc\u0633\u062a\u060c \u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0645\u0646\u0628\u0639 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u0648 \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%AF%D9%88%D8%A7%D9%87%DB%8C_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06af\u0648\u0627\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u0632\u06cc\u0631\u0627 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc SSL \u062e\u0648\u062f \u062f\u0631 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <\/p>\n<p>\u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644\u060c \u06cc\u06a9 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>certificate<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631 <code>Module<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u06a9\u0647 \u0645\u0627\u0698\u0648\u0644 \u06af\u0648\u0627\u0647\u06cc \u0645\u0627 \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u062c\u0627\u06cc \u0645\u06cc \u062f\u0647\u062f.  3 \u0641\u0627\u06cc\u0644 \u062c\u062f\u06cc\u062f \u062f\u0631 \u0622\u0646 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>main.tf<\/code>\u060c <code>variable.tf<\/code> \u0648 <code>output.tf<\/code>.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%A7%DA%98%D9%88%D9%84_%D9%87%D8%A7%DA%AF%D9%88%D8%A7%D9%87%DB%8C%D9%86%D8%A7%D9%85%D9%87maintf\"><\/span>\n<p>  <strong>\u0645\u0627\u0698\u0648\u0644 \u0647\u0627\/\u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create the TLS\/SSL certificate<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_acm_certificate\"<\/span> <span class=\"s2\">\"cert\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">domain_name<\/span>               <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">validation_method<\/span>         <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">validation_method<\/span>\n  <span class=\"nx\">subject_alternative_names<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">subject_alternative_names<\/span>\n\n  <span class=\"c1\"># Ensure that the resource is rebuilt before destruction when running an update<\/span>\n  <span class=\"nx\">lifecycle<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">create_before_destroy<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulescertificatevariablestf\"><\/span>\n<p>  <strong>Modules\/certificate\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Domain name for which the certificate should be issued\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"validation_method\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Which method to use for validation.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"DNS\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"subject_alternative_names\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Set of domains that should be SANs in the issued certificate.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">list<\/span><span class=\"p\">(<\/span><span class=\"nx\">string<\/span><span class=\"p\">)<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[]<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulescertificateoutputstf\"><\/span>\n<p>  <strong>Modules\/certificate\/outputs.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u062e\u0631\u0648\u062c\u06cc \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0631\u062c\u0627\u0639 \u062f\u0647\u06cc\u0645 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"cert-arn\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_acm_certificate<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert<\/span><span class=\"p\">.<\/span><span class=\"nx\">arn<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">output<\/span> <span class=\"s2\">\"domain_validation_options\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_acm_certificate<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_validation_options<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%DA%A9%D9%88%D8%B1%D8%AF_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%DA%AF%D9%88%D8%A7%D9%87%DB%8C_ACM_%D8%B1%D8%A7_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0631\u06a9\u0648\u0631\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc ACM \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u0645\u0646\u0628\u0639 \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f DNS \u062f\u0631 AWS Route 53 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0645\u0627\u0644\u06a9\u06cc\u062a \u062f\u0627\u0645\u0646\u0647 \u0628\u0631\u0627\u06cc \u06af\u0648\u0627\u0647\u06cc AWS ACM \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.  \u062c\u0632\u0626\u06cc\u0627\u062a \u0631\u06a9\u0648\u0631\u062f DNS (\u0646\u0627\u0645\u060c \u0645\u0642\u062f\u0627\u0631\u060c \u0646\u0648\u0639) \u0627\u0632 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0627\u0645\u0646\u0647 \u06af\u0648\u0627\u0647\u06cc ACM \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u0622\u06cc\u062f. <\/p>\n<p>\u0645\u0627 \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f \u0631\u0627 \u062f\u0631 route53 \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u067e\u0633 \u0628\u0647 \u0633\u0631\u0627\u063a \u062e\u0648\u062f\u062a\u0627\u0646 \u0628\u0631\u0648\u06cc\u062f <code>Modules\/route53\/main.tf<\/code> \u0641\u0627\u06cc\u0644.  \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53maintf-2\"><\/span>\n<p>  <strong>Modules\/route53\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create DNS record that will be used for our certificate validation<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_route53_record\"<\/span> <span class=\"s2\">\"cert_validation\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">for_each<\/span>   <span class=\"p\">=<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">for<\/span> <span class=\"nx\">dvo<\/span> <span class=\"nx\">in<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_validation_options<\/span> <span class=\"err\">:<\/span> <span class=\"nx\">dvo<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span> <span class=\"p\">=<\/span><span class=\"err\">&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">name<\/span>     <span class=\"p\">=<\/span> <span class=\"nx\">dvo<\/span><span class=\"p\">.<\/span><span class=\"nx\">resource_record_name<\/span>\n    <span class=\"nx\">type<\/span>     <span class=\"p\">=<\/span> <span class=\"nx\">dvo<\/span><span class=\"p\">.<\/span><span class=\"nx\">resource_record_type<\/span>\n    <span class=\"nx\">record<\/span>   <span class=\"p\">=<\/span> <span class=\"nx\">dvo<\/span><span class=\"p\">.<\/span><span class=\"nx\">resource_record_value<\/span>\n  <span class=\"p\">}<\/span> <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">name<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span>\n  <span class=\"nx\">type<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">type<\/span>\n  <span class=\"nx\">records<\/span>    <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"nx\">each<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nx\">record<\/span><span class=\"p\">]<\/span>\n  <span class=\"nx\">ttl<\/span>        <span class=\"p\">=<\/span> <span class=\"mi\">60<\/span>\n  <span class=\"nx\">zone_id<\/span>  <span class=\"p\">=<\/span> <span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">aws_route53_zone<\/span><span class=\"p\">.<\/span><span class=\"nx\">created<\/span><span class=\"p\">.<\/span><span class=\"nx\">zone_id<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u062f \u0628\u0627\u0644\u0627 \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f CNAME \u062f\u0631 \u0645\u0646\u0637\u0642\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.  \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0627\u06af\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u062f \u0627\u06cc\u062c\u0627\u062f \u06af\u0648\u0627\u0647\u06cc te \u0648 \u0627\u06cc\u062c\u0627\u062f \u0631\u06a9\u0648\u0631\u062f \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0627 \u06cc\u06a9 \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627\u06cc\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u062e\u0637 \u0632\u06cc\u0631 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--b1r1SzpS--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/341097bd-cb10-4e9e-8154-e60b550e80bf\" alt=\"for_each-error\" loading=\"lazy\" width=\"800\" height=\"161\" title=\"\"><\/p>\n<p>\u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>terraform apply<\/code> \u062f\u0633\u062a\u0648\u0631 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53variablestf-2\"><\/span>\n<p>  <strong>Modules\/route53\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0627\u0698\u0648\u0644 route53 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_validation_options\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span>             <span class=\"p\">=<\/span> <span class=\"s2\">\"The domain validation options from the ACM certificate.\"<\/span>\n  <span class=\"nx\">type<\/span>                    <span class=\"p\">=<\/span> <span class=\"nx\">list<\/span><span class=\"p\">(<\/span><span class=\"nx\">object<\/span><span class=\"p\">({<\/span>\n    <span class=\"nx\">domain_name<\/span>           <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n    <span class=\"nx\">resource_record_name<\/span>  <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n    <span class=\"nx\">resource_record_type<\/span>  <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n    <span class=\"nx\">resource_record_value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"p\">}))<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%AF%D9%88%D8%A7%D9%87%DB%8C%D9%86%D8%A7%D9%85%D9%87_%D8%B1%D8%A7_%D8%AA%D8%A3%DB%8C%DB%8C%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06cc\u0646 <code>aws_acm_certificate<\/code> \u0645\u0646\u0628\u0639 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u062f\u0631 Terraform \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc \u062f\u0647\u062f\u060c \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>aws_acm_certificate_validation<\/code> \u0645\u0646\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0622\u0646<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0645 \u0648 \u0627\u0632 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u06a9\u0631\u062f\u06cc\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u0628\u0627\u06cc\u062f \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u0645\u0642\u062f\u0627\u0631 \u0622\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f <code>domain_validation_options<\/code> \u0627\u0628\u062a\u062f\u0627 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0642\u0628\u0644 \u0627\u0632 terraform \u062f\u0633\u062a\u0648\u0631 for_each \u0645\u0627 \u0631\u0627 \u0627\u0631\u062c \u0645\u06cc \u0646\u0647\u062f\u060c \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u06af\u0648\u0627\u0647\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0633\u067e\u0633 \u0631\u06a9\u0648\u0631\u062f \u0648 \u0633\u067e\u0633 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0628\u0647 \u062f\u0644\u06cc\u0644 \u0628\u0627\u0644\u0627\u060c \u0645\u0627 \u0645\u0631\u062d\u0644\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 \u06af\u0648\u0627\u0647\u06cc \u0642\u0631\u0627\u0631 \u0646\u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u0628\u0644\u06a9\u0647 \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 Route53 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645. <code>Route53<\/code> \u0645\u062f\u0648\u0644.<\/p>\n<p>\u06a9\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 \u0632\u06cc\u0631 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53maintf-3\"><\/span>\n<p>  <strong>Modules\/route53\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Validate the certificate<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_acm_certificate_validation\"<\/span> <span class=\"s2\">\"validate-cert\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">certificate_arn<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">certificate_arn<\/span>\n  <span class=\"nx\">validation_record_fqdns<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"nx\">for<\/span> <span class=\"nx\">record<\/span> <span class=\"nx\">in<\/span> <span class=\"nx\">aws_route53_record<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert_validation<\/span> <span class=\"err\">:<\/span> <span class=\"nx\">record<\/span><span class=\"p\">.<\/span><span class=\"nx\">fqdn<\/span><span class=\"p\">]<\/span>\n\n  <span class=\"nx\">depends_on<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"nx\">aws_route53_record<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert_validation<\/span><span class=\"p\">]<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>depends_on<\/code> \u0622\u0631\u06af\u0648\u0645\u0627\u0646 terraform \u0631\u0627 \u0645\u062c\u0628\u0648\u0631 \u0628\u0647 \u0627\u06cc\u062c\u0627\u062f <code>aws_route53_record.cert_validation<\/code> \u0642\u0628\u0644 \u0627\u0632 \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0648\u0627\u0647\u06cc \u0645\u0627\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0646\u0628\u0639 \u0631\u0627 \u062a\u0647\u06cc\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53variablestf-3\"><\/span>\n<p>  <strong>Modules\/route53\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 variables.tf \u0645\u0627\u0698\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"certificate_arn\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulesroute53outputstf\"><\/span>\n<p>  <strong>Modules\/route53\/outputs.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 outputs.tf \u0645\u0627\u0698\u0648\u0644 route53 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"dns_records\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_route53_record<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert_validation<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0627 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u0631\u06a9\u0648\u0631\u062f \u0645\u0633\u062a\u0639\u0627\u0631 \u062a\u0648\u0632\u06cc\u0639 CloudFront \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645\u060c \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u062a\u0648\u0632\u06cc\u0639 cloudfront \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0646\u0627\u0645 \u0645\u0633\u062a\u0639\u0627\u0631 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<hr\/>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u0634 \u0628\u0631\u0648\u06cc\u0645 \u0648 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 <code>cloudfront<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062f\u0631 <code>Modules<\/code> \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0648 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u062c\u0627\u062f <code>main.tf<\/code> \u0648 <code>variables.tf<\/code> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C_%D9%85%D8%A8%D8%AF%D8%A7_%E2%80%93_OAC\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0628\u062f\u0627 &#8211; OAC<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 <code>Origin Access Control<\/code> \u0645\u0627 \u062f\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062a\u0648\u0632\u06cc\u0639 \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u062f \u0632\u06cc\u0631 \u0628\u0647 \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u062f <code>main.tf<\/code> \u0641\u0627\u06cc\u0644:<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulescloudfrontmaintf\"><\/span>\n<p>  <strong>Modules\/cloudfront\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create the access origin control that will be used in creating our cloudfront distribution with s3 origin<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_cloudfront_origin_access_control\"<\/span> <span class=\"s2\">\"assign-oac\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">name<\/span>                              <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">oac-name<\/span>\n  <span class=\"nx\">description<\/span>                       <span class=\"p\">=<\/span> <span class=\"s2\">\"An origin access control with s3 origin domain for cloudfront\"<\/span>\n  <span class=\"nx\">origin_access_control_origin_type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">origin_access_control_origin_type<\/span>\n  <span class=\"nx\">signing_behavior<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">signing_behavior<\/span>\n  <span class=\"nx\">signing_protocol<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">signing_protocol<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulescloudfrontvariablestf\"><\/span>\n<p>  <strong>Modules\/cloudfront\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"oac-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"This is the name of the cloudfront origin Access control with s3 bucket origin domain\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"s3-bucket-oac\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"origin_access_control_origin_type\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The origin type must be the same as the origin domain\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"s3\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"signing_behavior\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Specifies which requests CloudFront signs.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"always\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"signing_protocol\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Determines how CloudFront signs (authenticates) requests.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"sigv4\"<\/span> <span class=\"c1\"># The only valid value<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%AA%D9%88%D8%B2%DB%8C%D8%B9\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u062a\u0648\u0632\u06cc\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0648\u0632\u06cc\u0639 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645.  \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>main.tf<\/code> \u0641\u0627\u06cc\u0644:<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulescloudfrontmaintf-2\"><\/span>\n<p>  <strong>Modules\/cloudfront\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create CloudFront Distribution<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_cloudfront_distribution\"<\/span> <span class=\"s2\">\"cdn\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">origin<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">domain_name<\/span>              <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn-domain_name-and-origin_id<\/span>\n    <span class=\"nx\">origin_id<\/span>                <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn-domain_name-and-origin_id<\/span>\n    <span class=\"nx\">origin_access_control_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_cloudfront_origin_access_control<\/span><span class=\"p\">.<\/span><span class=\"nx\">assign-oac<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">default_cache_behavior<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">compress<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n    <span class=\"nx\">viewer_protocol_policy<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"redirect-to-https\"<\/span>\n    <span class=\"nx\">allowed_methods<\/span>        <span class=\"p\">=<\/span> <span class=\"p\">[<\/span> <span class=\"s2\">\"GET\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"HEAD\"<\/span> <span class=\"p\">]<\/span>\n    <span class=\"nx\">cached_methods<\/span>         <span class=\"p\">=<\/span> <span class=\"p\">[<\/span> <span class=\"s2\">\"GET\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"HEAD\"<\/span> <span class=\"p\">]<\/span>\n    <span class=\"nx\">target_origin_id<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn-domain_name-and-origin_id<\/span>\n    <span class=\"nx\">min_ttl<\/span>                <span class=\"p\">=<\/span> <span class=\"mi\">0<\/span>\n    <span class=\"nx\">default_ttl<\/span>            <span class=\"p\">=<\/span> <span class=\"mi\">3600<\/span>\n    <span class=\"nx\">max_ttl<\/span>                <span class=\"p\">=<\/span> <span class=\"mi\">86400<\/span>\n\n    <span class=\"nx\">forwarded_values<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">query_string<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">false<\/span>\n      <span class=\"nx\">cookies<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">forward<\/span>    <span class=\"p\">=<\/span> <span class=\"s2\">\"all\"<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">restrictions<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">geo_restriction<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">restriction_type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">restriction_type<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">viewer_certificate<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">acm_certificate_arn<\/span>            <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">acm_certificate_arn<\/span>\n    <span class=\"nx\">ssl_support_method<\/span>             <span class=\"p\">=<\/span> <span class=\"s2\">\"sni-only\"<\/span>\n    <span class=\"nx\">minimum_protocol_version<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"TLSv1.2_2021\"<\/span>\n    <span class=\"nx\">cloudfront_default_certificate<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">false<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nx\">enabled<\/span>             <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"nx\">is_ipv6_enabled<\/span>     <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\n  <span class=\"nx\">default_root_object<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">default_root_object<\/span>\n  <span class=\"nx\">aliases<\/span>             <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"www.${var.domain_name}\"<\/span><span class=\"p\">]<\/span> \n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulescloudfrontvariablestf-2\"><\/span>\n<p>  <strong>Modules\/cloudfront\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"restriction_type\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Method that you want to use to restrict distribution of your content by country\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"none\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"default_root_object\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Object that you want CloudFront to return when an end user requests the root URL.\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"index.html\"<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"your custom Domain name for which the certificate should be issued\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"cdn-domain_name-and-origin_id\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"acm_certificate_arn\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulescloudfrontoutputstf\"><\/span>\n<p>  <strong>Modules\/cloudfront\/outputs.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">output<\/span> <span class=\"s2\">\"cloudfront-arn\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_cloudfront_distribution<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn<\/span><span class=\"p\">.<\/span><span class=\"nx\">arn<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">output<\/span> <span class=\"s2\">\"cloudfront_domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_cloudfront_distribution<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">output<\/span> <span class=\"s2\">\"cloudfront_hosted-zone_id\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">value<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_cloudfront_distribution<\/span><span class=\"p\">.<\/span><span class=\"nx\">cdn<\/span><span class=\"p\">.<\/span><span class=\"nx\">hosted_zone_id<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0628\u0627\u06cc\u062f \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0633\u0637\u0644 \u062e\u0627\u0635\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0622\u0646 cloudfront \u0628\u0627\u06cc\u062f \u0628\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0628\u0627 \u0633\u0637\u0644 s3 \u0645\u0627 \u062a\u0639\u0627\u0645\u0644 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0628\u0647 \u0633\u0637\u0644 s3 \u0645\u0627.<\/p>\n<p>\u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u062e\u0648\u062f \u0628\u0631\u06af\u0631\u062f\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Moduless3-bucketmaintf\"><\/span>\n<p>  <strong>Modules\/s3-bucket\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06cc\u0646 \u062e\u0637 \u0645\u0634\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u062a\u0648\u0632\u06cc\u0639 \u0627\u0628\u0631\u06cc \u0645\u0627 \u0631\u0627 \u0628\u0647 \u0633\u0637\u0644 s3 \u0648 \u0634\u06cc\u0621 \u0622\u0646 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06a9\u0646\u062a\u0631\u0644 \u0645\u0628\u062f\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u0622\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u06a9\u062f \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644 main.tf \u0645\u0627\u0698\u0648\u0644 \u0633\u0637\u0644 s3 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Moduless3-bucketmaintf-2\"><\/span>\n<p>  <strong>Modules\/s3-bucket\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Add the permissions needed by cloudfront's origin access control to access the bucket and it's objects<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_s3_bucket_policy\"<\/span> <span class=\"s2\">\"cloudfront-oac-policy\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">bucket<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_s3_bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">site-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket<\/span>\n  <span class=\"nx\">policy<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">jsonencode<\/span><span class=\"p\">({<\/span>\n    <span class=\"nx\">Version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"2012-10-17\"<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">Statement<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span>\n      <span class=\"p\">{<\/span>\n        <span class=\"nx\">Sid<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"AllowCloudFrontServicePrincipal\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">Effect<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Allow\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">Principal<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n          <span class=\"nx\">Service<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"cloudfront.amazonaws.com\"<\/span>\n        <span class=\"p\">},<\/span>\n        <span class=\"nx\">Action<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"s3:GetObject\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">Resource<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"${aws_s3_bucket.site-bucket.arn}\/*\"<\/span><span class=\"p\">,<\/span>\n        <span class=\"nx\">Condition<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n          <span class=\"nx\">StringLike<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\n            <span class=\"s2\">\"aws:UserAgent\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Amazon CloudFront\"<\/span>\n          <span class=\"p\">}<\/span>\n        <span class=\"p\">}<\/span>\n      <span class=\"p\">}<\/span>\n    <span class=\"p\">]<\/span>\n  <span class=\"p\">})<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<p>\u0645\u0627 \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u060c \u06cc\u06a9 \u0645\u0627\u0698\u0648\u0644 \u062c\u062f\u06cc\u062f \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>alias<\/code>\u060c \u062f\u0648 \u0641\u0627\u06cc\u0644 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>main.tf<\/code> \u0648 <code>variables.tf<\/code>.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Modulesaliasmaintf\"><\/span>\n<p>  <strong>Modules\/alias\/main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Retrieve information about your hosted zone from AWS<\/span>\n<span class=\"nx\">data<\/span> <span class=\"s2\">\"aws_route53_zone\"<\/span> <span class=\"s2\">\"created\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Create an alias that will point to the cloudfront distribution domain name<\/span>\n<span class=\"nx\">resource<\/span> <span class=\"s2\">\"aws_route53_record\"<\/span> <span class=\"s2\">\"alias\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">zone_id<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">aws_route53_zone<\/span><span class=\"p\">.<\/span><span class=\"nx\">created<\/span><span class=\"p\">.<\/span><span class=\"nx\">zone_id<\/span>\n  <span class=\"nx\">name<\/span>                     <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">type<\/span>                     <span class=\"p\">=<\/span> <span class=\"s2\">\"A\"<\/span>\n\n  <span class=\"nx\">alias<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">name<\/span>                   <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront_domain_name<\/span>\n    <span class=\"nx\">zone_id<\/span>                <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront-zone-id<\/span>\n    <span class=\"nx\">evaluate_target_health<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">false<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"Modulesaliasvariablestf\"><\/span>\n<p>  <strong>Modules\/alias\/variables.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0637\u0628\u0642 \u0645\u0639\u0645\u0648\u0644 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"your custom domain name\"<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"cloudfront_domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"cloudfront-zone-id\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<hr\/>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0632\u0645\u0627\u0646 \u0622\u0646 \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u062f\u0631 \u0633\u0627\u062e\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.  \u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u0627\u0698\u0648\u0644 \u062f\u0631 <code>main.tf<\/code> \u0641\u0627\u06cc\u0644 \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0645\u0627\u060c \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0635\u0644\u06cc \u0645\u0627 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0627 \u0642\u0628\u0644\u0627 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0627\u0648\u0627\u06cc\u0644 \u067e\u0631\u0648\u0698\u0647 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0633\u062a\u06cc\u0645 \u0645\u0627\u0698\u0648\u0644 s3-bucket \u062e\u0648\u062f \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0646\u06cc\u0645 \u0628\u0647 main.tf \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0648\u062f\u06cc\u0645\u060c \u0627\u06a9\u0646\u0648\u0646 \u0628\u0642\u06cc\u0647 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0645\u0627\u0698\u0648\u0644 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. <code>main.tf<\/code>.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"maintf-3\"><\/span>\n<p>  <strong>main.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0634\u0645\u0627 <code>main.tf<\/code> \u0645\u0627\u0698\u0648\u0644 \u0631\u06cc\u0634\u0647 \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"c1\"># Create S3 bucket, upload objects into the bucket and set bucket policy.<\/span>\n<span class=\"nx\">module<\/span> <span class=\"s2\">\"s3-bucket\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/s3-bucket\"<\/span>\n  <span class=\"nx\">bucket-name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket-name<\/span>\n  <span class=\"nx\">web-assets-path<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">web-assets-path<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Create and validate TLS\/SSL certificate<\/span>\n<span class=\"nx\">module<\/span> <span class=\"s2\">\"certificate\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/certificate\"<\/span>\n  <span class=\"nx\">domain_name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">subject_alternative_names<\/span>  <span class=\"p\">=<\/span> <span class=\"p\">[<\/span><span class=\"s2\">\"www.${var.domain_name}\"<\/span><span class=\"p\">]<\/span>\n  <span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Create OAC and cloudfront distribution, <\/span>\n<span class=\"nx\">module<\/span> <span class=\"s2\">\"cloudfront\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/cloudfront\"<\/span>\n  <span class=\"nx\">domain_name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">cdn-domain_name-and-origin_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">s3-bucket<\/span><span class=\"p\">.<\/span><span class=\"nx\">bucket_regional_domain_name<\/span>\n  <span class=\"nx\">acm_certificate_arn<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">certificate<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert-arn<\/span>\n  <span class=\"nx\">depends_on<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">route53<\/span> <span class=\"p\">]<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Import the hosted zone from AWS, create dns records for certificate validation, and create A and CNAME records.<\/span>\n<span class=\"nx\">module<\/span> <span class=\"s2\">\"route53\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/route53\"<\/span>\n  <span class=\"nx\">domain_name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">domain_validation_options<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">certificate<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_validation_options<\/span>\n  <span class=\"nx\">certificate_arn<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">certificate<\/span><span class=\"p\">.<\/span><span class=\"nx\">cert-arn<\/span>\n  <span class=\"p\">}<\/span>\n\n<span class=\"c1\"># Create an alias to point the cloudfront cdn to our domain name.<\/span>\n<span class=\"nx\">module<\/span> <span class=\"s2\">\"alias\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">source<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\".\/Modules\/alias\"<\/span>\n  <span class=\"nx\">domain_name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">domain_name<\/span>\n  <span class=\"nx\">cloudfront_domain_name<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront_domain_name<\/span>\n  <span class=\"nx\">cloudfront-zone-id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront_hosted-zone_id<\/span>\n  <span class=\"nx\">depends_on<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[<\/span> <span class=\"nx\">module<\/span><span class=\"p\">.<\/span><span class=\"nx\">cloudfront<\/span> <span class=\"p\">]<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7tf-2\"><\/span>\n<p>  <strong>\u0645\u062a\u063a\u06cc\u0631\u0647\u0627.tf<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0641\u0627\u06cc\u0644 variable.tf \u0646\u0647\u0627\u06cc\u06cc \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0634\u06a9\u0644 \u0632\u06cc\u0631 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">variable<\/span> <span class=\"s2\">\"bucket-name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"web-assets-path\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nx\">variable<\/span> <span class=\"s2\">\"domain_name\"<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">type<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h4><span class=\"ez-toc-section\" id=\"terraformtfvars-3\"><\/span>\n<p>  <strong>terraform.tfvars<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u0633\u0631\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f <code>*.tfvars<\/code> \u0641\u0627\u06cc\u0644 \u0645\u0627\u0646\u0646\u062f \u0627\u06cc\u0646:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight hcl\"><code><span class=\"nx\">bucket-name<\/span> <span class=\"err\">=<\/span> <span class=\"s2\">\"<your unique=\"\" bucket=\"\" name=\"\">\nweb-assets-path = \"<\/your><\/span><span class=\"err\"><span class=\"nx\">the<\/span> <span class=\"nx\">path<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">your<\/span> <span class=\"nx\">website<\/span> <span class=\"nx\">files<\/span> <span class=\"err\">(<\/span><span class=\"nx\">best<\/span> <span class=\"nx\">to<\/span> <span class=\"nx\">supply<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">absolute<\/span> <span class=\"nx\">path<\/span><span class=\"err\">)&gt;<\/span>\n<span class=\"nx\">domain_name<\/span> <span class=\"err\">=<\/span> <span class=\"s2\">\"<your custom=\"\" domain=\"\" name=\"\">\"<\/your><\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0647\u0645\u0647 \u0645\u0627 \u0622\u0645\u0627\u062f\u0647 \u0627\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0645\u0633\u062a\u0642\u0631 \u06a9\u0646\u06cc\u0645.<\/p>\n<hr\/>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%A7%DA%98%D9%88%D9%84_%D9%87%D8%A7_%D8%B1%D8%A7_%D9%86%D8%B5%D8%A8_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0645\u0627\u0698\u0648\u0644 \u0647\u0627 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0648\u0644\u06cc\u0646 \u0627\u062c\u0631\u0627 <code>tf init<\/code> \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u062a\u0645\u0627\u0645 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0647<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>tf init\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--TpUuCVyR--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/a88db47c-8a6b-439b-8965-63c704a62007\" alt=\"\u0646\u0635\u0628 \u0645\u0627\u0698\u0648\u0644 \u0647\u0627\" loading=\"lazy\" width=\"800\" height=\"519\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 validate \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>tf validate\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--iF0J8SWv--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/a07e20b9-fd32-485e-adeb-c39f34017d4e\" alt=\"tf- \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc\" loading=\"lazy\" width=\"582\" height=\"56\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B2%DB%8C%D8%B1%D8%B3%D8%A7%D8%AE%D8%AA\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0632\u06cc\u0631\u0633\u0627\u062e\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062a\u0648\u0636\u06cc\u062d \u062f\u0627\u062f\u0645 <code>for_each<\/code> \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u0631\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u062a\u06a9\u0631\u0627\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0632\u0645\u0627\u0646 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647\u200c\u0627\u0646\u062f <code>apply<\/code> \u062f\u0633\u062a\u0648\u0631 \u0627\u06cc\u0646 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0627\u06af\u0631 \u0645\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f \u06af\u0648\u0627\u0647\u06cc\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c terraform \u062e\u0637\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u062f\u0631 \u062f\u0648 \u0645\u0631\u062d\u0644\u0647 \u0627\u0628\u062a\u062f\u0627 \u0628\u0627 <code>--target<\/code> \u067e\u0631\u0686\u0645 \u06af\u0630\u0627\u0631\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0633\u067e\u0633 \u06a9\u0644 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0631\u0627\u06cc \u0627\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>tf apply <span class=\"nt\">--target<\/span> module.certificate\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--mdO4VTrj--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/f07df8ed-62ff-4f6f-91a2-d6b25a6ba79d\" alt=\"--\u0647\u062f\u0641-\u0641\u0631\u0645\u0627\u0646\" loading=\"lazy\" width=\"800\" height=\"250\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--azKooqwO--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/da124980-b8c5-43f3-a3ea-f47d072ef997\" alt=\"--\u0647\u062f\u0641\" loading=\"lazy\" width=\"800\" height=\"304\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--bC-UTQSZ--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/bcea131c-f001-4301-94bb-c893010628dc\" alt=\"--\u0647\u062f\u0641 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647\" loading=\"lazy\" width=\"800\" height=\"234\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u0646\u0627\u0628\u0639 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>tf apply\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--oITiEchI--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/d0fc99a0-a838-4e08-b3f0-38ca776405de\" alt=\"tf-apply\" loading=\"lazy\" width=\"637\" height=\"224\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--VhUEoRXY--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/fcdd92b8-c344-4dd3-a53d-1d9daf85ea36\" alt=\"\u06a9\u0627\u0631\u0628\u0631\u062f\u06cc\" loading=\"lazy\" width=\"800\" height=\"158\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B3%D8%A7%D8%AE%D8%AA_%D8%B1%D8%A7_%D8%AA%D8%A7%DB%8C%DB%8C%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u0633\u0627\u062e\u062a \u0631\u0627 \u062a\u0627\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0646\u0633\u0648\u0644 AWS \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0646\u0627\u0628\u0639 \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f.<\/p>\n<p>\u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f \u0628\u0631\u0648\u06cc\u062f \u0648 \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f \u06a9\u0647 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0634\u0645\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627\u0644 \u0645\u0646 \u0627\u0633\u062a.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--yTpefK7L--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/a40eb65e-c8e6-4ab9-89b1-bc00b99f41a0\" alt=\"\u0635\u0641\u062d\u0647 \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u0634\u062f\u0647\" loading=\"lazy\" width=\"800\" height=\"487\" title=\"\"><\/p>\n<hr\/>\n<p>\u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c \u0645\u062d\u06cc\u0637 \u062e\u0648\u062f \u0631\u0627 \u062a\u0645\u06cc\u0632 \u06a9\u0646\u06cc\u062f.  \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0635\u0648\u0631\u062a\u062d\u0633\u0627\u0628 \u063a\u06cc\u0631 \u0636\u0631\u0648\u0631\u06cc\u060c \u0645\u0646\u0627\u0628\u0639 \u0631\u0627 \u062f\u0631 AWS \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0631\u0647\u0627 \u0646\u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u0632 \u062f\u0633\u062a\u0648\u0631 \u062a\u062e\u0631\u06cc\u0628 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>tf destroy\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--6V1kUvKP--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/67ae1127-6987-4fc5-9565-d1b74fc3aae2\" alt=\"\u0627\u0632 \u0628\u06cc\u0646 \u0631\u0641\u062a\u0646\" loading=\"lazy\" width=\"751\" height=\"275\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/practicaldev\/image\/fetch\/s--LqnIXEie--\/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800\/https:\/\/github.com\/ChigozieCO\/altschool-3rd-semester\/assets\/107365067\/11b612c9-7d13-4069-b1cc-dd0bf740b5f8\" alt=\"\u0646\u0627\u0628\u0648\u062f\" loading=\"lazy\" width=\"800\" height=\"135\" title=\"\"><\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0645\u062a \u0627\u0632 \u062f\u0646\u06cc\u0627\u06cc \u0645\u0627 \u0645\u0644\u06a9\u0647 \u0627\u0633\u062a\u060c \u0647\u0631 \u0686\u0647 \u0628\u06cc\u0634\u062a\u0631 \u06a9\u0627\u0631\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0648\u062f\u06a9\u0627\u0631 \u06a9\u0646\u06cc\u062f\u060c \u0628\u0647\u062a\u0631 \u0627\u0633\u062a. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Terraform \u0628\u0631\u0627\u06cc \u0645\u0647\u0646\u062f\u0633\u06cc\u0646 \u0627\u0628\u0631 \u0628\u0631\u0627\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631\u0633\u0627\u0632\u06cc \u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0634\u0645\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a. Terraform \u06cc\u06a9 \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 \u06a9\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":68849,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-68848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=68848"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/68848\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/68849"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=68848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=68848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=68848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}