{"id":49032,"date":"2023-06-22T13:03:12","date_gmt":"2024-03-08T18:22:31","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/"},"modified":"2024-04-30T10:09:28","modified_gmt":"2024-04-30T02:09:28","slug":"%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/","title":{"rendered":"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC"},"content":{"rendered":"<p>\u8fd9\u662fTerraform\u5165\u95e8\u7cfb\u5217\u7684\u7b2c\u4e09\u8282\uff0c\u6211\u4eec\u5c06\u901a\u8fc7\u5b9e\u8df5\u6765\u5b66\u4e60\u3002<br \/>\n\u5728\u4e0a\u4e00\u8282\u7684\u57fa\u7840\u6559\u7a0b\u4e2d\uff0c\u6211\u4eec\u5148\u521b\u5efa\u4e86\u4e00\u4e2aVPC\uff0c\u800c\u8fd9\u4e00\u6b21\u6211\u4eec\u5c06\u518d\u6b21\u521b\u5efaVPC\u76f8\u5173\u7684\u8d44\u6e90\uff0c\u5305\u62ec\u5b50\u7f51\u548c\u8def\u7531\u8868\u7b49\u3002<\/p>\n<h5>\u8fb9\u521b\u4f5c\u8fb9\u5b66\u4e60\u7684Terraform\u5165\u95e8\u7cfb\u5217<\/h5>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u5b89\u88c5\u548c\u521d\u59cb\u8bbe\u7f6e<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\u57fa\u7840\u7bc7<\/ol>\n<\/li>\n<\/ol>\n<p>VPC\u7bc7 =&gt; \u8fd9\u6b21\u662f\u8fd9\u4e2a<br \/>\nEC2\u7bc7<br \/>\nRoute53 + ACM\u7bc7<br \/>\nELB\u7bc7<br \/>\nRDS\u7bc7<\/p>\n<p>\u8fd9\u6b21\u7684\u5b66\u4e60\u91cd\u70b9\u5982\u4e0b\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u5909\u6570\u306e\u4f7f\u3044\u65b9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ea\u30bd\u30fc\u30b9\u9593\u306e\u53c2\u7167\u65b9\u6cd5<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u95a2\u6570\u306e\u4f7f\u3044\u65b9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">State\u30d5\u30a1\u30a4\u30eb\u306e\u7ba1\u7406<\/ul>\n<h1>\u521b\u5efaVPC<\/h1>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u5c06\u91cd\u65b0\u521b\u5efa\u865a\u62df\u79c1\u6709\u4e91\uff08VPC\uff09\u3002<br \/>\n\u5c06network.tf\u6587\u4ef6\u7684\u5185\u5bb9\u4fee\u6539\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">################################<\/span>\r\n<span class=\"c1\"># VPC<\/span>\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_vpc\"<\/span> <span class=\"s2\">\"vpc\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">cidr_block<\/span>           <span class=\"p\">=<\/span> <span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc_cidr<\/span>\r\n  <span class=\"nx\">enable_dns_support<\/span>   <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n  <span class=\"nx\">enable_dns_hostnames<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-vpc\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u6709\u5173DNS\u7684\u4e24\u4e2a\u53c2\u6570\uff0c\u6211\u8ba4\u4e3a\u57fa\u672c\u4e0a\u4f7f\u7528\u65f6\u90fd\u9700\u8981\u542f\u7528\u3002\u7531\u4e8e\u8fd9\u662f\u76f8\u5f53\u91cd\u8981\u7684\u8bbe\u7f6e\uff0c\u6240\u4ee5\u65e0\u8bba\u662ftrue\u8fd8\u662ffalse\uff0c\u90fd\u5e94\u660e\u786e\u5730\u8fdb\u884c\u63cf\u8ff0\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">DNS\u89e3\u6c7a\uff1a enable_dns_support<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">DNS\u30db\u30b9\u30c8\u540d\uff1a enable_dns_hostnames<\/ul>\n<p>\u5982\u7701\u7565\uff0c\u5219\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0cenable_dns_support\u5c06\u4e3atrue\uff0cenable_dns_hostnames\u5c06\u4e3afalse\u3002\u6709\u5173\u53c2\u6570\u542b\u4e49\uff0c\u8bf7\u53c2\u8003\u5b98\u65b9\u6587\u6863\u4e2d\u5173\u4e8eVPC\u4e2dDNS\u4f7f\u7528\u7684\u90e8\u5206\u3002<\/p>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4f1a\u8bbe\u7f6e\u9ed8\u8ba4\u503c\uff0c\u4f46\u7701\u7565\u4e86instance_tenancy\u7684\u914d\u7f6e\u3002<br \/>\n\u60a8\u53ef\u4ee5\u901a\u8fc7\u5728tags\u4e2d\u4f7f\u7528KeyValue\u7684\u7ec4\u5408\u6765\u6307\u5b9a\u6807\u7b7e\uff0c\u4ee5\u4fbf\u5728\u63a7\u5236\u53f0\u4e0a\u8fdb\u884c\u8bc6\u522b\u3002\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u5c06\u4f7f\u7528Name\u6807\u7b7e\u6765\u8bc6\u522b\u8d44\u6e90\u3002<\/p>\n<h1>\u53d8\u91cf\u7684\u4f7f\u7528\u65b9\u6cd5<\/h1>\n<p>\u8bf7\u5c06\u591a\u6b21\u51fa\u73b0\u7684\u5b57\u7b26\u4e32\u6216\u73af\u5883\u53d8\u91cf\u5316\u3002\u4f7f\u7528variable\u5757\u6765\u5b9a\u4e49\u53d8\u91cf\u3002\u867d\u7136\u5728\u73b0\u6709\u7684network.tf\u6587\u4ef6\u4e2d\u7f16\u5199\u4e5f\u80fd\u8fd0\u884c\uff0c\u4f46\u901a\u5e38\u5c06\u5176\u5212\u5206\u4e3a\u53e6\u4e00\u4e2a\u6587\u4ef6variables.tf\u6765\u8fdb\u884c\u63cf\u8ff0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># Common<\/span>\r\n<span class=\"k\">variable<\/span> <span class=\"s2\">\"prefix\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Project name given as a prefix\"<\/span>\r\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\r\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"cloud02\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\"># VPC<\/span>\r\n<span class=\"k\">variable<\/span> <span class=\"s2\">\"vpc_cidr\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"The CIDR block of the VPC\"<\/span>\r\n  <span class=\"nx\">type<\/span>        <span class=\"p\">=<\/span> <span class=\"nx\">string<\/span>\r\n  <span class=\"nx\">default<\/span>     <span class=\"p\">=<\/span> <span class=\"s2\">\"10.0.0.0\/16\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u53d8\u91cf\u5b9a\u4e49\u4ee5\u53ca\u53d8\u91cf\u540d\uff0c\u5e76\u7528\u82b1\u62ec\u53f7{}\u5c06\u5176\u5305\u56f4\uff0c\u63cf\u8ff0\u3001\u7c7b\u578b\u3001\u9ed8\u8ba4\u503c\u7b49\u7b49\u90fd\u4f1a\u5728\u82b1\u62ec\u53f7\u5185\u63cf\u8ff0\u3002\u5c3d\u7ba1\u53ef\u4ee5\u7701\u7565\u63cf\u8ff0\u548c\u7c7b\u578b\uff0c\u4f46\u5efa\u8bae\u4e0d\u8981\u7701\u7565\u5e76\u52a0\u4ee5\u63cf\u8ff0\u3002<\/p>\n<p>\u5728network.tf\u4e2d\uff0c\u6211\u4eec\u4ee5\u4ee5\u4e0b\u65b9\u5f0f\u7f16\u5199\u548c\u8c03\u7528\u5b9a\u4e49\u7684\u53d8\u91cf\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">cidr_block = var.vpc_cidr<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">Name = &#8220;${var.prefix}-vpc&#8221;<\/ul>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528\u53d8\u91cf\u540d\u8c03\u7528\u53d8\u91cf\uff0c\u4f46\u5982\u679c\u8981\u5728\u5b57\u7b26\u4e32\u4e2d\u5f15\u7528\u53d8\u91cf\uff0c\u5219\u9700\u8981\u4f7f\u7528&#8221;${var.\u53d8\u91cf\u540d}-vpc&#8221;\u7684\u5f62\u5f0f\u5c06\u53d8\u91cf\u7528${}\u62ec\u8d77\u6765\uff0c\u800c\u6574\u4e2a\u5b57\u7b26\u4e32\u9700\u8981\u7528\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\u3002<\/p>\n<p>\u5982\u679c\u5728variables.tf\u4e2d\u6ca1\u6709\u6307\u5b9a\u9ed8\u8ba4\u503c\uff0c\u90a3\u4e48\u5728\u6267\u884cplan\u6216apply\u65f6\u4f1a\u663e\u793a\u63d0\u793a\u5e76\u8981\u6c42\u8f93\u5165\u3002\u8fd9\u610f\u5473\u7740\u53d8\u91cf\u5df2\u7ecf\u88ab\u58f0\u660e\uff0c\u4f46\u5374\u65e0\u6cd5\u77e5\u9053\u5176\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan\r\n\r\nvar.prefix\r\n  Enter a value: \r\n<\/code><\/pre>\n<p>\u4e5f\u53ef\u4ee5\u901a\u8fc7\u4f7f\u7528-var\u53c2\u6570\u6765\u4f20\u9012\u53c2\u6570\uff0c\u4f8b\u5982\uff1aterraform plan -var=&#8221;prefix=cloud02&#8243;\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan <span class=\"nt\">-var<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"prefix=cloud02\"<\/span> <span class=\"nt\">-var<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"vpc_cidr=10.0.0.0\/16\"<\/span>\r\n<\/code><\/pre>\n<p>\u5f53\u60a8\u5728\u540d\u4e3a terraform.tfvars \u7684\u6587\u4ef6\u4e2d\u7f16\u5199\u53d8\u91cf\u503c\u65f6\uff0c\u5b83\u5c06\u81ea\u52a8\u52a0\u8f7d\u8fd9\u4e9b\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>prefix   <span class=\"o\">=<\/span> <span class=\"s2\">\"cloud02\"<\/span>\r\nvpc_cidr <span class=\"o\">=<\/span> <span class=\"s2\">\"10.0.0.0\/16\"<\/span>\r\n<\/code><\/pre>\n<p>\u4e5f\u53ef\u4ee5\u901a\u8fc7\u73af\u5883\u53d8\u91cf\u8fdb\u884c\u6307\u5b9a\u3002\u4ee5TF_VAR_&lt;\u53d8\u91cf\u540d&gt;=&lt;\u503c&gt;\u7684\u683c\u5f0f\u8fdb\u884c\u58f0\u660e\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"nb\">export <\/span><span class=\"nv\">TF_VAR_prefix<\/span><span class=\"o\">=<\/span>cloud02\r\n<span class=\"nb\">export <\/span><span class=\"nv\">TF_VAR_vpc_cidr<\/span><span class=\"o\">=<\/span>10.0.0.0\/16\r\n<\/code><\/pre>\n<p>\u6574\u7406\u5f8c\uff0c\u5982\u679c\u672a\u5199\u51fa\u53d8\u91cf\u7684\u9ed8\u8ba4\u503c\uff0c<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u6642\u306b\u30d7\u30ed\u30f3\u30d7\u30c8\u3067\u5165\u529b\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u6642\u306b-var\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u6307\u5b9a\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>terraform.tfvars\u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3059\u308b<br \/>\n\u74b0\u5883\u5909\u6570\u3067\u6307\u5b9a\u3059\u308b<\/p>\n<p>\u5982\u679c\u540c\u65f6\u6307\u5b9a\u4e86-var\u9009\u9879\u3001terraform.tfvars\u548c\u73af\u5883\u53d8\u91cf\uff0c\u90a3\u4e48\u4f18\u5148\u7ea7\u5c06\u6309\u987a\u5e8f\u4e3a-var\u9009\u9879\u3001terraform.tfvars\u548c\u73af\u5883\u53d8\u91cf\uff0c\u5e76\u4e14\u5982\u679c\u90fd\u6ca1\u6709\u6307\u5b9a\u7684\u8bdd\uff0c\u5219\u9700\u8981\u901a\u8fc7\u63d0\u793a\u8f93\u5165\u3002<\/p>\n<p>\u6700\u521d\u53ef\u80fd\u4f1a\u96be\u4ee5\u7406\u89e3 variables.tf \u548c terraform.tfvars \u7684\u4f7f\u7528\u533a\u522b\uff0c<\/p>\n<p>variables.tf\u306b\u306f\u5909\u6570\u306e\u5ba3\u8a00\u3092\u66f8\u304f<\/p>\n<p>terraform.tfvars\u306b\u306f\u5909\u6570\u306e\u5024\u3092\u66f8\u304f<\/p>\n<p>\u5118\u7ba1variables.tf\u4e2d\u6307\u5b9a\u6240\u6709\u8b8a\u6578\u7684\u9ed8\u8a8d\u503c\u6642\uff0cterraform.tfvars\u662f\u4e0d\u5fc5\u8981\u7684\uff0c\u4f46\u662f\u7576\u5b9a\u7fa9\u74b0\u5883\u4e2d\u6703\u8b8a\u52d5\u7684\u503c\uff08\u5982\u958b\u767c\/\u6e2c\u8a66\/\u6b63\u5f0f\u7b49\uff09\u6216\u8005\u5305\u542b\u654f\u611f\u4fe1\u606f\uff08\u5982\u5bc6\u78bc\uff09\uff0c\u4e26\u4e14\u5728.gitignore\u4e2d\u5c07\u5176\u6392\u9664\u65bc\u7248\u672c\u63a7\u5236\u4e4b\u5916\u6642\uff0cterraform.tfvars\u4ecd\u7136\u5f88\u6709\u7528\u3002<\/p>\n<p>\u5982\u679c\u60a8\u60f3\u4f7f\u7528\u9664\u4e86terraform.tfvars\u4e4b\u5916\u7684\u6587\u4ef6\u540d\u6765\u5b9a\u4e49\u53d8\u91cf\uff0c\u4f8b\u5982\uff0c\u4f7f\u7528\u4e00\u4e2a\u540d\u4e3adev.tfvars\u7684\u6587\u4ef6\u6765\u63cf\u8ff0\u5f00\u53d1\u73af\u5883\u7684\u53d8\u91cf\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528-var-file\u53c2\u6570\u6765\u6307\u5b9a\u5e76\u8bfb\u53d6\u8be5\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan <span class=\"nt\">-var-file<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"dev.tfvars\"<\/span>\r\n<\/code><\/pre>\n<p>\u4ee5\u4e0a\u662f\u5173\u4e8e\u53d8\u91cf\u7684\u57fa\u672c\u4f7f\u7528\u65b9\u6cd5\u3002<br \/>\n\u8fd8\u6709\u4e00\u79cd\u58f0\u660e\u5c40\u90e8\u53d8\u91cf\u7684\u65b9\u5f0f\u662f\u4f7f\u7528 locals \u5757\uff0c\u4f46\u57fa\u672c\u4f7f\u7528\u65b9\u6cd5\u662f\u76f8\u540c\u7684\u3002<br \/>\n\u63a5\u4e0b\u6765\u6211\u4eec\u5c06\u7ee7\u7eed\u5904\u7406 variables.tf \u548c terraform.tfvars \u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># Common<\/span>\r\n<span class=\"k\">variable<\/span> <span class=\"s2\">\"prefix\"<\/span> <span class=\"p\">{}<\/span>\r\n\r\n<span class=\"c1\"># VPC<\/span>\r\n<span class=\"k\">variable<\/span> <span class=\"s2\">\"vpc_cidr\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">default<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"10.0.0.0\/16\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"nx\">prefix<\/span> <span class=\"err\">=<\/span> <span class=\"s2\">\"cloud02\"<\/span>\r\n<\/code><\/pre>\n<p>\u4f60\u53ef\u4ee5\u5728\u8fd9\u4e2a\u9636\u6bb5\u5148\u7533\u8bf7\u5e76\u786e\u8ba4VPC\u7684\u521b\u5efa\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u7ee7\u7eed\u7f16\u5199\u540e\u7eed\u4ee3\u7801\u5e76\u6700\u540e\u8fdb\u884c\u7533\u8bf7\uff0c\u90fd\u53ef\u4ee5\u3002<\/p>\n<h1>\u521b\u5efa\u4e92\u8054\u7f51\u95e8\u6237<\/h1>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u5c06\u521b\u5efa\u4e92\u8054\u7f51\u7f51\u5173\u3002<br \/>\n\u5728network.tf\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">################################<\/span>\r\n<span class=\"c1\"># Internet Gateway<\/span>\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_internet_gateway\"<\/span> <span class=\"s2\">\"igw\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-igw\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5728aws_vpc.vpc.id\u4e2d\uff0cvpc_id\u5f15\u7528\u4e86VPC\u7684ID\u3002<br \/>\n\u5f53\u5c06\u672c\u6b21\u7684IGW\u4e0eVPC\u6216\u5176\u4ed6\u8d44\u6e90\u5173\u8054\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528&#8221;&lt;\u8d44\u6e90\u7c7b\u578b&gt;.&lt;\u8d44\u6e90\u7684\u6807\u8bc6\u540d\u79f0&gt;.&lt;\u5c5e\u6027&gt;&#8221;\u7684\u5f62\u5f0f\u6765\u6307\u5b9a\u5173\u8054\u8d44\u6e90\u3002<\/p>\n<p>\u5728\u672c\u4f8b\u4e2d\uff0c\u5c5e\u6027\u662fid\u3002<br \/>\n\u901a\u8fc7\u53c2\u8003&#8221;Attributes Reference&#8221;\uff0c\u60a8\u53ef\u4ee5\u4e86\u89e3\u6709\u54ea\u4e9b\u5c5e\u6027\uff0c\u4f46\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u4f1a\u4f7f\u7528\u7528\u4e8e\u552f\u4e00\u6807\u8bc6\u8d44\u6e90\u7684id\u6216arn\u7b49\u3002<\/p>\n<h1>\u521b\u5efa\u5b50\u7f51<\/h1>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u5c06\u521b\u5efa\u5b50\u7f51\u3002<br \/>\n\u6211\u4eec\u5c06\u5728network.tf\u6587\u4ef6\u4e2d\u8ffd\u52a0\u4ee5\u4e0b\u4ee3\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">################################<\/span>\r\n<span class=\"c1\"># Subnet<\/span>\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_subnet\"<\/span> <span class=\"s2\">\"public_subnet_1a\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">availability_zone<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1a\"<\/span>\r\n  <span class=\"nx\">cidr_block<\/span>              <span class=\"p\">=<\/span> <span class=\"nx\">cidrsubnet<\/span><span class=\"p\">(<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc_cidr<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">11<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># 10.0.11.0\/24<\/span>\r\n  <span class=\"nx\">map_public_ip_on_launch<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"Name\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-public-subnet-1a\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_subnet\"<\/span> <span class=\"s2\">\"public_subnet_1c\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">availability_zone<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1c\"<\/span>\r\n  <span class=\"nx\">cidr_block<\/span>              <span class=\"p\">=<\/span> <span class=\"nx\">cidrsubnet<\/span><span class=\"p\">(<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc_cidr<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">12<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># 10.0.12.0\/24<\/span>\r\n  <span class=\"nx\">map_public_ip_on_launch<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">true<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"Name\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-public-subnet-1c\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_subnet\"<\/span> <span class=\"s2\">\"private_subnet_1a\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">availability_zone<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1a\"<\/span>\r\n  <span class=\"nx\">cidr_block<\/span>              <span class=\"p\">=<\/span> <span class=\"nx\">cidrsubnet<\/span><span class=\"p\">(<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc_cidr<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">21<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># 10.0.21.0\/24<\/span>\r\n  <span class=\"nx\">map_public_ip_on_launch<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">false<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"Name\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-private-subnet-1a\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_subnet\"<\/span> <span class=\"s2\">\"private_subnet_1c\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span>                  <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">availability_zone<\/span>       <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1c\"<\/span>\r\n  <span class=\"nx\">cidr_block<\/span>              <span class=\"p\">=<\/span> <span class=\"nx\">cidrsubnet<\/span><span class=\"p\">(<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc_cidr<\/span><span class=\"p\">,<\/span> <span class=\"mi\">8<\/span><span class=\"p\">,<\/span> <span class=\"mi\">22<\/span><span class=\"p\">)<\/span> <span class=\"c1\"># 10.0.22.0\/24<\/span>\r\n  <span class=\"nx\">map_public_ip_on_launch<\/span> <span class=\"p\">=<\/span> <span class=\"kc\">false<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"s2\">\"Name\"<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-private-subnet-1c\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u67e5\u770b\u7cfb\u7edf\u914d\u7f6e\uff0c\u60a8\u4f1a\u5f88\u5bb9\u6613\u7406\u89e3\uff1a\u6211\u4eec\u5728AZ-1a\u548cAZ-1c\u5206\u522b\u521b\u5efa\u4e86\u516c\u5171\u5b50\u7f51\u548c\u79c1\u6709\u5b50\u7f51\uff08\u5171\u8ba14\u4e2a\uff09\u3002<\/p>\n<p>\u516c\u5171\u5b50\u7f51\u4f7f\u7528&#8221;map_public_ip_on_launch&#8221;\u9009\u9879\u5c06\u516c\u5171IP\u81ea\u52a8\u5206\u914d\u8bbe\u7f6e\u4e3atrue\u3002\u6b64\u5916\uff0c&#8221;cidr_block&#8221;\u901a\u8fc7\u4f7f\u7528\u540d\u4e3a&#8221;cidrsubnet&#8221;\u7684\u51fd\u6570\u6765\u6839\u636eVPC\u7684CIDR&#8221;10.0.0.0\/16&#8243;\u6765\u8ba1\u7b97\u5f97\u51fa\u3002<\/p>\n<p>\u5728terraform console\u4e2d\u67e5\u770b\u6bcf\u4e2a\u51fd\u6570\u90e8\u5206\u540e\uff0ccidrsubnet(prefix, newbits, netnum)\u8fd9\u4e2a\u53e5\u5b50\u5c31\u53d8\u5f97\u5f88\u660e\u663e\u4e86\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform console\r\n\r\n<span class=\"o\">&gt;<\/span> cidrsubnet<span class=\"o\">(<\/span><span class=\"s2\">\"10.0.0.0\/16\"<\/span>, 8, 11<span class=\"o\">)<\/span>\r\n<span class=\"s2\">\"10.0.11.0\/24\"<\/span>\r\n<span class=\"o\">&gt;<\/span> cidrsubnet<span class=\"o\">(<\/span><span class=\"s2\">\"10.0.0.0\/16\"<\/span>, 8, 12<span class=\"o\">)<\/span>\r\n<span class=\"s2\">\"10.0.12.0\/24\"<\/span>\r\n<span class=\"o\">&gt;<\/span> cidrsubnet<span class=\"o\">(<\/span><span class=\"s2\">\"10.0.0.0\/16\"<\/span>, 8, 21<span class=\"o\">)<\/span>\r\n<span class=\"s2\">\"10.0.21.0\/24\"<\/span>\r\n<span class=\"o\">&gt;<\/span> cidrsubnet<span class=\"o\">(<\/span><span class=\"s2\">\"10.0.0.0\/16\"<\/span>, 8, 22<span class=\"o\">)<\/span>\r\n<span class=\"s2\">\"10.0.22.0\/24\"<\/span>\r\n<\/code><\/pre>\n<p>Terraform\u4e2d\u6709\u8bb8\u591a\u5176\u4ed6\u5185\u7f6e\u51fd\u6570\uff0c\u4f46\u8981\u8fdb\u884c\u64cd\u4f5c\u786e\u8ba4\uff0cterraform\u63a7\u5236\u53f0\u975e\u5e38\u65b9\u4fbf\u3002<\/p>\n<h1>\u521b\u5efa\u8def\u7531\u8868<\/h1>\n<p>\u5728\u7ed3\u675f\u65f6\uff0c\u521b\u5efa\u8def\u7531\u8868\u5e76\u5c06\u5176\u5173\u8054\u5230\u5b50\u7f51\u4e0a\u3002<br \/>\n\u5728network.tf\u6587\u4ef6\u4e2d\u8ffd\u52a0\u4ee5\u4e0b\u4ee3\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\">################################<\/span>\r\n<span class=\"c1\"># Public Route Table<\/span>\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table\"<\/span> <span class=\"s2\">\"public_rt\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-public-route\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route\"<\/span> <span class=\"s2\">\"to_internet\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">route_table_id<\/span>         <span class=\"p\">=<\/span> <span class=\"nx\">aws_route_table<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_rt<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">gateway_id<\/span>             <span class=\"p\">=<\/span> <span class=\"nx\">aws_internet_gateway<\/span><span class=\"p\">.<\/span><span class=\"nx\">igw<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">destination_cidr_block<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"0.0.0.0\/0\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table_association\"<\/span> <span class=\"s2\">\"public_rt_1a\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">subnet_id<\/span>      <span class=\"p\">=<\/span> <span class=\"nx\">aws_subnet<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_subnet_1a<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">route_table_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_route_table<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_rt<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table_association\"<\/span> <span class=\"s2\">\"public_rt_1c\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">subnet_id<\/span>      <span class=\"p\">=<\/span> <span class=\"nx\">aws_subnet<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_subnet_1c<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">route_table_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_route_table<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_rt<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"c1\"># Private Route Table<\/span>\r\n<span class=\"c1\">################################<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table\"<\/span> <span class=\"s2\">\"private_rt\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">vpc_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">vpc<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n\r\n  <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">prefix<\/span><span class=\"k\">}<\/span><span class=\"s2\">-private-route\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table_association\"<\/span> <span class=\"s2\">\"private_rt_1a\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">subnet_id<\/span>      <span class=\"p\">=<\/span> <span class=\"nx\">aws_subnet<\/span><span class=\"p\">.<\/span><span class=\"nx\">private_subnet_1a<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">route_table_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_route_table<\/span><span class=\"p\">.<\/span><span class=\"nx\">private_rt<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_route_table_association\"<\/span> <span class=\"s2\">\"private_rt_1c\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">subnet_id<\/span>      <span class=\"p\">=<\/span> <span class=\"nx\">aws_subnet<\/span><span class=\"p\">.<\/span><span class=\"nx\">private_subnet_1c<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n  <span class=\"nx\">route_table_id<\/span> <span class=\"p\">=<\/span> <span class=\"nx\">aws_route_table<\/span><span class=\"p\">.<\/span><span class=\"nx\">private_rt<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u4f7f\u7528aws_route_table\u521b\u5efa\u7a7a\u7684\u8def\u7531\u8868\uff0c<br \/>\n\u4f7f\u7528aws_route\u6dfb\u52a0\u8def\u7531\uff0c<br \/>\n\u4f7f\u7528aws_route_table_association\u5c06\u8def\u7531\u8868\u4e0e\u5b50\u7f51\u5173\u8054\u3002<\/p>\n<p>\u8bf7\u6ce8\u610f\uff0c\u4ee5\u4e0a\u4e3a\u4e00\u79cd\u53ef\u80fd\u7684\u6c49\u8bed\u7ffb\u8bd1\u9009\u9879\u3002<\/p>\n<p>\u5bf9\u4e8e\u516c\u5171\u5b50\u7f51\u7684\u8def\u7531\uff0c\u5c06\u5176\u4e0eInternet Gateway\u76f8\u5173\u8054\uff0c\u4f5c\u4e3a\u6307\u5411\u4e92\u8054\u7f51\u7684\u8def\u7531\u3002\u5bf9\u4e8e\u79c1\u6709\u5b50\u7f51\uff0c\u672c\u6b21\u4e0d\u9700\u8981\u6dfb\u52a0\u989d\u5916\u7684\u8def\u7531\uff0c\u4f46\u5982\u679c\u5b58\u5728NAT\u7f51\u5173\u7b49\u60c5\u51b5\uff0c\u53ef\u4ee5\u4ee5\u7c7b\u4f3c\u7684\u65b9\u5f0f\u6dfb\u52a0\u8def\u7531\u3002<\/p>\n<p>\u6267\u884cterraform apply\u547d\u4ee4\uff0c\u786e\u8ba4VPC\u3001\u4e92\u8054\u7f51\u7f51\u5173\u3001\u5b50\u7f51\u548c\u8def\u7531\u8868\u5df2\u7ecf\u521b\u5efa\u5e76\u5173\u8054\u3002<\/p>\n<h1>\u5c06State\u6587\u4ef6\u8fc1\u79fb\u5230S3\u3002<\/h1>\n<p>\u73b0\u5728\uff0c\u6b63\u5982\u5728Terraform\u6267\u884c\u8ba1\u5212\u4e2d\u6240\u89e3\u91ca\u7684\u90a3\u6837\uff0cTerraform\u53ef\u4ee5\u5f88\u65b9\u4fbf\u5730\u4e86\u89e3\u5dee\u5f02\uff0c\u8fd9\u662f\u901a\u8fc7\u6bd4\u8f83\u5c06\u8981\u6267\u884c\u7684\u4ee3\u7801\u548c\u540d\u4e3aterraform.tfstate\u7684\u6587\u4ef6\u5b9e\u73b0\u7684\u3002<\/p>\n<p>terraform.tfstate\u662f\u4e00\u4e2a\u7531Terraform\u81ea\u52a8\u521b\u5efa\u548c\u66f4\u65b0\u7684\u6587\u4ef6\uff0c\u5b83\u8bb0\u5f55\u4e86\u7531Terraform\u7ba1\u7406\u7684\u57fa\u7840\u8bbe\u65bd\u7684\u72b6\u6001\u3002\u6587\u4ef6\u5185\u5bb9\u91c7\u7528JSON\u683c\u5f0f\u7f16\u5199\u3002<\/p>\n<p>\u5982\u679c\u610f\u5916\u5220\u9664\u4e86terraform.tfstate\u6587\u4ef6\uff0c\u6240\u6709\u8d44\u6e90\u90fd\u5c06\u88ab\u89c6\u4e3a\u65b0\u8d44\u6e90\uff0c\u56e0\u6b64\u6267\u884capply\u547d\u4ee4\u540e\uff0c\u4e4b\u524d\u521b\u5efa\u7684VPC\u76f8\u5173\u8d44\u6e90\u5c06\u88ab\u518d\u6b21\u5168\u90e8\u521b\u5efa\u3002\u4e5f\u5c31\u662f\u8bf4\uff0c\u5bf9\u4e8e\u7ef4\u62a4\u548c\u7ba1\u7406\u57fa\u7840\u67b6\u6784\u7684\u72b6\u6001\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u6587\u4ef6\u3002<\/p>\n<p>\u5728\u56e2\u961f\u5f00\u53d1\u4e2d\uff0c\u7531\u4e8e\u9700\u8981\u8fdb\u884c\u591a\u4eba\u5171\u4eab\uff0c\u56e0\u6b64\u901a\u5e38\u4f7f\u7528\u50cfS3\u8fd9\u6837\u7684\u5b58\u50a8\u6765\u7ba1\u7406terraform.tfstate\u3002\u5728\u5b66\u4e60\u8303\u56f4\u5185\uff0c\u5373\u4f7fterraform.tfstate\u4fdd\u5b58\u5728\u672c\u5730\u4e5f\u6ca1\u6709\u95ee\u9898\uff0c\u4f46\u672c\u6587\u60f3\u8981\u5c1d\u8bd5\u5c06terraform.tfstate\u8fc1\u79fb\u5230S3\u4e2d\u3002<\/p>\n<p>\u5728Terraform\u4e2d\uff0c\u7528\u4e8e\u5b9a\u4e49\u4fdd\u5b58terraform.tfstate\u7b49\u6587\u4ef6\u7684\u4f4d\u7f6e\u7684\u672f\u8bed\u79f0\u4e3a&#8221;backend&#8221;\uff0c\u6211\u4eec\u9700\u8981\u5728provider.tf\u6587\u4ef6\u4e2d\u6dfb\u52a0backend\u5757\u3002\u8bf7\u6839\u636e\u9700\u8981\u4fee\u6539S3\u5b58\u50a8\u6876\u7684\u540d\u79f0\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">terraform<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">required_providers<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">aws<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nx\">source<\/span>  <span class=\"p\">=<\/span> <span class=\"s2\">\"hashicorp\/aws\"<\/span>\r\n      <span class=\"nx\">version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"~&gt; 3.0\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n  <span class=\"nx\">backend<\/span> <span class=\"s2\">\"s3\"<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nx\">bucket<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"cloud02-tf-remote-state-bucket\"<\/span>\r\n    <span class=\"nx\">key<\/span>    <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1\/dev\/terraform.tfstate\"<\/span>\r\n    <span class=\"nx\">region<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">provider<\/span> <span class=\"s2\">\"aws\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">region<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ap-northeast-1\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u901a\u8fc7\u5199\u5165\u540e\u7aef &#8220;s3&#8221; \u6765\u58f0\u660e\u5c06\u5b58\u50a8\u4f4d\u7f6e\u8bbe\u4e3aS3\u3002<br \/>\n\u540c\u65f6\uff0c\u5982\u679c\u5199\u5165\u540e\u7aef &#8220;remote&#8221;\uff0c\u5219\u8868\u793a\u5c06\u4f7f\u7528 Terraform Cloud\u3002<\/p>\n<p>\u5728bucket key region\u4e2d\uff0c\u5206\u522b\u6307\u5b9a\u6876\u540d\u3001tfstate\u8def\u5f84\uff08\u6587\u4ef6\u540d\uff09\u548c\u5730\u533a\u3002<br \/>\n\u8bf7\u6ce8\u610f\uff0c\u6b63\u5982Backend Configuration\u6240\u8ff0\uff0cbackend\u5757\u4e2d\u65e0\u6cd5\u4f7f\u7528\u53d8\u91cf\u3002<\/p>\n<blockquote><p>\u540e\u7aef\u7a0b\u5e8f\u5757\u4e0d\u80fd\u5f15\u7528\u547d\u540d\u503c\uff08\u4f8b\u5982\u8f93\u5165\u53d8\u91cf\u3001\u5c40\u90e8\u53d8\u91cf\u6216\u6570\u636e\u6e90\u5c5e\u6027\uff09\u3002<\/p><\/blockquote>\n<p>S3\u6876\u5728\u540e\u7aef\u88ab\u6307\u5b9a\uff0c\u4e8b\u5148\u901a\u8fc7\u63a7\u5236\u53f0\u754c\u9762\u521b\u5efa\u3002<br \/>\n\u867d\u7136\u53ef\u4ee5\u7528Terraform\u521b\u5efaS3\u6876\u672c\u8eab\uff0c\u4f46\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u6700\u597d\u5355\u72ec\u521b\u5efa\uff0c\u4e0d\u5305\u62ec\u5728\u540c\u4e00\u7ba1\u7406\u4e0b\u3002<\/p>\n<p>\u5982\u679c\u53ef\u4ee5\u8fdb\u884c\u4fee\u6539\uff0c\u6211\u4f1a\u5c1d\u8bd5\u6267\u884cterraform plan\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan\r\n\r\nError: Backend initialization required, please run <span class=\"s2\">\"terraform init\"<\/span>\r\n\u2502 \r\n\u2502 Reason: Initial configuration of the requested backend <span class=\"s2\">\"s3\"<\/span>\r\n\u2502 \r\n\u2502 The <span class=\"s2\">\"backend\"<\/span> is the interface that Terraform uses to store state,\r\n\u2502 perform operations, etc. If this message is showing up, it means that the\r\n\u2502 Terraform configuration you<span class=\"s1\">'re using is using a custom configuration for\r\n\u2502 the Terraform backend.\r\n\u2502 \r\n\u2502 Changes to backend configurations require reinitialization. This allows\r\n\u2502 Terraform to set up the new configuration, copy existing state, etc. Please run\r\n\u2502 \"terraform init\" with either the \"-reconfigure\" or \"-migrate-state\" flags to\r\n\u2502 use the current configuration.\r\n\u2502 \r\n\u2502 If the change reason above is incorrect, please verify your configuration\r\n\u2502 hasn'<\/span>t changed and try again. At this point, no changes to your existing\r\n\u2502 configuration or state have been made.\r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u7531\u4e8e\u540e\u7aef\u914d\u7f6e\u53d8\u66f4\uff0c\u60a8\u5c06\u88ab\u8981\u6c42\u6267\u884cterraform init\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform init\r\n\r\nInitializing the backend...\r\nDo you want to copy existing state to the new backend?\r\n  Pre-existing state was found <span class=\"k\">while <\/span>migrating the previous <span class=\"s2\">\"local\"<\/span> backend to the\r\n  newly configured <span class=\"s2\">\"s3\"<\/span> backend. No existing state was found <span class=\"k\">in <\/span>the newly\r\n  configured <span class=\"s2\">\"s3\"<\/span> backend. Do you want to copy this state to the new <span class=\"s2\">\"s3\"<\/span>\r\n  backend? Enter <span class=\"s2\">\"yes\"<\/span> to copy and <span class=\"s2\">\"no\"<\/span> to start with an empty state.\r\n\r\n  Enter a value: <span class=\"nb\">yes<\/span>\r\n<\/code><\/pre>\n<p>\u6267\u884c terraform init \u540e\uff0c\u4f1a\u8be2\u95ee\u662f\u5426\u8981\u5c06\u672c\u5730\u7684 tfstate \u590d\u5236\u5230 S3 \u4e0a\uff0c\u8bf7\u8f93\u5165 &#8220;yes&#8221; \u7ee7\u7eed\u3002\u8fd9\u6837\u4e00\u6765\uff0c\u672c\u5730\u7684 terraform.tfstate \u5c06\u88ab\u6e05\u9664\uff0c\u5e76\u5728 S3 \u5b58\u50a8\u6876\u4e0a\u521b\u5efa\u6587\u4ef6\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d88cd913a08637a6c4102\/74-0.png\" alt=\"3FFE3306-E4DB-4F2A-8C87-907511FAEF87.png\" \/><\/div>\n<p>\u6211\u5c06\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\u91cd\u65b0\u8fd0\u884cterraform plan\u3002<\/p>\n<pre class=\"post-pre\"><code>terraform plan\r\n\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\r\nNo changes. Your infrastructure matches the configuration.\r\n\r\nYour configuration already matches the changes detected above. If you<span class=\"s1\">'d like to update the Terraform state to match, create and apply a refresh-only plan:\r\n  terraform apply -refresh-only\r\n<\/span><\/code><\/pre>\n<p>\u7531\u4e8e\u663e\u793a\u4e3a&#8221;No changes&#8221;\uff0c\u6211\u4eec\u53ef\u4ee5\u786e\u5b9a\u5df2\u7ecf\u53c2\u8003\u4e86S3\u7684terraform.tfstate\u8fdb\u884c\u5dee\u5f02\u68c0\u67e5\u3002\u4ece\u6b64\u4ee5\u540e\uff0c\u6bcf\u6b21\u8fdb\u884c\u66f4\u6539\u65f6\uff0cS3\u4e2d\u7684terraform.tfstate\u5c06\u88ab\u66f4\u65b0\u3002<\/p>\n<p>\u901a\u8fc7\u5c06\u6570\u636e\u4fdd\u5b58\u5728S3\u4e0a\uff0c\u53ef\u4ee5\u5b9e\u73b0\u591a\u4eba\u5171\u4eab\uff0c\u4f46\u4e25\u683c\u6765\u8bf4\uff0c\u5728\u66f4\u65b0\u671f\u95f4\u9700\u8981\u4e00\u4e2a\u673a\u5236\u6765\u9501\u5b9a\u4ee5\u9632\u6b62\u540c\u65f6\u8fdb\u884c\u66f4\u6539\u3002\u4f7f\u7528DynamoDB\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u8fd9\u4e00\u70b9\uff0c\u5c31\u50cf\u5728DynamoDB State Locking\u4e2d\u6240\u793a\uff0c\u4f46\u7531\u4e8e\u6211\u8fd8\u6ca1\u6709\u5c1d\u8bd5\u8fc7\uff0c\u6240\u4ee5\u8fd9\u6b21\u5c06\u7701\u7565\u3002<\/p>\n<p>\u8fd9\u6b21\u5c31\u5230\u8fd9\u91cc\u5427\u3002\u4e0b\u6b21\u6211\u4eec\u6765\u8bb2\u8bb2EC2\uff0c\u8bd5\u7740\u5efa\u7acb\u4e24\u4e2aWeb\u670d\u52a1\u5668\uff01<\/p>\n<h1>\u8bf7\u53c2\u8003\u4ee5\u4e0b\u94fe\u63a5<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">VPC \u3067\u306e DNS \u306e\u4f7f\u7528<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Input Variables<\/ul>\n<\/li>\n<\/ul>\n<p>Local Values<br \/>\ncidrsubnet Function<br \/>\nS3 Backend<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u662fTerraform\u5165\u95e8\u7cfb\u5217\u7684\u7b2c\u4e09\u8282\uff0c\u6211\u4eec\u5c06\u901a\u8fc7\u5b9e\u8df5\u6765\u5b66\u4e60\u3002 \u5728\u4e0a\u4e00\u8282\u7684\u57fa\u7840\u6559\u7a0b\u4e2d\uff0c\u6211\u4eec\u5148\u521b\u5efa\u4e86\u4e00\u4e2aVPC\uff0c [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49032","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b66\u4e60terraform\u5165\u95e83\u4e4b\u521b\u5efavpc\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC\" \/>\n<meta property=\"og:description\" content=\"\u8fd9\u662fTerraform\u5165\u95e8\u7cfb\u5217\u7684\u7b2c\u4e09\u8282\uff0c\u6211\u4eec\u5c06\u901a\u8fc7\u5b9e\u8df5\u6765\u5b66\u4e60\u3002 \u5728\u4e0a\u4e00\u8282\u7684\u57fa\u7840\u6559\u7a0b\u4e2d\uff0c\u6211\u4eec\u5148\u521b\u5efa\u4e86\u4e00\u4e2aVPC\uff0c [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5b66\u4e60terraform\u5165\u95e83\u4e4b\u521b\u5efavpc\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-08T18:22:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T02:09:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d88cd913a08637a6c4102\/74-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/\",\"name\":\"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2024-03-08T18:22:31+00:00\",\"dateModified\":\"2024-04-30T02:09:28+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b66\u4e60terraform\u5165\u95e83\u4e4b\u521b\u5efavpc\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC","og_description":"\u8fd9\u662fTerraform\u5165\u95e8\u7cfb\u5217\u7684\u7b2c\u4e09\u8282\uff0c\u6211\u4eec\u5c06\u901a\u8fc7\u5b9e\u8df5\u6765\u5b66\u4e60\u3002 \u5728\u4e0a\u4e00\u8282\u7684\u57fa\u7840\u6559\u7a0b\u4e2d\uff0c\u6211\u4eec\u5148\u521b\u5efa\u4e86\u4e00\u4e2aVPC\uff0c [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5b66\u4e60terraform\u5165\u95e83\u4e4b\u521b\u5efavpc\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2024-03-08T18:22:31+00:00","article_modified_time":"2024-04-30T02:09:28+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d88cd913a08637a6c4102\/74-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/","name":"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2024-03-08T18:22:31+00:00","dateModified":"2024-04-30T02:09:28+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5b66\u4e60Terraform\u5165\u95e8(3)\u4e4b\u521b\u5efaVPC"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%ad%a6%e4%b9%a0terraform%e5%85%a5%e9%97%a83%e4%b9%8b%e5%88%9b%e5%bb%bavpc\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=49032"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49032\/revisions"}],"predecessor-version":[{"id":91275,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/49032\/revisions\/91275"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=49032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=49032"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=49032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}