{"id":23667,"date":"2026-05-08T15:14:19","date_gmt":"2026-05-08T15:14:19","guid":{"rendered":"https:\/\/umang.pk\/2026\/05\/08\/%d9%b9%db%8c%d8%b1%d8%a7%d9%81%d8%a7%d8%b1%d9%85-%d8%b3%db%92-s3-%d9%85%d9%82%d8%a7%d9%85%db%8c-%d8%b1%db%8c%d8%a7%d8%b3%d8%aa-%d9%84%d8%a7%da%a9%d9%86%da%af-%d9%85%db%8c%da%ba-%da%a9%db%8c%d8%b3\/"},"modified":"2026-05-08T15:14:20","modified_gmt":"2026-05-08T15:14:20","slug":"%d9%b9%db%8c%d8%b1%d8%a7%d9%81%d8%a7%d8%b1%d9%85-%d8%b3%db%92-s3-%d9%85%d9%82%d8%a7%d9%85%db%8c-%d8%b1%db%8c%d8%a7%d8%b3%d8%aa-%d9%84%d8%a7%da%a9%d9%86%da%af-%d9%85%db%8c%da%ba-%da%a9%db%8c%d8%b3","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/05\/08\/%d9%b9%db%8c%d8%b1%d8%a7%d9%81%d8%a7%d8%b1%d9%85-%d8%b3%db%92-s3-%d9%85%d9%82%d8%a7%d9%85%db%8c-%d8%b1%db%8c%d8%a7%d8%b3%d8%aa-%d9%84%d8%a7%da%a9%d9%86%da%af-%d9%85%db%8c%da%ba-%da%a9%db%8c%d8%b3\/","title":{"rendered":"\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0633\u06d2 S3 \u0645\u0642\u0627\u0645\u06cc \u0631\u06cc\u0627\u0633\u062a \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u06af\u0631 \u0622\u067e \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u0633\u06d2 AWS \u067e\u0631 Terraform \u0686\u0644\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0634\u0627\u06cc\u062f \u0633\u06cc\u0679 \u0627\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u0648\u06ba \u06af\u06d2: \u0627\u0633\u0679\u06cc\u0679 \u06a9\u0648 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 S3 \u0628\u0627\u0644\u0679\u06cc\u060c \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 DynamoDB \u0679\u06cc\u0628\u0644\u060c \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0628\u0627\u0646\u062f\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u0646\u062f IAM \u067e\u0627\u0644\u06cc\u0633\u06cc\u0627\u06ba\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0627\u0644\u0648\u06ba \u062a\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u0631\u06c1\u0627\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u06cc\u0633\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u06c1\u0648\u062a\u06d2 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u0646 \u067e\u0631 \u0639\u0648\u0627\u0645\u06cc \u0633\u0637\u062d \u067e\u0631 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0628\u0627\u062a \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u0646 \u0688\u06cc\u0645\u0627\u0646\u0688 \u0628\u0644\u0646\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be DynamoDB \u0645\u06cc\u0632\u06cc\u06ba \u0645\u062a\u0639\u062f\u062f \u0679\u06cc\u0645\u0648\u06ba \u0627\u0648\u0631 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u0635\u0631\u0641 \u0645\u0627\u0644\u06cc\u0627\u062a\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0635\u0644 \u0642\u06cc\u0645\u062a \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u06c1\u06d2\u06d4 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0646\u0626\u06d2 AWS \u0645\u0627\u062d\u0648\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0648\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0641\u0631\u0627\u06c1\u0645\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 Terraform \u062f\u0648\u0633\u0631\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4 \u067e\u06c1\u0644\u06cc \u0628\u0627\u0631 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0642\u0627\u0626\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u06a9\u0648 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u06a9\u06c1 \u062f\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0645\u062e\u062a\u0644\u0641 AWS \u0633\u0631\u0648\u0633\u0632 \u0631\u06cc\u0627\u0633\u062a \u06a9\u0648 \u0630\u062e\u06cc\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06cc \u062d\u0641\u0627\u0638\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u0637\u0642\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u06a9\u06cc\u0648\u06ba \u06c1\u06cc\u06ba\u06d4 \u0627\u0648\u0631 \u062a\u0627\u0644\u0627 \u0628\u0646\u062f \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06c1\u0631 \u0648\u0627\u0642\u0639\u06d2 \u0645\u06cc\u06ba \u06a9\u0633\u06cc \u06a9\u0648 \u0679\u06cc\u0645 \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 DynamoDB \u0633\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0648 \u062f\u0633\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u0648\u0645\u0628\u0631 2024 \u0645\u06cc\u06ba\u060c AWS \u0646\u06d2 \u0627\u0639\u0644\u0627\u0646 \u06a9\u06cc\u0627 \u06a9\u06c1 S3 \u0627\u0628 Terraform \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0642\u0627\u0645\u06cc \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <strong>DynamoDB \u06a9\u0648 \u0627\u0628 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/strong>. Terraform 1.10 \u0646\u06d2 \u0627\u0633 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0639\u0627\u0648\u0646 \u0634\u0627\u0645\u0644 \u06a9\u06cc\u0627 \u0627\u0648\u0631 \u0627\u0628 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2:<\/p>\n<ul>\n<li>\n<p>S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9 \u06a9\u06cc\u0627 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0648\u06c1 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u061f<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0634\u0631\u0648\u0639 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 S3 + DynamoDB \u0633\u06cc\u0679 \u0627\u067e \u06a9\u0648 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06cc\u06c1 \u06a9\u06cc\u0633\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0644\u0627\u06a9 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0646\u0627\u0631\u06d2 \u06a9\u06d2 \u06a9\u06cc\u0633\u0632 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0622\u067e \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06a9\u0645 AWS \u0648\u0633\u0627\u0626\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646\u060c \u0635\u0627\u0641 \u0633\u062a\u06be\u0631\u0627 Terraform \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-what-is-terraform-state-locking\">\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u0646\u0626\u06d2 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u0627 \u0645\u062f\u062f\u06af\u0627\u0631 \u06c1\u06d2 \u06a9\u06c1 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>Terraform \u0622\u067e \u06a9\u0648 \u0648\u06c1 \u0633\u0628 \u06a9\u0686\u06be \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <strong>\u0631\u06cc\u0627\u0633\u062a\u06cc \u0641\u0627\u0626\u0644<\/strong> &#8211; \u0627\u06cc\u06a9 JSON \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u062c\u0648 \u0627\u0635\u0644 AWS \u0648\u0633\u0627\u0626\u0644 \u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0648 \u0646\u0642\u0634\u06c1 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u0628 \u0622\u067e \u0628\u06be\u0627\u06af\u062a\u06d2 \u06c1\u06cc\u06ba <code>terraform apply<\/code>Terraform \u0627\u0633 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0627\u0644\u062a \u0627\u0648\u0631 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0648\u0626\u06cc \u0636\u0631\u0648\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u0633\u0626\u0644\u06c1 \u0627\u0633 \u0648\u0642\u062a \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062f\u0648 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0632 \u06cc\u0627 \u062f\u0648 CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u0648\u06ba \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u0648\u06ba\u06d4 \u0627\u06af\u0631 \u062f\u0648\u0646\u0648\u06ba \u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u067e\u0691\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u06cc \u06af\u0646\u062a\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u0648\u0646\u0648\u06ba \u0648\u0627\u067e\u0633 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u060c <strong>\u062f\u0648\u0691 \u06a9\u06cc \u062d\u0627\u0644\u062a<\/strong>. \u062f\u0648\u0633\u0631\u06cc \u062a\u062d\u0631\u06cc\u0631 \u067e\u06c1\u0644\u06cc \u062a\u062d\u0631\u06cc\u0631 \u0633\u06d2 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0631\u06cc\u0627\u0633\u062a \u0627\u0628 \u062d\u0642\u06cc\u0642\u062a \u0633\u06d2 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u0646\u06af\u06cc\u0646 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2 \u062c\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u0627 \u067e\u062a\u06c1 \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0633\u06a9\u062a\u0627\u060c \u062f\u0648\u06af\u0646\u0627 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0628\u0627\u06c1 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0631\u06cc\u0627\u0633\u062a\u06cc \u062a\u0627\u0644\u0627<\/strong> \u06c1\u0645 \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u0627\u06cc\u06a9 \u0644\u0627\u06a9 \u0628\u0646\u0627 \u06a9\u0631 \u062d\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u0633\u0627 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u062d\u0627\u0644\u062a \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u06cc\u06a9 \u062a\u0627\u0644\u0627 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u060c \u062a\u0648 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06cc\u06c1 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0627\u0644\u0627 \u06a9\u0633 \u06a9\u06d2 \u067e\u0627\u0633 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0628 \u0627\u0633\u06d2 \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4 \u0627\u06cc\u06a9 \u0648\u0642\u062a \u0645\u06cc\u06ba \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0679\u0627\u0633\u06a9 \u0644\u0627\u06a9 \u06a9\u0648 \u0631\u0648\u06a9 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0627\u0645 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u063a\u06cc\u0631 \u0645\u0642\u0641\u0644 \u06a9\u0631\u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-plaintext\">Terraform Run A                 State File \/ Lock                Terraform Run B\n(User 1)                         (S3\/DynamoDB)                   (User 2)\n\n   |                                   |                            |\n   |------- 1. Acquire Lock ---------->|                            |\n   |                                   |                            |\n   |<------ 2. Lock Granted -----------|                            |\n   |                                   |                            |\n   |                                   |------- 3. Acquire Lock --->|\n   |            [PROCESSING]           |                            |\n   |      (Modifying Infrastructure)   |<------ 4. Lock Denied -----|\n   |                                   |        (Wait \/ Retry)      |\n   |                                   |                            |\n   |------- 5. Release Lock ---------->|                            |\n   |                                   |                            |\n   |           [COMPLETED]             |<------ 6. Lock Granted ----|\n   |                                   |                            |\n   |                                   |       [PROCESSING]         |\n   |                                   | (Modifying Infrastructure) |              \n   |                                   |                            |\n<\/code><\/pre>\n<h2 id=\"heading-what-is-s3-native-state-locking\">S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u067e\u06c1\u0644\u06d2\u060c Terraform \u06a9\u06d2 S3 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0646\u06d2 DynamoDB \u0679\u06cc\u0628\u0644\u0632 \u06a9\u0648 \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062a\u06be\u0627\u06d4 \u062c\u0628 \u06a9\u0633\u06cc \u062a\u0627\u0644\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 Terraform DynamoDB \u06a9\u0648 \u06cc\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2: <code>LockID<\/code> \u0628\u0646\u06cc\u0627\u062f\u06cc \u06a9\u0644\u06cc\u062f\u06d4 DynamoDB \u06a9\u06cc \u0645\u0634\u0631\u0648\u0637 \u062a\u062d\u0631\u06cc\u0631\u0648\u06ba \u0646\u06d2 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u06a9\u06c1 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0639\u0645\u0644 \u0627\u0633 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0648 \u0628\u0646\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0644\u0627\u06a9 \u0627\u06cc\u0679\u0645\u06cc\u0633\u06cc\u0679\u06cc \u06a9\u0627 \u0646\u0641\u0627\u0630 \u06c1\u06d2\u06d4<\/p>\n<p>S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <strong>S3 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9<\/strong> \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2. S3 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0627\u06cc\u06a9 S3 \u062e\u0635\u0648\u0635\u06cc\u062a \u06c1\u06d2 \u062c\u0648 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0644\u06a9\u06be\u06cc\u06ba\u060c \u06a9\u0626\u06cc (WORM) \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc \u06af\u0626\u06cc \u06c1\u06cc\u06ba\u06d4 AWS \u0646\u06d2 Terraform \u0645\u06cc\u06ba \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u0641\u06cc\u0686\u0631 \u06a9\u0648 \u0628\u0691\u06be\u0627\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0622\u067e \u06a9\u06d2 Terraform \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u067e\u0631 \u0641\u0639\u0627\u0644 \u06c1\u06d2:<\/p>\n<ol>\n<li>\n<p>\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0631\u06cc\u0627\u0633\u062a\u06cc\u06ba\u06d4 <code>.tfstate<\/code> S3 \u0645\u06cc\u06ba \u0627\u0634\u06cc\u0627\u0621 (\u067e\u06c1\u0644\u06d2 \u06a9\u06cc \u0637\u0631\u062d)<\/p>\n<\/li>\n<li>\n<p>\u062a\u0627\u0644\u0627 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c Terraform \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <strong>S3 \u0645\u06cc\u06ba \u0645\u0634\u0631\u0648\u0637 \u062a\u062d\u0631\u06cc\u0631\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646\u0632<\/strong> - \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 <code>if-none-match<\/code> \u0645\u0634\u0631\u0648\u0637 \u06c1\u06cc\u0688\u0631 \u062c\u0648 \u0627\u06cc\u0679\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u060c \u062a\u0648 S3 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u0627\u0646\u06a9\u0627\u0631 \u06a9\u0631 \u062f\u06d2 \u06af\u0627 \u0627\u0648\u0631 Terraform \u0627\u0637\u0644\u0627\u0639 \u062f\u06d2 \u06af\u0627 \u06a9\u06c1 \u0644\u0627\u06a9 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062c\u0628 \u06a9\u0627\u0645 \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c Terraform \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631 \u06a9\u06d2 \u0644\u0627\u06a9 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>DynamoDB \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0646\u06cc\u0627\u062f\u06cc \u0641\u0631\u0642 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0627\u0644\u0627 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u067e\u0648\u0631\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 S3 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u062f\u0648\u0633\u0631\u06cc \u062e\u062f\u0645\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u062f\u0648\u0633\u0631\u0627 IAM \u0627\u062c\u0627\u0632\u062a \u0633\u06cc\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0631\u0632\u0642 \u06a9\u0627 \u06a9\u0648\u0626\u06cc \u062f\u0648\u0633\u0631\u0627 \u0630\u0631\u06cc\u0639\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u06cc\u0645\u0648:<\/strong> \u0627\u0633 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 Terraform \u06a9\u0627 \u0627\u06cc\u06a9 \u0648\u0631\u0698\u0646 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4 <strong>1.10.0 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1<\/strong> S3 \u0628\u0627\u0644\u0679\u06cc <strong>\u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4<\/strong>. \u0628\u0627\u0644\u0679\u06cc \u0628\u0646\u0627\u062a\u06d2 \u0648\u0642\u062a \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0627 \u0641\u0639\u0627\u0644 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u0633\u06d2 \u06a9\u0646\u0633\u0648\u0644 \u06cc\u0627 CLI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0641\u0639\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0639\u0627\u0648\u0646 \u06a9\u0627\u0645 \u06c1\u06d2\u060c \u062c\u0633 \u06a9\u0627 \u06c1\u0645 \u062d\u0635\u06c1 2 \u0645\u06cc\u06ba \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-s3-native-locking-compares-to-the-s3-dynamodb-approach\">S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0627\u0648\u0631 S3 + DynamoDB \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1<\/h2>\n<table>\n<thead>\n<tr>\n<th><strong>\u0637\u0631\u0641<\/strong><\/th>\n<th><strong>S3 + DynamoDB (\u0648\u0631\u0627\u062b\u062a)<\/strong><\/th>\n<th><strong>S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af (\u0646\u06cc\u0627)<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>AWS \u062e\u062f\u0645\u0627\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06cc\u06ba\u06d4<\/strong><\/td>\n<td>S3 + DynamoDB<\/td>\n<td>\u0635\u0631\u0641 S3<\/td>\n<\/tr>\n<tr>\n<td><strong>IAM \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/strong><\/td>\n<td>S3 + DynamoDB \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba\u06d4<\/td>\n<td>\u0635\u0631\u0641 S3 \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba\u06d4<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0648\u0631\u0698\u0646<\/strong><\/td>\n<td>\u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc<\/td>\n<td>1.10.0 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0633\u06cc\u0679 \u0627\u067e \u06a9\u06cc \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc<\/strong><\/td>\n<td>2 \u0648\u0633\u0627\u0626\u0644\u060c 2 IAM \u0627\u0633\u06a9\u0648\u067e\u0633<\/td>\n<td>\u0627\u06cc\u06a9 \u0648\u0633\u0627\u0626\u0644<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0641\u06a9\u0633\u0688 \u0644\u0627\u06a9 \u0622\u0624\u0679 \u062d\u0644<\/strong><\/td>\n<td>DynamoDB \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u0627<\/td>\n<td>S3 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/td>\n<\/tr>\n<tr>\n<td><strong>\u062e\u0631\u0686<\/strong><\/td>\n<td>S3 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c + DynamoDB \u0622\u0646 \u0688\u06cc\u0645\u0627\u0646\u0688<\/td>\n<td>\u0635\u0631\u0641 S3 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a<\/strong><\/td>\n<td>\u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba<\/td>\n<td>S3 \u0628\u0627\u0644\u0679\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/td>\n<\/tr>\n<tr>\n<td><strong>\u062a\u0627\u0644\u0627 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631<\/strong><\/td>\n<td>DynamoDB \u0645\u0634\u0631\u0648\u0637 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/td>\n<td>S3 \u0645\u0634\u0631\u0648\u0637 \u062a\u062d\u0631\u06cc\u0631 (<code>if-none-match<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>\u0631\u06cc\u0627\u0633\u062a\u06cc \u0648\u0631\u0698\u0646<\/strong><\/td>\n<td>S3 \u0648\u0631\u0698\u0646 (\u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1)<\/td>\n<td>S3 \u0648\u0631\u0698\u0646 (\u0645\u06a9\u0645\u0644 \u062d\u0641\u0627\u0638\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Terraform \u06a9\u06d2 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0633\u06d2\u060c \u0641\u0639\u0627\u0644 \u0631\u0648\u06cc\u06c1 \u0627\u06cc\u06a9 \u06c1\u06cc \u06c1\u06d2. \u062a\u0627\u0644\u06d2 \u0627\u0633\u06cc \u0637\u0631\u062d \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0627\u06cc\u06a9 \u062a\u0627\u0644\u0627 \u0633\u06cc\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0638\u0627\u06c1\u0631 \u0634\u062f\u06c1 \u062a\u0627\u0644\u0627 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06a9\u0627 \u0688\u06be\u0627\u0646\u0686\u06c1 \u0628\u06be\u06cc \u0648\u06c1\u06cc \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u0631\u0642 \u0635\u0631\u0641 \u0627\u062a\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0688 \u06a9\u06d2 \u0646\u06cc\u0686\u06d2 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li><strong>\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 1.10.0 \u0627\u0648\u0631 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1<\/strong> \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u067e\u0646\u0627 \u0648\u0631\u0698\u0646 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba:<\/li>\n<\/ul>\n<pre><code class=\"language-shell\">terraform version\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0622\u0641\u06cc\u0634\u0644 \u0627\u067e \u06af\u0631\u06cc\u0688 \u06af\u0627\u0626\u06cc\u0688 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<ul>\n<li><strong>AWS CLI<\/strong> \u0627\u0646 \u0627\u0633\u0646\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u062c\u0646 \u06a9\u0648 S3 \u0628\u0627\u0644\u0679\u06cc \u0628\u0646\u0627\u0646\u06d2 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0627 \u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u06c1\u06d2\u06d4<\/li>\n<\/ul>\n<pre><code class=\"language-shell\">aws --version\naws sts get-caller-identity   # confirm you're authenticated\n<\/code><\/pre>\n<ul>\n<li>\n<p><strong>IAM \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba\u06d4<\/strong> \u062f\u0631\u062c \u0630\u06cc\u0644 S3 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><code>s3:CreateBucket<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:PutBucketVersioning<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:PutBucketEncryption<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:PutObjectLegalHold<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:PutObjectRetention<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:GetObject<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:PutObject<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:DeleteObject<\/code><\/p>\n<\/li>\n<li>\n<p><code>s3:ListBucket<\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u06a9\u06d2 \u0644\u06cc\u06d2 <strong>\u0646\u0642\u0644 \u0645\u06a9\u0627\u0646\u06cc \u06a9\u0627 \u0631\u0627\u0633\u062a\u06c1<\/strong>: \u0645\u0648\u062c\u0648\u062f\u06c1 Terraform \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u0627\u0648\u0631 S3 \u0628\u0627\u0644\u0679\u06cc\u0632 \u0627\u0648\u0631 DynamoDB \u0679\u06cc\u0628\u0644\u0632 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-part-1-fresh-setup-how-to-configure-s3-native-locking-from-scratch\">\u062d\u0635\u06c1 1: \u0634\u0631\u0648\u0639 \u0633\u06d2 \u0633\u06cc\u0679 \u0627\u067e - \u0634\u0631\u0648\u0639 \u0633\u06d2 S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u06cc\u0627 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0634\u0631\u0648\u0639 \u0633\u06d2 S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u0633 \u0633\u06cc\u06a9\u0634\u0646 \u06a9\u0648 \u0641\u0627\u0644\u0648 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-1-create-the-s3-bucket-with-versioning-and-encryption\">\u0645\u0631\u062d\u0644\u06c1 1: \u0648\u0631\u0698\u0646\u0646\u06af \u0627\u0648\u0631 \u062e\u0641\u06cc\u06c1 \u06a9\u0627\u0631\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 S3 \u0628\u0627\u0644\u0679\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0627\u0639\u062a\u0631\u0627\u0636 \u062a\u0627\u0644\u0627 <strong>\u0628\u0627\u0644\u0679\u06cc \u0628\u0646\u0627\u062a\u06d2 \u0648\u0642\u062a \u0627\u0633\u06d2 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/strong>. \u0627\u0633\u06d2 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0645\u0639\u06cc\u0627\u0631\u06cc \u06a9\u0646\u0633\u0648\u0644 \u06a9\u06d2 \u0628\u06c1\u0627\u0624 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0634\u0627\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4 AWS CLI \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u0644\u0679\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u062c\u0633 \u0645\u06cc\u06ba \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0641\u0639\u0627\u0644 \u06c1\u0648\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api create-bucket \n  --bucket your-project-terraform-state \n  --region us-east-1 \n  --object-lock-enabled-for-bucket\n<\/code><\/pre>\n<p><strong>\u0645\u06cc\u0645\u0648:<\/strong> \u062f\u0648\u0633\u0631\u06d2 \u0639\u0644\u0627\u0642\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 <code>us-east-1<\/code>\u062f\u0631\u062c \u0630\u06cc\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba: <code>--create-bucket-configuration<\/code> \u067e\u0631\u0686\u0645<\/p>\n<pre><code class=\"language-shell\">aws s3api create-bucket \n  --bucket your-project-terraform-state \n  --region eu-west-1 \n  --create-bucket-configuration LocationConstraint=eu-west-1 \n  --object-lock-enabled-for-bucket\n<\/code><\/pre>\n<p>\u0627\u0628 \u0627\u067e\u0646\u06cc \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0648\u0631\u0698\u0646\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0648\u0631\u0698\u0646\u0646\u06af \u0628\u06be\u06cc \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u060c \u0627\u06af\u0631 \u06a9\u0686\u06be \u063a\u0644\u0637 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u062a\u0648 Terraform \u06a9\u0648 \u067e\u0686\u06be\u0644\u06d2 \u0627\u0633\u0679\u06cc\u0679 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-versioning \n  --bucket your-project-terraform-state \n  --versioning-configuration Status=Enabled\n<\/code><\/pre>\n<p>\u0633\u0631\u0648\u0631 \u0633\u0627\u0626\u0688 \u0627\u0646\u06a9\u0631\u067e\u0634\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644\u0632 \u06a9\u0648 \u0622\u0631\u0627\u0645 \u0633\u06d2 \u0627\u0646\u06a9\u0631\u067e\u0679 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-encryption \n  --bucket your-project-terraform-state \n  --server-side-encryption-configuration '{\n    \"Rules\": [\n      {\n        \"ApplyServerSideEncryptionByDefault\": {\n          \"SSEAlgorithm\": \"AES256\"\n        },\n        \"BucketKeyEnabled\": true\n      }\n    ]\n  }'\n<\/code><\/pre>\n<p>\u0628\u0627\u0644\u0679\u06cc \u062a\u06a9 \u062a\u0645\u0627\u0645 \u0639\u0648\u0627\u0645\u06cc \u0631\u0633\u0627\u0626\u06cc \u06a9\u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u06d4 Terraform \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0648\u0633\u0627\u0626\u0644 \u06a9\u06cc IDs\u060c IP \u067e\u062a\u06d2\u060c \u0627\u0648\u0631 \u0645\u0645\u06a9\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u062d\u0633\u0627\u0633 \u0627\u0642\u062f\u0627\u0631 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u0639\u0648\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-public-access-block \n  --bucket your-project-terraform-state \n  --public-access-block-configuration \n    \"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true\"\n<\/code><\/pre>\n<p>\u0627\u067e\u0646\u06cc \u0628\u0627\u0644\u0679\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\"># Confirm Object Lock is enabled\naws s3api get-object-lock-configuration \n  --bucket your-project-terraform-state\n \n# Confirm versioning is enabled\naws s3api get-bucket-versioning \n  --bucket your-project-terraform-state\n \n# Confirm encryption is configured\naws s3api get-bucket-encryption \n  --bucket your-project-terraform-state\n<\/code><\/pre>\n<p>\u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9 \u0686\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062a\u0648\u0642\u0639 \u0622\u0624\u0679 \u067e\u0679:<\/p>\n<pre><code class=\"language-json\">{\n    \"ObjectLockConfiguration\": {\n        \"ObjectLockEnabled\": \"Enabled\"\n    }\n}\n<\/code><\/pre>\n<h3 id=\"heading-step-2-configure-the-terraform-backend-with-native-locking\">\u0645\u0631\u062d\u0644\u06c1 2: \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0622\u067e \u06a9\u06d2 Terraform \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba <code>backend.tf<\/code> \u0641\u0627\u0626\u0644:<\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket = \"your-project-terraform-state\"\n    key    = \"production\/terraform.tfstate\"\n    region = \"us-east-1\"\n \n    # Enable S3 native state locking\n    # Requires Terraform 1.10.0+ and a bucket with Object Lock enabled\n    use_lockfile = true\n \n    # Encryption at rest\n    encrypt = true\n  }\n}\n<\/code><\/pre>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u0633\u06d2 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u0627 \u0641\u0631\u0642 \u06c1\u06d2\u06d4 <code>use_lockfile = true<\/code> \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u06cc\u0627 \u0646\u0648\u0679\u0633 <strong>\u063a\u06cc\u0631 \u062d\u0627\u0636\u0631<\/strong>: \u0646\u06c1\u06cc\u06ba <code>dynamodb_table<\/code> \u062a\u0646\u0627\u0632\u0639\u06c1 \u06a9\u0648\u0626\u06cc DynamoDB \u0679\u06cc\u0628\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u062f\u0648\u0633\u0631\u06cc \u062e\u062f\u0645\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u067e\u0631\u0627\u0646\u06cc \u0627\u0648\u0631 \u0646\u0626\u06cc \u062a\u0631\u062a\u06cc\u0628\u0648\u06ba \u06a9\u0627 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0645\u0648\u0627\u0632\u0646\u06c1 \u06c1\u06d2:<\/p>\n<p><strong>\u067e\u0686\u06be\u0644\u06cc \u062a\u0631\u062a\u06cc\u0628 (S3 + DynamoDB):<\/strong><\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket         = \"your-project-terraform-state\"\n    key            = \"production\/terraform.tfstate\"\n    region         = \"us-east-1\"\n    encrypt        = true\n    dynamodb_table = \"terraform-state-lock\"   # this goes away\n  }\n}\n<\/code><\/pre>\n<p><strong>\u0646\u0626\u06cc \u062a\u0631\u062a\u06cc\u0628 (S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af):<\/strong><\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket       = \"your-project-terraform-state\"\n    key          = \"production\/terraform.tfstate\"\n    region       = \"us-east-1\"\n    encrypt      = true\n    use_lockfile = true   # this replaces dynamodb_table\n  }\n}\n<\/code><\/pre>\n<h3 id=\"heading-step-3-initialize-and-verify\">\u0645\u0631\u062d\u0644\u06c1 3: \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba \u0627\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0686\u0644\u0627\u0626\u06cc\u06ba <code>terraform init<\/code> \u067e\u0633\u062f\u06cc\u062f \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-shell\">terraform init\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631:<\/p>\n<pre><code class=\"language-plaintext\">Initializing the backend...\n \nSuccessfully configured the backend \"s3\"! Terraform will automatically\nuse this backend unless the backend configuration changes.\n \nInitializing provider plugins...\n \nTerraform has been successfully initialized!\n<\/code><\/pre>\n<p>\u0627\u067e\u0646\u06d2 \u0645\u0646\u0635\u0648\u0628\u06d2 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2 \u06a9\u06c1 \u06c1\u0631 \u0686\u06cc\u0632 \u0634\u0631\u0648\u0639 \u0633\u06d2 \u0622\u062e\u0631 \u062a\u06a9 \u0679\u06be\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">terraform plan\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0644\u0627\u06a9 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0635\u0631 \u0648\u0642\u0641\u06c1 \u06c1\u0648\u06af\u0627 \u062c\u0628 \u06a9\u06c1 Terraform \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u0644\u0627\u0646 \u06a9\u06d2 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u06d2 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u062a\u0627\u0644\u0627 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0627\u067e\u0646\u06cc S3 \u0628\u0627\u0644\u0679\u06cc \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0628\u06be\u06cc \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>.tflock<\/code> \u0641\u0627\u0626\u0644 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u0633\u0679\u06cc\u0679\u0633 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0639\u0627\u0631\u0636\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u063a\u0627\u0626\u0628 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-part-2-migration-how-to-move-from-s3-dynamodb-to-s3-native-locking\">\u062d\u0635\u06c1 2: \u06c1\u062c\u0631\u062a - S3 + DynamoDB \u0633\u06d2 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u062c\u0627\u0626\u06cc\u06ba<\/h2>\n<p>\u0627\u0633 \u0633\u06cc\u06a9\u0634\u0646 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u06c1\u06d2: <strong>\u0645\u0648\u062c\u0648\u062f\u06c1 Terraform \u062a\u0631\u062a\u06cc\u0628\u0627\u062a<\/strong> \u0645\u06cc\u06ba \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 S3 \u0628\u0627\u0644\u0679\u06cc\u0627\u06ba \u0627\u0648\u0631 DynamoDB \u0679\u06cc\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u0648\u06ba \u0627\u0648\u0631 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<p><strong>\u0627\u06c1\u0645:<\/strong> \u06c1\u062c\u0631\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u06cc\u0646\u0679\u06cc\u0646\u0646\u0633 \u0648\u0646\u0688\u0648 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u06cc\u0627 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u0645\u062f\u062a \u062c\u0633 \u0645\u06cc\u06ba Terraform \u062c\u0627\u0628\u0632 \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u0648\u062a\u06cc\u06ba\u06d4 \u06c1\u0645 \u0627\u067e\u0646\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0644\u0641\u0638\u0648\u06ba \u0645\u06cc\u06ba <strong>\u0679\u06cc\u0645 \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0627\u0631\u06a9\u0627\u0646 \u0627\u0648\u0631 CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u0648\u06ba \u06a9\u0648 \u0686\u0644\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9 \u062f\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/strong> <code>terraform plan<\/code> <strong>\u06cc\u0627<\/strong> <code>terraform apply<\/code> <strong>\u06c1\u062c\u0631\u062a \u06a9\u0631\u0646\u0627<\/strong>. \u0646\u0642\u0644 \u0645\u06a9\u0627\u0646\u06cc \u0645\u06cc\u06ba 10 \u0645\u0646\u0679 \u0633\u06d2 \u0628\u06be\u06cc \u06a9\u0645 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-step-1-verify-your-current-setup\">\u0645\u0631\u062d\u0644\u06c1 1: \u0627\u067e\u0646\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u0648\u0626\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u067e\u0646\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\"># Confirm your state file is in S3\naws s3 ls s3:\/\/your-existing-bucket\/path\/to\/terraform.tfstate\n \n# Confirm the DynamoDB table exists\naws dynamodb describe-table \n  --table-name your-dynamodb-lock-table \n  --query 'Table.TableStatus'\n<\/code><\/pre>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0627\u0644\u062a \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 <code>backend.tf<\/code> \u062f\u0631\u0633\u062a \u0627\u0642\u062f\u0627\u0631 \u06a9\u0648 \u0646\u0648\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\"># Your current backend.tf - note these values before changing anything\nterraform {\n  backend \"s3\" {\n    bucket         = \"your-existing-bucket\"       # note this\n    key            = \"path\/to\/terraform.tfstate\"   # note this\n    region         = \"us-east-1\"                   # note this\n    encrypt        = true\n    dynamodb_table = \"your-dynamodb-lock-table\"    # this will be removed\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 \u062d\u0627\u0644\u062a \u0635\u0627\u0641 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0648\u0626\u06cc \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0632\u06cc\u0631 \u0627\u0644\u062a\u0648\u0627\u0621 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba \u0627\u06cc\u06a9 \u062d\u062a\u0645\u06cc \u0645\u0646\u0635\u0648\u0628\u06c1 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">terraform plan\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u067e\u0644\u0627\u0646 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u0646\u0638\u0631 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0646\u0627 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-step-2-enable-object-lock-on-the-existing-s3-bucket\">\u0645\u0631\u062d\u0644\u06c1 2: \u0627\u067e\u0646\u06cc \u0645\u0648\u062c\u0648\u062f\u06c1 S3 \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06cc\u06c1 \u06c1\u062c\u0631\u062a \u06a9\u0627 \u0633\u0628 \u0633\u06d2 \u0627\u06c1\u0645 \u0645\u0631\u062d\u0644\u06c1 \u06c1\u06d2\u06d4 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u067e \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0648\u06c1 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06c1\u06cc\u06ba \u062c\u0648 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0627\u06c1\u0645\u060c AWS \u0633\u067e\u0648\u0631\u0679 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06cc\u0627 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a API \u06a9\u0627\u0644\u0632 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0645\u0639\u06cc\u0627\u0631\u06cc \u06a9\u0646\u0633\u0648\u0644 UI \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 AWS \u0646\u06d2 \u0633\u0631\u06a9\u0627\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0645\u0627\u0626\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u0631\u0627\u0633\u062a\u06d2 \u06a9\u0648 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0631\u062c \u0630\u06cc\u0644 AWS CLI \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0648 \u0686\u0644\u0627 \u06a9\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba: <strong>\u0645\u0648\u062c\u0648\u062f\u06c1<\/strong> \u0628\u0627\u0644\u0679\u06cc:<\/p>\n<pre><code class=\"language-bash\">aws s3api put-object-lock-configuration \n  --bucket your-existing-bucket \n  --object-lock-configuration '{\"ObjectLockEnabled\": \"Enabled\"}'\n<\/code><\/pre>\n<p><strong>\u0645\u06cc\u0645\u0648:<\/strong> \u06cc\u06c1 \u06a9\u0645\u0627\u0646\u0688 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0686\u0627\u0644\u0648 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <strong>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06af\u0648\u0631\u0646\u0646\u0633 \u0645\u0648\u0688<\/strong>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u062a\u0645\u0627\u0645 \u0627\u0634\u06cc\u0627\u0621 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0631\u06cc\u0679\u06cc\u0646\u0634\u0646 \u067e\u06cc\u0631\u06cc\u0688 \u0633\u06cc\u0679 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0644\u0627\u06a9\u0646\u06af \u0641\u06cc\u0686\u0631 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627\u06d4 \u06cc\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 Terraform \u06a9\u06cc \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u0645\u0633\u062a\u0642\u0644 \u0627\u0634\u06cc\u0627\u0621 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2 \u0627\u0648\u0631 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0635\u0644\u0627\u062d\u06cc\u062a\u06d4<\/p>\n<p>\u0627\u0628 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api get-object-lock-configuration \n  --bucket your-existing-bucket\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631:<\/p>\n<pre><code class=\"language-json\">{\n    \"ObjectLockConfiguration\": {\n        \"ObjectLockEnabled\": \"Enabled\"\n    }\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u06be\u06cc \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0648\u0631\u0698\u0646\u0646\u06af \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0641\u0639\u0627\u0644 \u06c1\u06d2 (\u0627\u06af\u0631 \u0622\u067e \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0633\u06cc\u0679 \u0627\u067e \u0686\u0644\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0641\u0639\u0627\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2)\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api get-bucket-versioning \n  --bucket your-existing-bucket\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631:<\/p>\n<pre><code class=\"language-json\">{\n    \"Status\": \"Enabled\"\n}\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0648\u0631\u0698\u0646\u0646\u06af \u0641\u0639\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u0633\u06d2 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-versioning \n  --bucket your-existing-bucket \n  --versioning-configuration Status=Enabled\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/05\/1778253259_901_\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645-\u0633\u06d2-S3-\u0645\u0642\u0627\u0645\u06cc-\u0631\u06cc\u0627\u0633\u062a-\u0644\u0627\u06a9\u0646\u06af-\u0645\u06cc\u06ba-\u06a9\u06cc\u0633\u06d2-\u0645\u0646\u062a\u0642\u0644-\u06a9\u06cc\u0627.png\" alt=\"AWS CLI \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 S3 \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9 \u0627\u06cc\u06a9\u0679\u06cc\u0648\u06cc\u0634\u0646 \u062f\u06a9\u06be\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<h3 id=\"heading-step-3-update-the-terraform-backend-configuration\">\u0645\u0631\u062d\u0644\u06c1 3: Terraform \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>backend.tf<\/code> \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 <code>dynamodb_table<\/code> \u062f\u0644\u0627\u0626\u0644 \u0627\u0648\u0631 \u0627\u0636\u0627\u0641\u06d2 <code>use_lockfile = true<\/code>:<\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket = \"your-existing-bucket\"\n    key    = \"path\/to\/terraform.tfstate\"\n    region = \"us-east-1\"\n    encrypt = true\n \n    # Add this:\n    use_lockfile = true\n \n    # Remove this line entirely:\n    # dynamodb_table = \"your-dynamodb-lock-table\"\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u067e \u0688\u06cc\u0679 <code>backend.tf<\/code> \u06cc\u06c1 \u0627\u0633 \u0637\u0631\u062d \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket       = \"your-existing-bucket\"\n    key          = \"path\/to\/terraform.tfstate\"\n    region       = \"us-east-1\"\n    encrypt      = true\n    use_lockfile = true\n  }\n}\n<\/code><\/pre>\n<h3 id=\"heading-step-4-reinitialize-terraform\">\u0645\u0631\u062d\u0644\u06c1 4: \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0686\u0644\u0627\u0626\u06cc\u06ba <code>terraform init<\/code> \u0627\u0648\u0631 <code>-reconfigure<\/code> \u067e\u0631\u0686\u0645 \u06cc\u06c1 \u062c\u06be\u0646\u0688\u0627 Terraform \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0631\u06cc\u0627\u0633\u062a \u06a9\u06cc \u06a9\u0627\u067e\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0631\u06cc\u0627\u0633\u062a \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u0627\u0633\u06cc \u0628\u0627\u0644\u0679\u06cc \u0645\u06cc\u06ba \u06c1\u06d2)\u06d4<\/p>\n<pre><code class=\"language-shell\">terraform init -reconfigure\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631:<\/p>\n<pre><code class=\"language-plaintext\">Initializing the backend...\n \nSuccessfully configured the backend \"s3\"! Terraform will automatically\nuse this backend unless the backend configuration changes.\n \nInitializing provider plugins...\n- Reusing previous version of hashicorp\/aws from the dependency lock file\n \nTerraform has been successfully initialized!\n<\/code><\/pre>\n<p><strong>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u06cc\u06c1\u0627\u06ba \u06a9\u0648\u0626\u06cc \u063a\u0644\u0637\u06cc \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2:<\/strong> \u0633\u0628 \u0633\u06d2 \u0639\u0627\u0645 \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0641\u0639\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0631\u062d\u0644\u06c1 2 \u0645\u06cc\u06ba \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-5-verify-the-migration\">\u0645\u0631\u062d\u0644\u06c1 5: \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06cc\u06c1 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u067e\u0646\u0627 \u067e\u0644\u0627\u0646 \u0686\u0644\u0627\u0626\u06cc\u06ba \u06a9\u06c1 Terraform \u0622\u067e \u06a9\u06cc \u0646\u0626\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">terraform plan\n<\/code><\/pre>\n<p>\u0645\u0646\u0635\u0648\u0628\u06c1 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<ul>\n<li>\n<p>\u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0645\u06a9\u0645\u0644<\/p>\n<\/li>\n<li>\n<p>\u0648\u06c1\u06cc \u0646\u062a\u0627\u0626\u062c \u062f\u06a9\u06be\u0627\u0626\u06cc\u06ba \u062c\u0648 \u0622\u067e \u0646\u06d2 \u0645\u0631\u062d\u0644\u06c1 1 \u0645\u06cc\u06ba \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u062a\u06be\u0627 (\u06a9\u0648\u0626\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u06cc\u0627 \u067e\u06c1\u0644\u06d2 \u062c\u06cc\u0633\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u0646\u06c1\u06cc\u06ba)<\/p>\n<\/li>\n<li>\n<p>\u0627\u067e\u0646\u06d2 \u0622\u0624\u0679 \u067e\u0679 \u0645\u06cc\u06ba \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc DynamoDB \u06a9\u0627 \u0630\u06a9\u0631 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0644\u0627\u06a9 \u062f\u0631\u0627\u0635\u0644 DynamoDB \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 S3 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u062f\u0648\u0633\u0631\u0627 \u0679\u0631\u0645\u06cc\u0646\u0644 \u06a9\u06be\u0648\u0644\u06cc\u06ba \u0627\u0648\u0631 \u067e\u06c1\u0644\u0627 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0627\u067e\u0646\u0627 \u067e\u0644\u0627\u0646 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u06a9\u0648 \u0627\u06cc\u06a9 \u0644\u0627\u06a9\u0646\u06af \u0627\u06cc\u0631\u0631 \u0622\u0624\u0679 \u067e\u0679 \u0646\u0638\u0631 \u0622\u0626\u06d2 \u06af\u0627 \u062c\u0633 \u0645\u06cc\u06ba S3 \u06a9\u0627 \u0630\u06a9\u0631 \u06c1\u0648\u06af\u0627 \u0646\u06c1 \u06a9\u06c1 DynamoDB \u06a9\u0627\u06d4<\/p>\n<pre><code class=\"language-plaintext\">\u2577\n\u2502 Error: Error acquiring the state lock\n\u2502\n\u2502Error message: operation error S3: PutObject, https response       error StatusCode: 409,\n\u2502 RequestID: ..., api error Conflict: Object lock already exists for this key.\n\u2502\n\u2502 Lock Info:\n\u2502   ID:        a1b2c3d4-e5f6-7890-abcd-ef1234567890\n\u2502   Path:      your-existing-bucket\/path\/to\/terraform.tfstate.tflock\n\u2502   Operation: OperationTypePlan\n\u2502   Who:       user@hostname\n\u2502   Version:   1.10.0\n\u2502   Created:   2026-05-06 14:22:01 UTC\n\u2502   Info:\n\u2575\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>Path<\/code> \u0641\u06cc\u0644\u0688 \u0634\u0648 <code>.tfstate.tflock<\/code>\u06cc\u06c1 S3 \u0628\u0627\u0644\u0679\u06cc \u0645\u06cc\u06ba \u0641\u0627\u0626\u0644 \u06c1\u06d2\u060c DynamoDB \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0646\u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0627\u0628 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 S3 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0633\u0646\u0628\u06be\u0627\u0644 \u0644\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/05\/1778253259_349_\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645-\u0633\u06d2-S3-\u0645\u0642\u0627\u0645\u06cc-\u0631\u06cc\u0627\u0633\u062a-\u0644\u0627\u06a9\u0646\u06af-\u0645\u06cc\u06ba-\u06a9\u06cc\u0633\u06d2-\u0645\u0646\u062a\u0642\u0644-\u06a9\u06cc\u0627.png\" alt=\"\u062f\u0648 \u0679\u0631\u0645\u06cc\u0646\u0644\u0632 \u062c\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u067e\u0644\u0627\u0646 \u06a9\u0645\u0627\u0646\u0688\u0632 \u062f\u06a9\u06be\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062f\u0648\u0633\u0631\u0627 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0644\u0627\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u063a\u0644\u0637\u06cc \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0627\u062b\u0631 \u0645\u06cc\u06ba \u06c1\u06d2\u06d4\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<h3 id=\"heading-step-6-clean-up-the-dynamodb-table\">\u0645\u0631\u062d\u0644\u06c1 6: \u0627\u067e\u0646\u06d2 DynamoDB \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0622\u067e \u0646\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631 \u0644\u06cc \u06a9\u06c1 \u0645\u0646\u062a\u0642\u0644\u06cc \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0646\u06d2 \u0627\u0633\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0686\u0644\u0627\u06cc\u0627 \u06c1\u06d2\u06d4 <code>plan<\/code> \u0627\u0648\u0631 <code>apply<\/code> \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0622\u067e \u0646\u0626\u06d2 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u0633\u06d2 \u06af\u0632\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0622\u067e \u0627\u067e\u0646\u06d2 DynamoDB \u0679\u06cc\u0628\u0644\u0632 \u06a9\u0648 \u06c1\u0679\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0627\u067e\u0646\u06d2 DynamoDB \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 24 \u0633\u06d2 48 \u06af\u06be\u0646\u0679\u06d2 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong> \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06c1\u06d2 \u06cc\u0627 \u0622\u067e \u06a9\u06d2 \u0645\u062a\u0639\u062f\u062f \u0679\u06cc\u0645 \u0645\u0645\u0628\u0631\u0627\u0646 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u0648 \u067e\u06a9\u0691\u0646\u06d2 \u06a9\u0627 \u0648\u0642\u062a \u0645\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0646\u0626\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e \u0688\u06cc\u0679 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0626\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u0622\u067e \u062a\u06cc\u0627\u0631 \u06c1\u0648\u06ba\u060c DynamoDB \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws dynamodb delete-table \n  --table-name your-dynamodb-lock-table\n<\/code><\/pre>\n<p>\u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws dynamodb describe-table \n  --table-name your-dynamodb-lock-table\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631:<\/p>\n<pre><code class=\"language-plaintext\">An error occurred (ResourceNotFoundException) when calling the DescribeTable operation:\nRequested resource not found\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0631\u0627\u0628\u06cc \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0679\u06cc\u0628\u0644 \u063a\u0627\u0626\u0628 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u06c1\u062c\u0631\u062a \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u0686\u06a9\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u0627\u067e\u0646\u06d2 DynamoDB \u0679\u06cc\u0628\u0644 \u06a9\u0648 Terraform (\u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u067e\u06cc\u0679\u0631\u0646) \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 Terraform \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0633\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u0648 \u06c1\u0679\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba: <code>terraform apply<\/code> \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a CLI \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 Terraform \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u0633\u06d2 \u0635\u0627\u0641 \u0631\u06a9\u06be\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-hcl\"># Remove this entire block from your Terraform configuration:\nresource \"aws_dynamodb_table\" \"terraform_state_lock\" {\n  name         = \"terraform-state-lock\"\n  billing_mode = \"PAY_PER_REQUEST\"\n  hash_key     = \"LockID\"\n \n  attribute {\n    name = \"LockID\"\n    type = \"S\"\n  }\n}\n<\/code><\/pre>\n<p>\u0628\u0644\u0627\u06a9 \u06a9\u0648 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0686\u0644\u0627\u0626\u06cc\u06ba:<\/p>\n<pre><code class=\"language-bash\">terraform apply\n<\/code><\/pre>\n<p>Terraform \u067e\u062a\u06c1 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 DynamoDB \u0679\u06cc\u0628\u0644 \u0631\u06cc\u0633\u0648\u0631\u0633 \u06a9\u0648 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0633\u06d2 \u06c1\u0679\u0627 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-verify-that-locking-is-working\">\u06cc\u06c1 \u06a9\u06cc\u0633\u06d2 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0644\u0627\u06a9 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0633\u06cc\u0679 \u0627\u067e \u06cc\u0627 \u0645\u0646\u062a\u0642\u0644\u06cc \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u0633 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0622\u0632\u0627\u062f\u0627\u0646\u06c1 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u062a\u0627\u0644\u06d2 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-method-1-observe-the-lock-file-during-an-operation\">\u0637\u0631\u06cc\u0642\u06c1 1: \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u06cc\u06a9 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0633\u06d2 \u0648\u0633\u0627\u0626\u0644 \u0633\u06d2 \u0628\u06be\u0631\u067e\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0637\u0648\u06cc\u0644 \u0645\u062f\u062a\u06cc \u0645\u0646\u0635\u0648\u0628\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">terraform plan\n<\/code><\/pre>\n<p>\u062c\u0628 \u06cc\u06c1 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u0648\u060c \u062f\u0648\u0633\u0631\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0645\u06cc\u06ba S3 \u067e\u0631 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3 ls s3:\/\/your-bucket\/path\/to\/ | grep tflock\n<\/code><\/pre>\n<p>\u0622\u067e \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">2026-05-06 14:22:01        512 terraform.tfstate.tflock\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062c\u0628 \u0622\u067e \u06a9\u0627 \u0645\u0646\u0635\u0648\u0628\u06c1 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u062c\u0627\u0626\u06d2 \u062a\u0648\u060c \u0648\u06c1\u06cc \u06a9\u0645\u0627\u0646\u0688 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>.tflock<\/code> \u0641\u0627\u0626\u0644 \u063a\u0627\u0626\u0628 \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<h3 id=\"heading-method-2-read-the-lock-file-contents\">\u0637\u0631\u06cc\u0642\u06c1 2: \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u0648 \u067e\u0691\u06be\u06cc\u06ba<\/h3>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u0627 \u0645\u0646\u0635\u0648\u0628\u06c1 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u0648\u060c \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0691\u06be\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3 cp \n  s3:\/\/your-bucket\/path\/to\/terraform.tfstate.tflock \n  \/tmp\/current.lock && cat \/tmp\/current.lock\n<\/code><\/pre>\n<p>\u0645\u062a\u0648\u0642\u0639 \u0622\u0624\u0679 \u067e\u0679 (\u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u06c1\u0644\u06cc\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u06cc\u0627 \u06af\u06cc\u0627):<\/p>\n<pre><code class=\"language-json\">{\n  \"ID\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n  \"Operation\": \"OperationTypePlan\",\n  \"Info\": \"\",\n  \"Who\": \"tolani@dev-machine\",\n  \"Version\": \"1.10.0\",\n  \"Created\": \"2026-05-06T14:22:01.123456789Z\",\n  \"Path\": \"your-bucket\/path\/to\/terraform.tfstate\"\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u06c1\u06cc \u062a\u0627\u0644\u0627 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u06c1\u06d2 \u062c\u0648 Terraform \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u062a\u0627\u0644\u0627 \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0628 \u06cc\u06c1 DynamoDB \u0645\u06cc\u06ba \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u0628\u0644\u06a9\u06c1 S3 \u0645\u06cc\u06ba JSON \u0641\u0627\u0626\u0644 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-handle-a-stuck-lock\">\u067e\u06be\u0646\u0633\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0627\u0644\u06d2 \u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0646\u0645\u0679\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>DynamoDB \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0645\u06cc\u06ba\u060c \u067e\u06be\u0646\u0633\u06d2 \u06c1\u0648\u0626\u06d2 \u0644\u0627\u06a9 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 DynamoDB \u0679\u06cc\u0628\u0644 \u0633\u06d2 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u0627\u06d4 S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c <code>.tflock<\/code> S3 \u0645\u06cc\u06ba \u0641\u0627\u0626\u0644\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0635\u0648\u0631\u062a\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0627\u0644\u0627 \u062c\u0627\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <code>terraform apply<\/code> \u06cc\u0627 <code>plan<\/code> \u0686\u0644\u062a\u06d2 \u0686\u0644\u062a\u06d2 \u0639\u0645\u0644 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u06a9\u0631\u06cc\u0634 \u06c1\u0648 \u06af\u06cc\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u0628\u0646\u062f\u0634 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u063a\u06cc\u0631 \u0645\u0642\u0641\u0644 \u06a9\u0631\u0646\u0627 \u0645\u06a9\u0645\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0627\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u06cc\u06c1 \u0686\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0622\u067e \u06a9\u0627 \u0644\u0627\u06a9 \u0644\u0627\u06a9 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-shell\">aws s3 ls s3:\/\/your-bucket\/path\/to\/ | grep tflock\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 <code>.tflock<\/code> \u0627\u06af\u0631 \u0641\u0627\u0626\u0644 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u06a9\u0648\u0626\u06cc Terraform \u062c\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0645\u0642\u0641\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0627\u0644\u0627 \u067e\u0691\u06be \u06a9\u0631 \u0622\u067e \u06cc\u06c1 \u062c\u0627\u0646 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u0633 \u0646\u06d2 \u0631\u06a9\u06be\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3 cp \n  s3:\/\/your-bucket\/path\/to\/terraform.tfstate.tflock \n  \/tmp\/stuck.lock && cat \/tmp\/stuck.lock\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u06c1 \u06c1\u06d2 \u062c\u0648 (<code>Who<\/code> \u0641\u06cc\u0644\u0688) \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06d2 \u0631\u06c1\u0627 \u062a\u06be\u0627\u060c \u06cc\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u06a9\u0627\u0645 \u062a\u06be\u0627 (<code>Operation<\/code> \u0641\u06cc\u0644\u0688)\u060c \u062d\u0635\u0648\u0644 \u06a9\u0627 \u0648\u0642\u062a (<code>Created<\/code> \u0641\u06cc\u0644\u0688)\u06d4<\/p>\n<p>\u0622\u067e Terraform \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06a9\u06d2 \u0632\u0628\u0631\u062f\u0633\u062a\u06cc \u0627\u0646\u0644\u0627\u06a9 \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-shell\">terraform force-unlock LOCK-ID\n<\/code><\/pre>\n<p>\u062a\u0628\u062f\u06cc\u0644\u06cc <code>LOCK-ID<\/code> \u0627\u0648\u0631 <code>ID<\/code> \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u06cc \u0642\u062f\u0631\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-shell\">terraform force-unlock a1b2c3d4-e5f6-7890-abcd-ef1234567890\n<\/code><\/pre>\n<p>Terraform \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">Do you really want to force-unlock?\n  Terraform will remove the lock on the remote state.\n  This will allow local Terraform commands to modify this state, even though it\n  may be still be in use. Only 'yes' will be accepted to confirm.\n \n  Enter a value: yes\n \nTerraform state has been successfully unlocked!\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0645\u062a\u0628\u0627\u062f\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a CLI \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062d\u0630\u0641 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u0627\u06af\u0631 <code>terraform force-unlock<\/code> \u0627\u06af\u0631 \u06cc\u06c1 \u06a9\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0622\u067e CI \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062c\u06c1\u0627\u06ba Terraform \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2)\u060c \u062e\u0648\u062f \u0644\u0627\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3 rm s3:\/\/your-bucket\/path\/to\/terraform.tfstate.tflock\n<\/code><\/pre>\n<p><strong>\u0644\u0627\u06a9 \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba \u062c\u0628 \u0622\u067e \u06a9\u0648 \u06cc\u0642\u06cc\u0646 \u06c1\u0648 \u06a9\u06c1 \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u06a9\u0648\u0626\u06cc Terraform \u062c\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4<\/strong> \u0686\u0644\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u0627\u0633\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0686\u0627\u0644\u0648 \u06a9\u06cc\u06d2 \u06af\u0626\u06d2 \u0644\u0627\u06a9 \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062f\u0648\u0633\u0631\u0627 \u06c1\u0645 \u0622\u06c1\u0646\u06af \u06a9\u0627\u0645 \u0634\u0631\u0648\u0639 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0648\u06c1\u06cc \u06c1\u06d2 \u062c\u0648 \u0631\u06cc\u0633 \u06a9\u0646\u0688\u06cc\u0634\u0646 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-rollback-plan-if-something-goes-wrong\">\u0631\u0648\u0644 \u0628\u06cc\u06a9 \u067e\u0644\u0627\u0646: \u0627\u06af\u0631 \u06a9\u0686\u06be \u063a\u0644\u0637 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u0628\u0639\u062f \u0645\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0633\u0627\u0645\u0646\u0627 \u06a9\u0631\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0627\u0646 \u0645\u0631\u0627\u062d\u0644 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631 \u06a9\u06d2 \u0627\u067e\u0646\u06d2 S3 + DynamoDB \u0633\u06cc\u0679 \u0627\u067e \u067e\u0631 \u0648\u0627\u067e\u0633 \u062c\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 1: \u062a\u0645\u0627\u0645 Terraform \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9 \u062f\u06cc\u06ba\u06d4<\/strong> \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u0627\u0648\u0631 CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 2: DynamoDB \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/strong> \u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u062d\u0630\u0641 \u06a9\u0631 \u0686\u06a9\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-shell\">aws dynamodb create-table \n  --table-name terraform-state-lock \n  --attribute-definitions AttributeName=LockID,AttributeType=S \n  --key-schema AttributeName=LockID,KeyType=HASH \n  --billing-mode PAY_PER_REQUEST\n<\/code><\/pre>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 3: \u0648\u0627\u067e\u0633 \u062c\u0627\u0626\u06cc\u06ba\u06d4<\/strong> <code>backend.tf<\/code>    \u067e\u0686\u06be\u0644\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06d2 \u0633\u0627\u062a\u06be:<\/p>\n<pre><code class=\"language-hcl\">terraform {\n  backend \"s3\" {\n    bucket         = \"your-existing-bucket\"\n    key            = \"path\/to\/terraform.tfstate\"\n    region         = \"us-east-1\"\n    encrypt        = true\n    dynamodb_table = \"terraform-state-lock\"   # restored\n    # Remove: use_lockfile = true\n  }\n}\n<\/code><\/pre>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 4: \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-shell\">terraform init -reconfigure\n<\/code><\/pre>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 5: \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba:<\/strong><\/p>\n<pre><code class=\"language-shell\">terraform plan\n<\/code><\/pre>\n<p>\u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0631\u0648\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u0648\u0626\u06cc \u0688\u06cc\u0679\u0627 \u0636\u0627\u0626\u0639 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u062a\u0628\u062f\u06cc\u0644\u06cc \u06c1\u06d2 \u062a\u0627\u0644\u0627 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 Terraform \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u06cc\u0645\u0648:<\/strong> S3 \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0631\u0648\u0644 \u0628\u06cc\u06a9\u0633 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0627\u0648\u0631 DynamoDB \u0644\u0627\u06a9\u0646\u06af \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0631\u06c1 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0628\u0627\u0644\u0679\u06cc \u0645\u06cc\u06ba \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u0641\u0639\u0627\u0644\u06cc\u062a \u06a9\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>dynamodb_table<\/code> \u0622\u067e \u06a9\u06cc \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0645\u06cc\u06ba\u060c \u0622\u067e Terraform \u06a9\u0648 DynamoDB \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06c1\u062f\u0627\u06cc\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0633 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0628\u0627\u0644\u0679\u06cc \u067e\u0631 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0644\u0627\u06a9\u0646\u06af \u0641\u0639\u0627\u0644 \u06c1\u06d2 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-security-best-practices-for-your-state-bucket\">\u0631\u06cc\u0627\u0633\u062a\u06cc \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06d2<\/h2>\n<p>S3 \u0645\u0642\u0627\u0645\u06cc \u062a\u0627\u0644\u06d2 \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06c1\u0648\u0646\u0627 \u0622\u067e \u06a9\u06cc \u0631\u06cc\u0627\u0633\u062a \u06a9\u06cc \u0628\u0627\u0644\u0679\u06cc \u06a9\u06cc \u0645\u062c\u0645\u0648\u0639\u06cc \u062d\u0641\u0627\u0638\u062a\u06cc \u062a\u0631\u062a\u06cc\u0628 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u0627 \u0645\u0648\u0642\u0639 \u06c1\u06d2\u06d4 \u06cc\u06c1\u0627\u06ba \u06a9\u0686\u06be \u0637\u0631\u0632 \u0639\u0645\u0644 \u06c1\u06cc\u06ba \u062c\u0646 \u067e\u0631 \u06c1\u0631 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0627\u0633\u0679\u06cc\u0679 \u0628\u0627\u0644\u0679\u06cc \u06a9\u0648 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<h3 id=\"heading-enable-versioning-required\">\u0648\u0631\u0698\u0646\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u0636\u0631\u0648\u0631\u06cc)<\/h3>\n<p>S3 \u0645\u0642\u0627\u0645\u06cc \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0631\u0698\u0646 \u0628\u0646\u0627\u0646\u0627 \u0627\u06cc\u06a9 \u0633\u062e\u062a \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0627\u0633\u0679\u06cc\u0679 \u0641\u0627\u0626\u0644 \u063a\u0644\u0637\u06cc \u0633\u06d2 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06cc\u0627 \u062e\u0631\u0627\u0628 \u06c1\u0648 \u06af\u0626\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u067e\u0686\u06be\u0644\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u0628\u062d\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-versioning \n  --bucket your-state-bucket \n  --versioning-configuration Status=Enabled\n<\/code><\/pre>\n<h3 id=\"heading-block-all-public-access-non-negotiable\">\u062a\u0645\u0627\u0645 \u0639\u0648\u0627\u0645\u06cc \u0631\u0633\u0627\u0626\u06cc \u06a9\u0648 \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba (\u063a\u06cc\u0631 \u06af\u0641\u062a \u0648 \u0634\u0646\u06cc\u062f)<\/h3>\n<p>\u0631\u06cc\u0627\u0633\u062a\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0631\u06cc\u0633\u0648\u0631\u0633 ARNs\u060c IP \u0627\u06cc\u0688\u0631\u06cc\u0633\u0632 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06cc\u06c1 Terraform \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u0633\u06d2 \u06af\u0632\u0631\u06cc \u06c1\u0648\u0626\u06cc \u0627\u06c1\u0645 \u0627\u0642\u062f\u0627\u0631 \u067e\u0631 \u0645\u0634\u062a\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0639\u0648\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u0631\u0633\u0627\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-public-access-block \n  --bucket your-state-bucket \n  --public-access-block-configuration \n    \"BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true\"\n<\/code><\/pre>\n<h3 id=\"heading-enable-server-side-encryption\">\u0633\u0631\u0648\u0631 \u0633\u0627\u0626\u0688 \u0627\u0646\u06a9\u0631\u067e\u0634\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0628\u0627\u0642\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u0646\u06a9\u0631\u067e\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 AES256 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0648 KMS \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-encryption \n  --bucket your-state-bucket \n  --server-side-encryption-configuration '{\n    \"Rules\": [\n      {\n        \"ApplyServerSideEncryptionByDefault\": {\n          \"SSEAlgorithm\": \"aws:kms\",\n          \"KMSMasterKeyID\": \"arn:aws:kms:us-east-1:123456789012:key\/your-kms-key-id\"\n        },\n        \"BucketKeyEnabled\": true\n      }\n    ]\n  }'\n<\/code><\/pre>\n<h3 id=\"heading-apply-least-privilege-iam-permissions\">\u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0645\u0631\u0627\u0639\u0627\u062a \u06cc\u0627\u0641\u062a\u06c1 IAM \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0631\u06cc\u0627\u0633\u062a\u06cc \u0628\u0627\u0644\u0679\u06cc \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 Terraform \u062c\u0648 \u06a9\u0631\u062f\u0627\u0631 \u06cc\u0627 \u0635\u0627\u0631\u0641 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u06d2 \u067e\u0627\u0633 \u0635\u0631\u0641 \u0636\u0631\u0648\u0631\u06cc \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4 S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 IAM \u067e\u0627\u0644\u06cc\u0633\u06cc \u06c1\u06d2:<\/p>\n<pre><code class=\"language-json\">{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Sid\": \"TerraformStateAccess\",\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"s3:ListBucket\",\n        \"s3:GetObject\",\n        \"s3:PutObject\",\n        \"s3:DeleteObject\"\n      ],\n      \"Resource\": [\n        \"arn:aws:s3:::your-state-bucket\",\n        \"arn:aws:s3:::your-state-bucket\/*\"\n      ]\n    },\n    {\n      \"Sid\": \"TerraformStateLocking\",\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"s3:GetObjectLegalHold\",\n        \"s3:PutObjectLegalHold\",\n        \"s3:GetObjectRetention\",\n        \"s3:PutObjectRetention\"\n      ],\n      \"Resource\": \"arn:aws:s3:::your-state-bucket\/*.tflock\"\n    }\n  ]\n}\n<\/code><\/pre>\n<p>\u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 \u06a9\u06cc\u0627 \u063a\u0627\u0626\u0628 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 DynamoDB \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u0637\u0631\u06cc\u0642\u0648\u06ba \u0633\u06d2 \u0635\u0627\u0641 \u0627\u0648\u0631 \u0686\u06be\u0648\u0679\u06d2 \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u0633\u06cc\u0679 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-enable-access-logging\">\u0631\u0633\u0627\u0626\u06cc \u0644\u0627\u06af\u0646\u06af \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>CloudTrail \u06cc\u0627 S3 \u0633\u0631\u0648\u0631 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u0627\u06af\u0632 \u0645\u06cc\u06ba \u0627\u067e\u0646\u06d2 \u06c1\u06cc\u0644\u062a\u06be \u0628\u0627\u0644\u0679\u06cc \u062a\u06a9 \u062a\u0645\u0627\u0645 \u0631\u0633\u0627\u0626\u06cc \u06a9\u0648 \u0644\u0627\u06af \u0627\u0646 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0622\u0688\u0679 \u0679\u0631\u06cc\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0628\u06be\u06cc \u0627\u0633\u0679\u06cc\u0679 \u06a9\u0648 \u067e\u0691\u06be\u0627\u060c \u0644\u06a9\u06be\u0627 \u06cc\u0627 \u0644\u0627\u06a9 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shell\">aws s3api put-bucket-logging \n  --bucket your-state-bucket \n  --bucket-logging-status '{\n    \"LoggingEnabled\": {\n      \"TargetBucket\": \"your-logging-bucket\",\n      \"TargetPrefix\": \"terraform-state-access\/\"\n    }\n  }'\n<\/code><\/pre>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>AWS S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u0622\u067e \u06a9\u06d2 Terraform \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u06cc\u0679 \u0627\u067e \u0645\u06cc\u06ba DynamoDB \u0679\u06cc\u0628\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0646\u062a\u06cc\u062c\u06c1 \u0622\u0633\u0627\u0646 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631\u060c \u0686\u06be\u0648\u0679\u06cc IAM \u0627\u062c\u0627\u0632\u062a\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0622\u067e \u06a9\u06cc \u0679\u06cc\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u06d2 \u0632\u06cc\u0631 \u0627\u0646\u062a\u0638\u0627\u0645 \u06c1\u0631 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0641\u0631\u0627\u06c1\u0645\u06cc\u060c \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0648\u0631 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06a9\u0645 \u0633\u0631\u0648\u0633 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0646\u06d2 \u062c\u0648 \u06a9\u0686\u06be \u062d\u0627\u0635\u0644 \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0633 \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1 \u06cc\u06c1 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p>\u0627\u0628 \u0622\u067e \u0633\u0645\u062c\u06be \u06af\u0626\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u06cc\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 Terraform \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1 \u06a9\u06cc\u0648\u06ba \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u06a9\u0627 \u0631\u0648\u0627\u06cc\u062a\u06cc S3 + DynamoDB \u0627\u067e\u0631\u0648\u0686 \u0633\u06d2 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0635\u062d\u06cc\u062d \u0628\u0627\u0644\u0679\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be S3 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0644\u0627\u06a9\u0646\u06af \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 Terraform \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u06c1\u0645\u0627\u0631\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u0648 S3 + DynamoDB \u0633\u06d2 S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631 \u062f\u06cc\u0627 \u06af\u06cc\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e \u0646\u06d2 \u0633\u06cc\u06a9\u06be\u0627 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u062a\u0627\u0644\u06d2 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u0646\u0627\u060c \u067e\u06be\u0646\u0633\u06d2 \u06c1\u0648\u0626\u06d2 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u06af\u0631 \u0636\u0631\u0648\u0631\u06cc \u06c1\u0648 \u062a\u0648 \u0631\u0648\u0644 \u0628\u06cc\u06a9 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0635\u062d\u062a \u06a9\u06cc \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u067e\u0631 \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>S3 \u0645\u0642\u0627\u0645\u06cc \u0644\u0627\u06a9\u0646\u06af \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u06cc\u06c1 \u0646\u0645\u0648\u0646\u06c1 AWS \u067e\u0631 \u062a\u0645\u0627\u0645 \u0646\u0626\u06d2 Terraform \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0645\u062a\u0639\u062f\u062f \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 \u0628\u0691\u06d2 \u0627\u062b\u0627\u062b\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633\u06a9\u0631\u067e\u0679 \u06cc\u0627 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0645\u0646\u062a\u0642\u0644\u06cc \u067e\u0631 \u063a\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u062a\u0645\u0627\u0645 \u0631\u06cc\u0627\u0633\u062a\u06cc \u0628\u0627\u0644\u0679\u06cc\u0648\u06ba \u067e\u0631 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><em>\u0627\u06af\u0631 \u0622\u067e \u0627\u0633\u0679\u0627\u0631\u0679 \u0627\u067e \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u06cc\u0627 \u0628\u06c1\u062a\u0631 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u0679\u06cc\u0631\u0627\u0641\u0627\u0631\u0645 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632\u060c CI\/CD \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u067e\u06cc\u0679\u0631\u0646\u060c \u0627\u0648\u0631 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u0631\u0646 \u0628\u06a9\u0633 \u06a9\u0627 \u0645\u06a9\u0645\u0644 \u062d\u0648\u0627\u0644\u06c1 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba:<\/em> \u0627\u0633\u0679\u0627\u0631\u0679 \u0627\u067e DevOps \u0641\u06cc\u0644\u0688 \u06af\u0627\u0626\u06cc\u0688<em>. \u06c1\u0645 \u0622\u067e \u06a9\u06d2 AWS \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u06cc \u067e\u0648\u0631\u06cc \u0632\u0646\u062f\u06af\u06cc \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0633\u06cc\u0679 \u0627\u067e \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 \u062a\u06a9\u06d4<\/em><\/p>\n<h2 id=\"heading-references\">\u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a<\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u06af\u0631 \u0622\u067e \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u0633\u06d2 AWS \u067e\u0631 Terraform \u0686\u0644\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0634\u0627\u06cc\u062f \u0633\u06cc\u0679 \u0627\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u0648\u06ba \u06af\u06d2: \u0627\u0633\u0679\u06cc\u0679 \u06a9\u0648 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 S3 \u0628\u0627\u0644\u0679\u06cc\u060c \u0627\u0633\u0679\u06cc\u0679 \u0644\u0627\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 DynamoDB \u0679\u06cc\u0628\u0644\u060c \u0627\u0648\u0631 \u0627\u0646 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0628\u0627\u0646\u062f\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0686\u0646\u062f IAM \u067e\u0627\u0644\u06cc\u0633\u06cc\u0627\u06ba\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0633\u0627\u0644\u0648\u06ba \u062a\u06a9 \u06a9\u0627\u0645 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":23668,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-23667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/23667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=23667"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/23667\/revisions"}],"predecessor-version":[{"id":23669,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/23667\/revisions\/23669"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media\/23668"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=23667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=23667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=23667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}