{"id":48488,"date":"2023-10-18T08:39:33","date_gmt":"2023-04-17T21:52:42","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/"},"modified":"2024-05-04T04:49:55","modified_gmt":"2024-05-03T20:49:55","slug":"%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/","title":{"rendered":"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u4f60\u597d\uff01<br \/>\n\u6211\u662fCYBIRD Advent Calendar 2022\u7684\u7b2c8\u5929\u8d1f\u8d23\u4eba\uff0c\u6211\u662f\u201c\u3082\u3063\u3075\u3093\u306b\u3083\u201d\u3002<br \/>\n\u7b2c7\u5929\u662f@tomoko_ishizaka\u7684\u201c\u7528\u6545\u4e8b\u6765\u7406\u89e3AWS\u7684IAM\u53ca\u8d26\u6237\u57fa\u7840\u77e5\u8bc6\u201d\u7684\u5185\u5bb9\u3002<br \/>\n\u8bf7\u52a1\u5fc5\u4e00\u5e76\u67e5\u770b\uff01<\/p>\n<p>\u4eca\u5e74\u56db\u6708\uff0c\u6211\u4ee5\u5de5\u7a0b\u5e08\u8eab\u4efd\u4f5c\u4e3a\u65b0\u6bd5\u4e1a\u751f\u5165\u804c\u3002<br \/>\n\u5728\u7ecf\u5386\u57f9\u8bad\u4e4b\u540e\uff0c\u6211\u73b0\u5728\u6b63\u5728\u57fa\u7840\u8bbe\u65bd\u56e2\u961f\u63a5\u53d7\u5b9e\u5730\u8bad\u7ec3\uff0c\u7136\u800c\u5728\u5176\u4e2d\u6211\u610f\u5916\u5730\u9047\u5230\u4e86\u5177\u6709\u9769\u547d\u6027\u6982\u5ff5\u548c\u5de5\u5177\u7684\u60c5\u51b5\u3002<br \/>\n\u8fd9\u5c31\u662f\u201c\u57fa\u7840\u8bbe\u65bd\u5373\u4ee3\u7801\u201d\u8fd9\u4e00\u6982\u5ff5\u4ee5\u53ca\u4ee3\u8868\u5176\u4f53\u73b0\u7684\u5de5\u5177\u201cTerraform\u201d\u3002<br \/>\n\u8fd9\u6b21\uff0c\u6211\u60f3\u8981\u5411\u5927\u5bb6\u4ecb\u7ecd\u4e00\u4e0b\u8ba9\u6211\u9707\u64bc\u7684\u201cTerraform\u201d\uff0c\u4ece\u5b89\u88c5\u5230\u57fa\u7840\u8bbe\u65bd\u7684\u5efa\u7acb\u3001\u4fee\u6539\u3001\u9500\u6bc1\u3001\u53d8\u91cf\u5b9a\u4e49\u4ee5\u53ca\u8f93\u51fa\u503c\u7684\u8bbe\u5b9a\uff01<\/p>\n<h1>Terraform\u662f\u4ec0\u4e48\uff1f<\/h1>\n<p>Terraform\u662fHashiCorp\u63d0\u4f9b\u7684Infrastructure as Code\uff08IaC\uff09\u5de5\u5177\u3002\u4f7f\u7528IaC\u5de5\u5177\u53ef\u4ee5\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u800c\u4e0d\u662f\u56fe\u5f62\u5316\u7684\u7528\u6237\u754c\u9762\uff0c\u8fdb\u884c\u57fa\u7840\u67b6\u6784\u7684\u642d\u5efa\u3001\u53d8\u66f4\u548c\u7ba1\u7406\u3002<\/p>\n<p>\u4f5c\u4e3a\u4e00\u4e2a\u957f\u65f6\u95f4\u5728\u63a7\u5236\u53f0\u4e0a\u6572\u51fb\u952e\u76d8\u7684\u4eba\uff0c\u4f7f\u7528\u8bbe\u7f6e\u6587\u4ef6\uff08\u6e90\u4ee3\u7801\uff09\u53ea\u9700\u8f7b\u677e\u70b9\u51fb\u4e00\u4e0b\uff0c\u5c31\u80fd\u9769\u547d\u6027\u5730\u65b9\u4fbf\u5730\u6784\u5efa\u57fa\u7840\u8bbe\u65bd\u7684\u5de5\u5177\u3002\u5f53\u6211\u9047\u5230\u5b83\u65f6\uff0c\u611f\u5230\u975e\u5e38\u60ca\u53f9\u3002<\/p>\n<h1>\u7ba1\u7406\u6240\u6709\u7684\u57fa\u7840\u8bbe\u65bd<\/h1>\n<p>Terraform\u53ef\u4ee5\u5728\u8d85\u8fc71000\u4e2a\u63d0\u4f9b\u5546\u4e2d\uff0c\u4f8b\u5982AWS\uff0cAzure\uff0cGCP\uff0cKubernetes\uff0cHelm\uff0cGitHub\uff0cSplunk\uff0cDataDog\u7b49\u4e2d\u7ba1\u7406\u8d44\u6e90\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u4f7f\u7528AWS\u8fdb\u884c\u57fa\u7840\u67b6\u6784\u7684\u6784\u5efa\uff01<\/p>\n<h1>\u5b89\u88c5Terraform<\/h1>\n<p>\u8981\u4f7f\u7528Terraform\uff0c\u9700\u8981\u5148\u5b89\u88c5\u5b83\u3002<\/p>\n<p>\u60a8\u53ef\u4ee5\u5728\u6b64\u5904\u627e\u5230\u9002\u5408\u60a8\u7cfb\u7edf\u7684\u5305\u5e76\u4e0b\u8f7dZIP\u6587\u4ef6\uff0c\u6216\u901a\u8fc7\u547d\u4ee4\u884c\u83b7\u53d6\u4e8c\u8fdb\u5236\u6587\u4ef6\u4ee5\u5b89\u88c5Terraform\u3002<\/p>\n<p>\u7531\u65bc\u9019\u6b21\u6211\u5011\u662f\u5728Mac\u4e0a\u9032\u884c\uff0c\u6240\u4ee5\u6211\u5011\u5c07\u4f7f\u7528Homebrew\u5728\u7d42\u7aef\u4e2d\u901a\u904e\u547d\u4ee4\u884c\u9032\u884c\u5b89\u88dd\u3002<\/p>\n<p>Homebrew \u662f\u4e00\u6b3e\u514d\u8d39\u4e14\u5f00\u6e90\u7684 macOSX \u5305\u7ba1\u7406\u7cfb\u7edf\u3002<br \/>\n\u8bf7\u4ece\u8fd9\u91cc\u5b89\u88c5 Homebrew\u3002<\/p>\n<p>\u9996\u5148\uff0c\u5b89\u88c5HashiCorp tap\u3002<\/p>\n<pre class=\"post-pre\"><code>$ brew tap hashicorp\/tap\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u4f7f\u7528hashicorp\/tap\/terraform\u5b89\u88c5Terraform\u3002<\/p>\n<pre class=\"post-pre\"><code>$ brew install hashicorp\/tap\/terraform\r\n<\/code><\/pre>\n<p>\u8981\u5c06Terraform\u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c\uff0c\u8bf7\u66f4\u65b0Homebrew\u3002<\/p>\n<pre class=\"post-pre\"><code>$ brew update\r\n<\/code><\/pre>\n<p>\u8fd0\u884c\u5347\u7ea7\u547d\u4ee4\uff0c\u4e0b\u8f7d\u6700\u65b0\u7684Terraform\u7248\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code>$ brew upgrade hashicorp\/tap\/terraform\r\n<\/code><\/pre>\n<h2>\u786e\u8ba4\u5b89\u88c5<\/h2>\n<p>\u6253\u5f00\u4e00\u4e2a\u65b0\u7684\u7ec8\u7aef\u7a97\u53e3\uff0c\u786e\u4fdd\u5b89\u88c5\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform -version\r\nTerraform v1.3.5\r\non darwin_amd64\r\n<\/code><\/pre>\n<p>\u5982\u679c\u7248\u672c\u80fd\u591f\u663e\u793a\u5982\u4e0a\u6240\u8ff0\uff0c\u90a3\u4e48\u5b89\u88c5\u5c31\u6ca1\u6709\u95ee\u9898\uff01\u53ef\u4ee5\u4f7f\u7528terraform -help\u547d\u4ee4\u5217\u51faTerraform\u53ef\u7528\u7684\u5b50\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform -help \r\nUsage: terraform [global options] &lt;subcommand&gt; [args]\r\n\r\nThe available commands for execution are listed below.\r\nThe primary workflow commands are given first, followed by\r\nless common or more advanced commands.\r\n\r\nMain commands:\r\n  init          Prepare your working directory for other commands\r\n  validate      Check whether the configuration is valid\r\n  plan          Show changes required by the current configuration\r\n  apply         Create or update infrastructure\r\n  destroy       Destroy previously-created infrastructure\r\n\r\n##...\u7701\u7565\r\n<\/code><\/pre>\n<h1>\u5efa\u8bbe\u57fa\u7840\u8bbe\u65bd<\/h1>\n<p>\u5728\u5b8c\u6210Terraform\u7684\u5b89\u88c5\u540e\uff0c\u73b0\u5728\u7ec8\u4e8e\u5f00\u59cb\u6784\u5efa\uff01<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u542f\u52a8Amazon Web Services (AWS)\u7684EC2\u5b9e\u4f8b\u5e76\u5f00\u59cb\u6784\u5efa\u57fa\u7840\u8bbe\u65bd\u3002<br \/>\n* EC2\u5b9e\u4f8b\u662f\u5728AWS\u4e0a\u8fd0\u884c\u7684\u865a\u62df\u673a\u3002<br \/>\n* \u6211\u4eec\u5c06\u5728\u514d\u8d39\u4f7f\u7528\u8303\u56f4\u5185\u8fdb\u884c\u6784\u5efa\u3002<\/p>\n<p>\u8981\u5728AWS\u4e0a\u4f7f\u7528Terraform\u6784\u5efa\u57fa\u7840\u8bbe\u65bd\uff0c\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u4e2a\u6761\u4ef6\uff1a<br \/>\n\u00b7 \u5b89\u88c5AWS CLI<br \/>\n\u00b7 \u62e5\u6709AWS\u8d26\u6237\u7684\u8bbf\u95ee\u5bc6\u94a5<\/p>\n<h2>\u5b89\u88c5 AWS \u547d\u4ee4\u884c\u754c\u9762\u3002<\/h2>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u9700\u8981\u5b89\u88c5AWS CLI\u3002<br \/>\n\u8fd9\u6b21\u6211\u4eec\u5c06\u4eceMacOS\u7684\u7ec8\u7aef\u8fdb\u884c\u5b89\u88c5\u3002<br \/>\n\u4f7f\u7528curl\u547d\u4ee4\u6765\u4e0b\u8f7d\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>$ curl \"https:\/\/awscli.amazonaws.com\/AWSCLIV2.pkg\" -o \"AWSCLIV2.pkg\"\r\n<\/code><\/pre>\n<p>\u8bf7\u6307\u5b9a\u4e0b\u8f7d\u7684\u6587\u4ef6\uff0c\u7136\u540e\u6267\u884cMacOS\u7684\u5b89\u88c5\u7a0b\u5e8f\u3002<\/p>\n<pre class=\"post-pre\"><code>$ sudo installer -pkg AWSCLIV2.pkg -target \/\r\n<\/code><\/pre>\n<p>\u7531\u4e8e\u5b89\u88c5\u5df2\u5b8c\u6210\uff0c\u6211\u4eec\u5c06\u8fdb\u884c\u786e\u8ba4\u3002<\/p>\n<pre class=\"post-pre\"><code>$ which aws\r\n\/usr\/local\/bin\/aws\r\n$ aws --version\r\naws-cli\/2.7.24 Python\/3.8.8 Darwin\/18.7.0 botocore\/2.4.5\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6309\u4e0a\u8ff0\u7684\u65b9\u5f0f\u8fdb\u884c\uff0cAWS CLI\u53ef\u4ee5\u6b63\u786e\u5b89\u88c5\u3002<\/p>\n<h2>\u5c06\u8bbf\u95ee\u5bc6\u94a5\u8bbe\u7f6e\u4e3a\u73af\u5883\u53d8\u91cf\u3002<\/h2>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d857c913a08637a6b945c\/38-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-11-30 14.42.45.png\" \/><\/div>\n<pre class=\"post-pre\"><code>$ export AWS_ACCESS_KEY_ID=  \uff1c\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u5165\u529b\uff1e\r\n$ export AWS_SECRET_ACCESS_KEY= \uff1c\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u5165\u529b\uff1e\r\n<\/code><\/pre>\n<h2>\u5199\u914d\u7f6e<\/h2>\n<p>\u5c06\u7528\u4e8e\u63cf\u8ff0\u57fa\u7840\u8bbe\u65bd\u7684\u6587\u4ef6\u96c6\u5408\u79f0\u4e3a\u300cTerraform\u914d\u7f6e\u6587\u4ef6\u300d\u3002<\/p>\n<p>\u7531\u4e8eTerraform\u6587\u4ef6\u96c6\u5fc5\u987b\u653e\u7f6e\u5728\u5176\u81ea\u5df1\u7684\u76ee\u5f55\u4e2d\uff0c\u6240\u4ee5\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code>$ mkdir learn-terraform-aws-instance\r\n<\/code><\/pre>\n<p>\u5207\u6362\u5230\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code>$ cd learn-terraform-aws-instance\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u5b9a\u4e49\u57fa\u7840\u8bbe\u65bd\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>$ touch main.tf\r\n<\/code><\/pre>\n<p>\u5728\u6587\u672c\u7f16\u8f91\u5668\u4e2d\u6253\u5f00main.tf\u6587\u4ef6\uff0c\u5e76\u5c06\u4ee5\u4e0b\u914d\u7f6e\u7c98\u8d34\u5230\u6587\u4ef6\u4e2d\uff0c\u7136\u540e\u4fdd\u5b58\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; 4.16\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n\r\n  <span class=\"nx\">required_version<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"&gt;= 1.2.0\"<\/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\">\"us-west-2\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<span class=\"c1\">#----------------------------------------<\/span>\r\n<span class=\"c1\"># EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210<\/span>\r\n<span class=\"c1\">#----------------------------------------<\/span>\r\n<span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_instance\"<\/span> <span class=\"s2\">\"app_server\"<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"nx\">ami<\/span>           <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-830c94e3\"<\/span>\r\n  <span class=\"nx\">instance_type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/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\">\"ExampleAppServerInstance\"<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u521d\u59cb\u5316\u76ee\u5f55<\/h2>\n<p>\u4f7f\u7528\u521b\u5efa\u7684\u914d\u7f6e\uff0c\u6784\u5efaEC2\u5b9e\u4f8b\u3002<br \/>\n\u4ece\u4e92\u8054\u7f51\u4e0a\u83b7\u53d6Terraform\u6267\u884c\u6240\u9700\u7684\u63d2\u4ef6\u5e76\u521d\u59cb\u5316\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform init\r\n<\/code><\/pre>\n<p>\u5982\u679c\u663e\u793a\u4ee5\u4e0b\u5185\u5bb9\uff0c\u5219\u8868\u793a\u6267\u884c\u6210\u529f\u3002<\/p>\n<pre class=\"post-pre\"><code>Terraform has been successfully initialized!\r\n<\/code><\/pre>\n<h2>\u8bbe\u7f6e\u7684\u683c\u5f0f\u548c\u9a8c\u8bc1<\/h2>\n<p>\u6267\u884cterraform fmt\u547d\u4ee4\u53ef\u4ee5\u81ea\u52a8\u5bf9\u4ee3\u7801\u8fdb\u884c\u7f29\u8fdb\u683c\u5f0f\u5316\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform fmt\r\n<\/code><\/pre>\n<p>\u6b64\u5916\uff0c\u5f53\u6267\u884cterraform validate\u547d\u4ee4\u65f6\uff0c\u5982\u679c\u51fa\u73b0\u95ee\u9898\uff0c\u5b83\u4f1a\u663e\u793a\u6587\u4ef6\u540d\u548c\u884c\u6570\u3002<br \/>\n\u5982\u679c\u6ca1\u6709\u95ee\u9898\uff0c\u5219\u663e\u793a\u5982\u4e0b\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform validate\r\nSuccess! The configuration is valid.\r\n<\/code><\/pre>\n<h2>\u5efa\u7acb\u57fa\u7840\u8bbe\u65bd<\/h2>\n<p>\u4f7f\u7528terraform apply\u547d\u4ee4\u5e94\u7528\u914d\u7f6e\u3002<br \/>\n\u203b \u9700\u8981\u7b49\u5f85Terraform\u53ef\u4f7f\u7528EC2\u5b9e\u4f8b\uff0c\u6267\u884c\u53ef\u80fd\u9700\u8981\u51e0\u5206\u949f\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply\r\nTerraform used the selected providers to generate the following execution plan.\r\nResource actions are indicated with the following symbols:\r\n  + create\r\n\r\nTerraform will perform the following actions:\r\n\r\n   aws_instance.app_server will be created\r\n  + resource \"aws_instance\" \"app_server\" {\r\n      + ami                          = \"ami-830c94e3\"\r\n      + arn                          = (known after apply)\r\n\r\n##....\u7701\u7565\r\n\r\nPlan: 1 to add, 0 to change, 0 to destroy.\r\n\r\nDo you want to perform these actions?\r\n  Terraform will perform the actions described above.\r\n  Only 'yes' will be accepted to approve.\r\n\r\n  Enter a value:\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6784\u5efa\u5185\u5bb9\u6ca1\u6709\u95ee\u9898\uff0c\u5219\u5728&#8221;\u8f93\u5165\u4e00\u4e2a\u503c\uff1a&#8221;\u5904\u8f93\u5165&#8221;\u662f&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code>  Enter a value: yes\r\n\r\naws_instance.app_server: Creating...\r\naws_instance.app_server: Still creating... [10s elapsed]\r\naws_instance.app_server: Still creating... [20s elapsed]\r\naws_instance.app_server: Still creating... [30s elapsed]\r\naws_instance.app_server: Still creating... [40s elapsed]\r\naws_instance.app_server: Still creating... [50s elapsed]\r\naws_instance.app_server: Creation complete after 54s [id=i-*****************]\r\n\r\nApply complete! Resources: 1 added, 0 changed, 0 destroyed.\r\n<\/code><\/pre>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d857c913a08637a6b945c\/65-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-11-30 19.53.40.png\" \/><\/div>\n<p>\u5f53\u6211\u5728AWS\u63a7\u5236\u53f0\u4e0a\u786e\u8ba4\u65f6\uff0c\u53d1\u73b0\u5b83\u88ab\u6210\u529f\u6784\u5efa\u4e86\uff01<\/p>\n<h2>\u786e\u8ba4\u72b6\u6001<\/h2>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528terraform show\u547d\u4ee4\u6765\u67e5\u770b\u5f53\u524d\u57fa\u7840\u8bbe\u65bd\u7684\u72b6\u6001\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform show\r\n# aws_instance.app_server:\r\nresource \"aws_instance\" \"app_server\" {\r\n    ami                                  = \"ami-830c94e3\"\r\n    arn                                  = \"arn:aws:ec2:us-west-2:************:instance\/i-*****************\"\r\n    associate_public_ip_address          = true\r\n    availability_zone                    = \"us-west-2c\"\r\n    cpu_core_count                       = 1\r\n    cpu_threads_per_core                 = 1\r\n    disable_api_stop                     = false\r\n    disable_api_termination              = false\r\n    ebs_optimized                        = false\r\n    get_password_data                    = false\r\n    hibernation                          = false\r\n    id                                   = \"i-*****************\"\r\n    instance_initiated_shutdown_behavior = \"stop\"\r\n    instance_state                       = \"running\"\r\n    instance_type                        = \"t2.micro\"\r\n    ipv6_address_count                   = 0\r\n##....\u7701\u7565\r\n<\/code><\/pre>\n<h1>\u4fee\u6539\u57fa\u7840\u8bbe\u65bd<\/h1>\n<p>\u5bf9\u5df2\u6784\u5efa\u7684\u8d44\u6e90\u8fdb\u884c\u4fee\u6539\u3002<br \/>\n\u5728\u8fd9\u91cc\u6211\u4eec\u5c06\u6539\u53d8\u5b9e\u4f8b\u7684AMI\u3002<br \/>\n\u8be6\u7ec6\u6765\u8bf4\uff0c\u5728\u901a\u8fc7AWS\u542f\u52a8\u5b9e\u4f8b\u540e\uff0c\u65e0\u6cd5\u66f4\u6539AMI\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u9500\u6bc1\u5148\u524d\u542f\u52a8\u7684\u5b9e\u4f8b\u5e76\u91cd\u65b0\u542f\u52a8\u65b0\u7684\u5b9e\u4f8b\uff01\uff08\u8fd9\u4e9b\u90fd\u5c06\u7531Terraform\u81ea\u52a8\u5b8c\u6210\uff01\uff09<br \/>\n\u5728main.tf\u7684resource\u5757\u4e2d\uff0c\u5c06\u5f53\u524d\u7684AMI ID\u66ff\u6362\u4e3a\u5176\u4ed6\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_instance\"<\/span> <span class=\"s2\">\"app_server\"<\/span> <span class=\"p\">{<\/span>\r\n<span class=\"hdl\"><span class=\"o\">- <\/span>  <span class=\"nx\">ami<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-830c94e3\"<\/span>  <span class=\"err\">\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000\u3000<\/span>     <span class=\"c1\">#\u524a\u9664<\/span>\r\n<\/span><span class=\"hil\"><span class=\"o\">+ <\/span>  <span class=\"nx\">ami<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-08d70e59c07c61a3a\"<\/span><span class=\"err\">\u3000\u3000\u3000\u3000\u3000<\/span><span class=\"c1\">#\u8ffd\u52a0<\/span>\r\n<\/span>    <span class=\"nx\">instance_type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u5728\u8fd9\u6b21\u53d8\u66f4\u4e2d\uff0cAMI\u5c06\u4eceUbuntu 12.04\u66f4\u6539\u4e3aUbuntu 16.04\u3002<\/p>\n<h2>\u5e94\u7528\u4fee\u6539<\/h2>\n<p>\u5982\u679c\u66f4\u6539\u4e86\u8bbe\u7f6e\uff0c\u8bf7\u91cd\u65b0\u6267\u884cterraform apply\uff0c\u4ee5\u786e\u8ba4\u66f4\u6539\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u95ee\u9898\uff0c\u8bf7\u56de\u7b54&#8221;Enter a value:&#8221;\u5e76\u8f93\u5165&#8221;yes&#8221;\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: yes\r\n<\/code><\/pre>\n<p>\u6839\u636e\u6267\u884c\u8ba1\u5212\uff0cTerraform\u5df2\u7ecf\u9500\u6bc1\u4e86\u4e4b\u524d\u521b\u5efa\u7684\u73b0\u6709\u5b9e\u4f8b\u5e76\u542f\u52a8\u4e86\u65b0\u5b9e\u4f8b\u3002<br \/>\n\u8fd9\u6837\u5c31\u4f7f\u53d8\u66f4\u751f\u6548\u4e86\u3002<\/p>\n<h1>\u6467\u6bc1\u57fa\u7840\u8bbe\u65bd<\/h1>\n<p>\u5f53\u4e0d\u518d\u9700\u8981\u57fa\u7840\u8bbe\u65bd\u65f6\uff0c\u4e3a\u4e86\u964d\u4f4e\u5b89\u5168\u98ce\u9669\u5e76\u51cf\u5c11\u6210\u672c\uff0c\u6709\u4e00\u9879\u9700\u8981\u5e9f\u5f03\u7684\u4e8b\u9879\u3002<\/p>\n<p>\u9664\u4e86\u6784\u5efa\u548c\u4fee\u6539\u57fa\u7840\u8bbe\u65bd\u4e4b\u5916\uff0cTerraform\u8fd8\u53ef\u4ee5\u9500\u6bc1\u548c\u91cd\u65b0\u521b\u5efa\u53d7\u7ba1\u7406\u7684\u57fa\u7840\u8bbe\u65bd\u3002<\/p>\n<h2>\u653e\u5f03<\/h2>\n<p>\u8bf7\u653e\u5fc3\uff0cTerraform destroy\u547d\u4ee4\u5c06\u7ec8\u6b62Terraform\u7ba1\u7406\u7684\u8d44\u6e90\u3002\u4e0d\u4f1a\u7834\u574f\u4e0e\u672c\u6b21\u521b\u5efa\u7684Terraform\u9879\u76ee\u7ba1\u7406\u65e0\u5173\u7684\u8d44\u6e90\u3002<\/p>\n<p>\u9500\u6bc1\u521b\u5efa\u7684\u8d44\u6e90\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform destroy\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u95ee\u9898\uff0c\u8bf7\u5728\u201c\u8f93\u5165\u4e00\u4e2a\u503c:\u201d\u540e\u9762\u56de\u7b54\u201c\u662f\u201d\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: yes\r\n<\/code><\/pre>\n<p>Terraform\u5c06\u6309\u9002\u5f53\u7684\u987a\u5e8f\u9500\u6bc1\u8003\u8651\u4f9d\u8d56\u5173\u7cfb\u7684\u591a\u4e2a\u8d44\u6e90\uff0c\u4ece\u800c\u9500\u6bc1\u4e86\u672c\u6b21\u521b\u5efa\u7684\u8d44\u6e90\uff01<\/p>\n<h1>\u5b9a\u4e49\u8f93\u5165\u53d8\u91cf<\/h1>\n<p>\u5728\u8fd9\u4e2a\u914d\u7f6e\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e86\u786c\u7f16\u7801\u7684\u503c\u3002<br \/>\n\u5728Terraform\u7684\u914d\u7f6e\u4e2d\uff0c\u53ef\u4ee5\u5305\u542b\u53d8\u91cf\uff0c\u8fd9\u6837\u53ef\u4ee5\u4f7f\u5176\u66f4\u52a0\u7075\u6d3b\u3002<\/p>\n<h2>\u7528\u53d8\u91cf\u8bbe\u7f6e\u5b9e\u4f8b\u540d\u79f0<\/h2>\n<p>\u5728learn-terraform-aws-instance\u6587\u4ef6\u5939\u4e2d\u65b0\u5efa\u4e00\u4e2a\u540d\u4e3avariables.tf\u7684\u6587\u4ef6\uff0c\u7528\u4e8e\u5b9a\u4e49\u5b9e\u4f8b\u540d\u79f0\u7684\u53d8\u91cf\u3002<\/p>\n<pre class=\"post-pre\"><code>$ touch variables.tf\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u5b9a\u4e49\u65b0\u53d8\u91cfinstance_name\u7684\u4ee3\u7801\u5757\u3002<br \/>\n\u6253\u5f00variables.tf\u6587\u4ef6\uff0c\u5c06\u4ee5\u4e0b\u914d\u7f6e\u7c98\u8d34\u5e76\u4fdd\u5b58\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">variable<\/span> <span class=\"s2\">\"instance_name\"<\/span> <span class=\"p\">{<\/span>\r\n <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Value of the Name tag for the EC2 instance\"<\/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\">\"Tamagotoji\"<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<p>\u9664\u975e\u53e6\u5916\u58f0\u660einstance_name\u7684\u503c\uff0c\u5426\u5219\u4e0a\u8ff0\u5185\u5bb9\u9ed8\u8ba4\u4e3aTamagotoji\u3002<\/p>\n<p>\u6253\u5f00main.tf\u6587\u4ef6\uff0c\u6839\u636e\u4ee5\u4e0b\u66f4\u6539\u6765\u4f7f\u7528\u65b0\u53d8\u91cf\uff0c\u5e76\u4fdd\u5b58\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">resource<\/span> <span class=\"s2\">\"aws_instance\"<\/span> <span class=\"s2\">\"app_server\"<\/span> <span class=\"p\">{<\/span>\r\n <span class=\"nx\">ami<\/span>           <span class=\"p\">=<\/span> <span class=\"s2\">\"ami-08d70e59c07c61a3a\"<\/span>\r\n <span class=\"nx\">instance_type<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"t2.micro\"<\/span>\r\n <span class=\"nx\">tags<\/span> <span class=\"p\">=<\/span> <span class=\"p\">{<\/span>\r\n<span class=\"hdl\"><span class=\"o\">- <\/span><span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ExampleAppServerInstance\"<\/span>  <span class=\"c1\">#\u524a\u9664<\/span>\r\n<\/span><span class=\"hil\"><span class=\"o\">+ <\/span><span class=\"nx\">Name<\/span> <span class=\"p\">=<\/span> <span class=\"kd\">var<\/span><span class=\"p\">.<\/span><span class=\"nx\">instance_name<\/span>           <span class=\"c1\">#\u8ffd\u52a0<\/span>\r\n<\/span> <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u5e94\u7528\u914d\u7f6e<\/h2>\n<p>\u5e94\u7528\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u95ee\u9898\uff0c\u8bf7\u56de\u7b54&#8221;Yes&#8221;\u5e76\u8f93\u5165\u4e00\u4e2a\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: yes\r\n<\/code><\/pre>\n<p>\u4f7f\u7528-var\u9009\u9879\u4f20\u9012\u53d8\u91cf\u5e76\u8986\u76d6\u9ed8\u8ba4\u5b9e\u4f8b\u540d\u79f0\uff0c\u4ee5\u4fbf\u518d\u6b21\u5e94\u7528\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply -var \"instance_name=Moffunnya\"\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u95ee\u9898\uff0c\u8bf7\u8f93\u5165\u4e00\u4e2a\u503c\uff1a\u56de\u7b54\u201c\u662f\u201d\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: yes\r\n<\/code><\/pre>\n<p>\u73b0\u5728\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7variables.tf\u6587\u4ef6\u4e2d\u7684\u53d8\u91cf\u6765\u8f93\u5165\u503c\u4e86\uff01<br \/>\n\u203b\u5373\u4f7f\u5728\u547d\u4ee4\u884c\u4e2d\u8bbe\u7f6e\u4e86\u53d8\u91cf\uff0c\u4e5f\u4e0d\u4f1a\u4fdd\u5b58\u5728variables.tf\u6216main.tf\u7b49\u914d\u7f6e\u6587\u4ef6\u4e2d\u3002<\/p>\n<h1>\u5728\u547d\u4ee4\u884c\u8f93\u51fa\u6240\u9700\u7684\u4fe1\u606f\u3002<\/h1>\n<p>\u60a8\u53ef\u4ee5\u5728\u547d\u4ee4\u884c\u4e2d\u914d\u7f6e\uff0c\u4ee5\u8f93\u51fa\u5173\u4e8e\u6240\u9700\u7684\u6784\u5efa\u57fa\u7840\u8bbe\u65bd\u73af\u5883\u7684\u4fe1\u606f\u3002<\/p>\n<h2>\u8bbe\u7f6e\u7528\u4e8e\u8f93\u51fa\u7684EC2\u5b9e\u4f8b<\/h2>\n<p>\u5728learn-terraform-aws-instance\u76ee\u5f55\u4e2d\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aoutputs.tf\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>$ touch output.tf\r\n<\/code><\/pre>\n<p>\u5728outputs.tf\u4e2d\u7c98\u8d34\u4ee5\u4e0b\u8bbe\u7f6e\uff0c\u5e76\u5b9a\u4e49EC2\u5b9e\u4f8b\u7684ID\u548cIP\u5730\u5740\u7684\u8f93\u51fa\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">output<\/span> <span class=\"s2\">\"instance_id\"<\/span> <span class=\"p\">{<\/span>\r\n <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"ID of the EC2 instance\"<\/span>\r\n <span class=\"nx\">value<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">aws_instance<\/span><span class=\"p\">.<\/span><span class=\"nx\">app_server<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span>\r\n<span class=\"p\">}<\/span>\r\n\r\n<span class=\"k\">output<\/span> <span class=\"s2\">\"instance_public_ip\"<\/span> <span class=\"p\">{<\/span>\r\n <span class=\"nx\">description<\/span> <span class=\"p\">=<\/span> <span class=\"s2\">\"Public IP address of the EC2 instance\"<\/span>\r\n <span class=\"nx\">value<\/span>       <span class=\"p\">=<\/span> <span class=\"nx\">aws_instance<\/span><span class=\"p\">.<\/span><span class=\"nx\">app_server<\/span><span class=\"p\">.<\/span><span class=\"nx\">public_ip<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u786e\u8ba4\u548c\u9002\u5e94\u8f93\u51fa\u503c<\/h2>\n<p>\u901a\u8fc7 terraform apply \u547d\u4ee4\u6765\u5e94\u7528\u914d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform apply\r\n<\/code><\/pre>\n<p>\u5982\u679c\u6ca1\u6709\u95ee\u9898\u7684\u8bdd\uff0c\u8bf7\u56de\u7b54\u201cEnter a value:\u201d\u4e3a\u201c\u662f\u201d\u3002<\/p>\n<pre class=\"post-pre\"><code>Enter a value: yes\r\n<\/code><\/pre>\n<p>\u5f53\u5e94\u7528\u914d\u7f6e\u540e\uff0cTerraform\u4f1a\u5c06\u8f93\u51fa\u503c\u663e\u793a\u5728\u5c4f\u5e55\u4e0a\u3002<br \/>\n\u60a8\u53ef\u4ee5\u4f7f\u7528terraform output\u547d\u4ee4\u67e5\u8be2\u5df2\u914d\u7f6e\u4e3a\u8f93\u51fa\u7684\u503c\u3002<\/p>\n<pre class=\"post-pre\"><code>$ terraform output\r\ninstance_id = \"i-*****************\"\r\ninstance_public_ip = \"**.**.**.**\"\r\n<\/code><\/pre>\n<p>\u60a8\u53ef\u4ee5\u4f7f\u7528\u547d\u4ee4\u884c\u6765\u786e\u8ba4\u60a8\u5728output.tf\u4e2d\u8bbe\u7f6e\u7684\u8f93\u51fa\u503c\uff01<\/p>\n<h1>\u6700\u540e<\/h1>\n<p>\u8f9b\u82e6\u4e86\uff01\u8fd9\u6b21\u6211\u4eec\u4ecb\u7ecd\u4e86\u6709\u5173&#8221;Terraform&#8221;\u7684\u5185\u5bb9\uff0c\u5305\u62ec\u5b89\u88c5\u3001\u57fa\u7840\u8bbe\u65bd\u7684\u6784\u5efa\u3001\u66f4\u6539\u3001\u9500\u6bc1\u3001\u53d8\u91cf\u5b9a\u4e49\u548c\u8f93\u51fa\u503c\u8bbe\u7f6e\u3002\u5982\u679c\u4f60\u4e4b\u524d\u4e00\u76f4\u5728\u63a7\u5236\u53f0\u4e0a\u6784\u5efa\u57fa\u7840\u8bbe\u65bd\uff0c\u60f3\u5fc5\u4f60\u4e5f\u548c\u6211\u4e00\u6837\u611f\u5230\u975e\u5e38\u6fc0\u52a8\u5427\uff01\uff01\uff01<\/p>\n<p>\u6211\u8ba4\u4e3a\u5728\u8fdb\u884c\u7c7b\u4f3c\u73af\u5883\u914d\u7f6e\u7684\u573a\u666f\u65f6\u5f88\u5e38\u89c1\uff0c\u5982\u679c\u4f60\u62e5\u6709\u4e00\u4e9bTerraform\u7684\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6\uff0c\u53ef\u80fd\u5728\u610f\u60f3\u4e0d\u5230\u7684\u5730\u65b9\u4f1a\u6d3e\u4e0a\u7528\u573a\uff01\u8bf7\u52a1\u5fc5\u5c1d\u8bd5\u5404\u79cd\u4e0d\u540c\u7684\u914d\u7f6e\uff01<\/p>\n<p>CYBIRD 2022\u5e74\u7684\u7b2c9\u5929\u8282\u76ee\u662f\u7531@ayany0_zzZ\u5448\u73b0\u7684\u300a\u4f7f\u7528AR.js\u5728\u5bb6\u4e2d\u53ec\u5524\u6050\u9f99\u300b\uff01\u8bf7\u52a1\u5fc5\u89c2\u770b\uff01\uff01<\/p>\n<h1>\u8bf7\u53c2\u8003\u4ee5\u4e0b\u7f51\u7ad9<\/h1>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u4f60\u597d\uff01 \u6211\u662fCYBIRD Advent Calendar 2022\u7684\u7b2c8\u5929\u8d1f\u8d23\u4eba\uff0c\u6211\u662f\u201c\u3082\u3063\u3075\u3093\u306b\u3083\u201d\u3002 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-48488","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>\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd - 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\/\u901a\u8fc7\u4f7f\u7528terraform\u8fdb\u884caws\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u4f60\u597d\uff01 \u6211\u662fCYBIRD Advent Calendar 2022\u7684\u7b2c8\u5929\u8d1f\u8d23\u4eba\uff0c\u6211\u662f\u201c\u3082\u3063\u3075\u3093\u306b\u3083\u201d\u3002 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u901a\u8fc7\u4f7f\u7528terraform\u8fdb\u884caws\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-17T21:52:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-03T20:49:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d857c913a08637a6b945c\/38-0.png\" \/>\n<meta name=\"author\" content=\"\u6e05, \u5b87\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u5b87\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \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\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/\",\"name\":\"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-04-17T21:52:42+00:00\",\"dateModified\":\"2024-05-03T20:49:55+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\"}]},{\"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e\",\"name\":\"\u6e05, \u5b87\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u5b87\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd - 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\/\u901a\u8fc7\u4f7f\u7528terraform\u8fdb\u884caws\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\/","og_locale":"zh_CN","og_type":"article","og_title":"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd","og_description":"\u9996\u5148 \u4f60\u597d\uff01 \u6211\u662fCYBIRD Advent Calendar 2022\u7684\u7b2c8\u5929\u8d1f\u8d23\u4eba\uff0c\u6211\u662f\u201c\u3082\u3063\u3075\u3093\u306b\u3083\u201d\u3002 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u901a\u8fc7\u4f7f\u7528terraform\u8fdb\u884caws\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-04-17T21:52:42+00:00","article_modified_time":"2024-05-03T20:49:55+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d857c913a08637a6b945c\/38-0.png"}],"author":"\u6e05, \u5b87","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u5b87","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/","name":"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-04-17T21:52:42+00:00","dateModified":"2024-05-03T20:49:55+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/1a6ecd3d914d22a5ac32791ffc1fbd8e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u901a\u8fc7\u4f7f\u7528Terraform\u8fdb\u884cAWS\u73af\u5883\u7684\u5efa\u8bbe\u4ecb\u7ecd"}]},{"@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\/1a6ecd3d914d22a5ac32791ffc1fbd8e","name":"\u6e05, \u5b87","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4b2016c18459a605fc469c7566608f5686491baa112d0871ee613f61b7210565?s=96&d=mm&r=g","caption":"\u6e05, \u5b87"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyu\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e9%80%9a%e8%bf%87%e4%bd%bf%e7%94%a8terraform%e8%bf%9b%e8%a1%8caws%e7%8e%af%e5%a2%83%e7%9a%84%e5%bb%ba%e8%ae%be%e4%bb%8b%e7%bb%8d\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48488","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=48488"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48488\/revisions"}],"predecessor-version":[{"id":96215,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/48488\/revisions\/96215"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=48488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=48488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=48488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}