{"id":2289,"date":"2025-03-24T08:47:47","date_gmt":"2025-03-23T23:47:47","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2289"},"modified":"2025-03-24T08:48:11","modified_gmt":"2025-03-23T23:48:11","slug":"%e3%80%90%e4%bf%9d%e5%ae%88%e6%80%a7%e6%8a%9c%e7%be%a4%e3%80%91terraform-%e5%a4%89%e6%95%b0%e3%81%ae%e6%b1%ba%e5%ae%9a%e7%89%88%ef%bc%81%e5%9f%ba%e7%a4%8e%e3%81%8b%e3%82%89%e5%ae%9f%e8%b7%b5%e3%81%be","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2289","title":{"rendered":"\u3010\u4fdd\u5b88\u6027\u629c\u7fa4\u3011Terraform \u5909\u6570\u306e\u6c7a\u5b9a\u7248\uff01\u57fa\u790e\u304b\u3089\u5b9f\u8df5\u307e\u3067\uff17\u3064\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9"},"content":{"rendered":"\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"\u76ee\u6b21\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Terraform \u5909\u6570\u3068\u306f\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">\u5909\u6570\u5b9a\u7fa9\u306e\u57fa\u672c\u7684\u306a\u66f8\u304d\u65b9\u3068\u578b\u306e\u6307\u5b9a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-2\">\u306a\u305cTerraform\u3067\u5909\u6570\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b\u306e\u304b<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-3\">Terraform \u5909\u6570\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u5fb9\u5e95\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-4\">\u5909\u6570\u306e\u5b9a\u7fa9\u3068\u53c2\u7167\u306e\u5177\u4f53\u7684\u306a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-5\">\u78ba\u5b9f\u306a\u5024\u306e\u8a2d\u5b9a\u3068\u4e0a\u66f8\u304d\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-6\">\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u306e\u5229\u7528\u65b9\u6cd5<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-7\">\u5b9f\u8df5\u7684\u306a\u5909\u6570\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-8\">\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u5206\u5272\u3068\u7ba1\u7406\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-9\">\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u5024\u306e\u5207\u308a\u66ff\u3048\u65b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-10\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u6271\u3044\u65b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-11\">7\u3064\u306eTerraform Variable\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-12\">\u547d\u540d\u898f\u5247\u306e\u7d71\u4e00\u306b\u3088\u308b\u53ef\u8aad\u6027\u306e\u5411\u4e0a<\/a>      <\/li>      <li>        <a href=\"#i-13\">\u578b\u4fdd\u7559\u306b\u3088\u308b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u306e\u9632\u6b62<\/a>      <\/li>      <li>        <a href=\"#i-14\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308b\u5024\u306e\u691c\u8a3c<\/a>      <\/li>      <li>        <a href=\"#i-15\">\u5909\u6570\u306e\u30b0\u30eb\u30fc\u30d7\u5316\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u5316<\/a>      <\/li>      <li>        <a href=\"#i-16\">\u74b0\u5883\u5225\u306e\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-17\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u6a5f\u5bc6\u60c5\u5831\u306e\u6271\u3044<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-18\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4f5c\u6210\u306b\u3088\u308b\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-19\">\u3088\u304f\u3042\u308b\u30c8\u30e9\u30d6\u30eb\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-20\">\u5909\u6570\u306e\u5024\u304c\u6b63\u3057\u304f\u6e21\u3055\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-21\">\u30bf\u30a4\u30d7\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-22\">\u30e2\u30b8\u30e5\u30fc\u30eb\u9593\u306e\u5909\u6570\u53d7\u3051\u6e21\u3057\u554f\u984c\u3068\u5bfe\u7b56<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-23\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-24\">\u672c\u756a\u30fb\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a\u5024\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-25\">AWS \u30ea\u30bd\u30fc\u30b9\u306e\u67d4\u8edf\u306a\u69cb\u6210\u7ba1\u7406<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-26\">\u30c1\u30fc\u30e0\u958b\u767a\u3067\u306e\u5909\u6570\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      <a href=\"#\" class=\"sgb-toc-button js-toc-button\" rel=\"nofollow\" data-open-dialog=\"true\"><i class=\"fa fa-list\"><\/i><span class=\"sgb-toc-button__text\">\u76ee\u6b21\u3078<\/span><\/a>\n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Terraform \u5909\u6570\u3068\u306f\uff1f\u521d\u5fc3\u8005\u306b\u3082\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac<\/h2>\n\n\n\n<p>Terraform\u3067\u52b9\u7387\u7684\u306a\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u6b20\u304b\u305b\u306a\u3044\u6a5f\u80fd\u304c\u300c\u5909\u6570\uff08Variable\uff09\u300d\u3067\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001Terraform\u521d\u5fc3\u8005\u306e\u65b9\u306b\u3082\u5206\u304b\u308a\u3084\u3059\u304f\u3001\u5909\u6570\u306e\u57fa\u672c\u304b\u3089\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9\u307e\u3067\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">\u5909\u6570\u5b9a\u7fa9\u306e\u57fa\u672c\u7684\u306a\u66f8\u304d\u65b9\u3068\u578b\u306e\u6307\u5b9a\u65b9\u6cd5<\/h3>\n\n\n\n<p>Terraform\u5909\u6570\u306f\u3001\u30a4\u30f3\u30d5\u30e9\u306e\u30b3\u30fc\u30c9\u5316\uff08IaC\uff09\u3092\u3088\u308a\u67d4\u8edf\u304b\u3064\u518d\u5229\u7528\u53ef\u80fd\u306b\u3059\u308b\u91cd\u8981\u306a\u8981\u7d20\u3067\u3059\u3002\u57fa\u672c\u7684\u306a\u5909\u6570\u306e\u5b9a\u7fa9\u306f\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5f62\u5f0f\u3067\u884c\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u57fa\u672c\u7684\u306a\u5909\u6570\u5b9a\u7fa9\nvariable \"instance_type\" {\n  type        = string\n  default     = \"t2.micro\"\n  description = \"EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30bf\u30a4\u30d7\"\n}\n\n# \u6570\u5024\u578b\u306e\u5909\u6570\nvariable \"instance_count\" {\n  type        = number\n  default     = 1\n  description = \"\u8d77\u52d5\u3059\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u6570\"\n}\n\n# \u30ea\u30b9\u30c8\u578b\u306e\u5909\u6570\nvariable \"availability_zones\" {\n  type        = list(string)\n  default     = [\"ap-northeast-1a\", \"ap-northeast-1c\"]\n  description = \"\u4f7f\u7528\u3059\u308bAZ\u306e\u30ea\u30b9\u30c8\"\n}\n\n# \u30de\u30c3\u30d7\u578b\u306e\u5909\u6570\nvariable \"instance_tags\" {\n  type = map(string)\n  default = {\n    Environment = \"development\"\n    Project     = \"terraform-demo\"\n  }\n  description = \"\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306b\u4ed8\u4e0e\u3059\u308b\u30bf\u30b0\"\n}<\/pre>\n\n\n\n<p>Terraform\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u4e3b\u306a\u5909\u6570\u306e\u578b\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n\n\n<div id=\"id-9be8e76d-15dc-4101-afe6-591046bf7e6b\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u578b\u540d<\/th><th>\u8aac\u660e<\/th><th>\u4f7f\u7528\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>string<\/td><td>\u6587\u5b57\u5217\u578b<\/td><td>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\u3001\u30ea\u30fc\u30b8\u30e7\u30f3\u540d\u306a\u3069<\/td><\/tr><tr><td>number<\/td><td>\u6570\u5024\u578b<\/td><td>\u30dd\u30fc\u30c8\u756a\u53f7\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570\u306a\u3069<\/td><\/tr><tr><td>bool<\/td><td>\u771f\u507d\u5024\u578b<\/td><td>\u6a5f\u80fd\u306eON\/OFF\u5236\u5fa1\u306a\u3069<\/td><\/tr><tr><td>list<\/td><td>\u30ea\u30b9\u30c8\u578b<\/td><td>\u30b5\u30d6\u30cd\u30c3\u30c8ID\u306e\u30ea\u30b9\u30c8\u3001AZ\u306e\u30ea\u30b9\u30c8\u306a\u3069<\/td><\/tr><tr><td>map<\/td><td>\u30de\u30c3\u30d7\u578b<\/td><td>\u30bf\u30b0\u3001\u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\u306a\u3069<\/td><\/tr><tr><td>object<\/td><td>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u578b<\/td><td>\u8907\u5408\u7684\u306a\u8a2d\u5b9a\u5024\u306a\u3069<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">\u306a\u305cTerraform\u3067\u5909\u6570\u3092\u4f7f\u3046\u5fc5\u8981\u304c\u3042\u308b\u306e\u304b<\/h3>\n\n\n\n<p>Terraform\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u4e3b\u306a\u30e1\u30ea\u30c3\u30c8\u306f\u4ee5\u4e0b\u306e4\u3064\u3067\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30b3\u30fc\u30c9\u306e\u518d\u5229\u7528\u6027\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u540c\u3058\u30b3\u30fc\u30c9\u3092\u7570\u306a\u308b\u74b0\u5883\uff08\u958b\u767a\u30fb\u691c\u8a3c\u30fb\u672c\u756a\uff09\u3067\u4f7f\u3044\u56de\u305b\u308b<\/li>\n\n\n\n<li>\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u5024\u3060\u3051\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u3067\u67d4\u8edf\u306a\u5bfe\u5fdc\u304c\u53ef\u80fd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u5024\u3092\u4e00\u7b87\u6240\u3067\u7ba1\u7406\u3067\u304d\u308b<\/li>\n\n\n\n<li>\u5909\u66f4\u304c\u5fc5\u8981\u306a\u5834\u5408\u3001\u5909\u6570\u306e\u5024\u3060\u3051\u3092\u4fee\u6b63\u3059\u308c\u3070\u826f\u3044<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u5411\u4e0a<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6a5f\u5bc6\u60c5\u5831\u3092\u5909\u6570\u3068\u3057\u3066\u5916\u90e8\u7ba1\u7406\u3067\u304d\u308b<\/li>\n\n\n\n<li>GitHub\u306a\u3069\u3067\u306e\u30bd\u30fc\u30b9\u7ba1\u7406\u6642\u306b\u30bb\u30ad\u30e5\u30a2\u306a\u904b\u7528\u304c\u53ef\u80fd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c1\u30fc\u30e0\u958b\u767a\u306e\u52b9\u7387\u5316<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8a2d\u5b9a\u5024\u306e\u6a19\u6e96\u5316\u304c\u5bb9\u6613<\/li>\n\n\n\n<li>\u30ec\u30d3\u30e5\u30fc\u3084\u30c7\u30d0\u30c3\u30b0\u304c\u52b9\u7387\u5316\u3055\u308c\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u5f97\u3089\u308c\u308b\u5177\u4f53\u7684\u306a\u30e1\u30ea\u30c3\u30c8\u3092\u793a\u3059\u4f8b\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5909\u6570\u3092\u4f7f\u7528\u3057\u306a\u3044\u5834\u5408\uff08\u30cf\u30fc\u30c9\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff09\nresource \"aws_instance\" \"example\" {\n  ami           = \"ami-0123456789abcdef0\"\n  instance_type = \"t2.micro\"\n  tags = {\n    Name = \"production-server\"\n  }\n}\n\n# \u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\nresource \"aws_instance\" \"example\" {\n  ami           = var.ami_id\n  instance_type = var.instance_type\n  tags          = var.instance_tags\n}<\/pre>\n\n\n\n<p>\u3053\u306e\u4f8b\u304b\u3089\u308f\u304b\u308b\u3088\u3046\u306b\u3001\u5909\u6570\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>AMI ID\u3084\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\u3092\u74b0\u5883\u306b\u5fdc\u3058\u3066\u67d4\u8edf\u306b\u5909\u66f4\u53ef\u80fd<\/li>\n\n\n\n<li>\u30bf\u30b0\u306a\u3069\u306e\u8a2d\u5b9a\u3092\u4e00\u5143\u7ba1\u7406\u3067\u304d\u308b<\/li>\n\n\n\n<li>\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u304c\u5411\u4e0a\u3059\u308b<\/li>\n<\/ul>\n\n\n\n<p>\u5909\u6570\u3092\u9069\u5207\u306b\u4f7f\u7528\u3059\u308b\u3053\u3068\u3067\u3001Terraform\u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u3068\u904b\u7528\u52b9\u7387\u3092\u5927\u304d\u304f\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u5909\u6570\u3092\u5b9f\u969b\u306b\u3069\u306e\u3088\u3046\u306b\u4f7f\u7528\u3057\u3066\u3044\u304f\u306e\u304b\u3001\u3088\u308a\u8a73\u7d30\u306b\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\">Terraform \u5909\u6570\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u5fb9\u5e95\u89e3\u8aac<\/h2>\n\n\n\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Terraform\u5909\u6570\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u3044\u65b9\u306b\u3064\u3044\u3066\u3001\u5177\u4f53\u7684\u306a\u30b3\u30fc\u30c9\u4f8b\u3068\u3068\u3082\u306b\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-4\">\u5909\u6570\u306e\u5b9a\u7fa9\u3068\u53c2\u7167\u306e\u5177\u4f53\u7684\u306a\u65b9\u6cd5<\/h3>\n\n\n\n<p>Terraform\u3067\u306e\u5909\u6570\u306e\u5b9a\u7fa9\u3068\u53c2\u7167\u306b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u4e3b\u8981\u306a\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u306e\u5b9a\u7fa9\u5834\u6240<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># variables.tf - \u5909\u6570\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30eb\nvariable \"vpc_cidr\" {\n  type        = string\n  default     = \"10.0.0.0\/16\"\n  description = \"VPC\u306eCIDR\u30d6\u30ed\u30c3\u30af\"\n\n  # \u691c\u8a3c\u30eb\u30fc\u30eb\u306e\u8ffd\u52a0\n  validation {\n    condition     = can(cidrhost(var.vpc_cidr, 0))\n    error_message = \"\u7121\u52b9\u306aCIDR\u5f62\u5f0f\u3067\u3059\u3002\"\n  }\n}\n\n# \u305d\u306e\u4ed6\u306e\u5909\u6570\u5b9a\u7fa9\nvariable \"environment\" {\n  type    = string\n  default = \"development\"\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u306e\u53c2\u7167\u65b9\u6cd5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># main.tf - \u30e1\u30a4\u30f3\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\nresource \"aws_vpc\" \"main\" {\n  cidr_block = var.vpc_cidr  # \u5909\u6570\u3092\u53c2\u7167\n\n  tags = {\n    Name        = \"main-vpc\"\n    Environment = var.environment\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">\u78ba\u5b9f\u306a\u5024\u306e\u8a2d\u5b9a\u3068\u4e0a\u66f8\u304d\u306e\u30c6\u30af\u30cb\u30c3\u30af<\/h3>\n\n\n\n<p>Terraform\u3067\u306f\u3001\u5909\u6570\u306e\u5024\u3092\u8907\u6570\u306e\u65b9\u6cd5\u3067\u8a2d\u5b9a\u30fb\u4e0a\u66f8\u304d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u512a\u5148\u9806\u4f4d\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff08\u4e0a\u304c\u512a\u5148\uff09\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u5f15\u6570\uff08-var \u30aa\u30d7\u30b7\u30e7\u30f3\uff09<\/li>\n\n\n\n<li>\u5909\u6570\u5b9a\u7fa9\u30d5\u30a1\u30a4\u30eb\uff08-var-file \u30aa\u30d7\u30b7\u30e7\u30f3\uff09<\/li>\n\n\n\n<li>terraform.tfvars \u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>*.auto.tfvars \u30d5\u30a1\u30a4\u30eb<\/li>\n\n\n\n<li>\u74b0\u5883\u5909\u6570\uff08TF_VAR_\uff09<\/li>\n\n\n\n<li>\u30c7\u30d5\u30a9\u30eb\u30c8\u5024<\/li>\n<\/ol>\n\n\n\n<p>\u5177\u4f53\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u5f15\u6570\u3067\u306e\u6307\u5b9a\nterraform apply -var=\"environment=production\"\n\n# \u5909\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u4f7f\u7528\nterraform apply -var-file=\"prod.tfvars\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># prod.tfvars \u306e\u5185\u5bb9\nvpc_cidr     = \"172.16.0.0\/16\"\nenvironment  = \"production\"\ninstance_type = \"t3.medium\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">\u74b0\u5883\u5909\u6570\u3068\u3057\u3066\u306e\u5229\u7528\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528\u3057\u305f\u5909\u6570\u306e\u8a2d\u5b9a\u306f\u3001\u7279\u306b\u6a5f\u5bc6\u60c5\u5831\u306e\u6271\u3044\u306b\u9069\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u74b0\u5883\u5909\u6570\u3067\u306e\u8a2d\u5b9a\nexport TF_VAR_db_password=\"secure_password123\"\nexport TF_VAR_aws_access_key=\"AKIAXXXXXXXXXXXXXXXX\"<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># variables.tf \u3067\u306e\u5b9a\u7fa9\nvariable \"db_password\" {\n  type        = string\n  sensitive   = true  # \u6a5f\u5bc6\u60c5\u5831\u3068\u3057\u3066\u30de\u30fc\u30af\n  description = \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\"\n}\n\n# main.tf \u3067\u306e\u4f7f\u7528\nresource \"aws_db_instance\" \"example\" {\n  identifier     = \"example-db\"\n  engine         = \"mysql\"\n  instance_class = \"db.t3.micro\"\n  password       = var.db_password  # \u74b0\u5883\u5909\u6570\u304b\u3089\u53d6\u5f97\n}<\/pre>\n\n\n\n<p>\u5b9f\u8df5\u7684\u306aTips\uff1a<\/p>\n\n\n<div id=\"id-50b86518-4733-42f2-bf75-75e5b0053f17\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u4f7f\u7528\u30b7\u30fc\u30f3<\/th><th>\u63a8\u5968\u3055\u308c\u308b\u65b9\u6cd5<\/th><th>\u7406\u7531<\/th><\/tr><\/thead><tbody><tr><td>\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a<\/td><td>terraform.tfvars<\/td><td>\u30c1\u30fc\u30e0\u5185\u3067\u5171\u6709\u53ef\u80fd<\/td><\/tr><tr><td>\u672c\u756a\u74b0\u5883\u306e\u8a2d\u5b9a<\/td><td>-var-file \u30aa\u30d7\u30b7\u30e7\u30f3<\/td><td>\u74b0\u5883\u5225\u306b\u7ba1\u7406\u53ef\u80fd<\/td><\/tr><tr><td>\u6a5f\u5bc6\u60c5\u5831<\/td><td>\u74b0\u5883\u5909\u6570<\/td><td>\u30bb\u30ad\u30e5\u30a2\u306b\u7ba1\u7406\u53ef\u80fd<\/td><\/tr><tr><td>CI\/CD<\/td><td>-var \u30aa\u30d7\u30b7\u30e7\u30f3<\/td><td>\u81ea\u52d5\u5316\u306b\u9069\u3057\u3066\u3044\u308b<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u5909\u6570\u306e\u4f7f\u7528\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u660e\u78ba\u306a\u547d\u540d\u898f\u5247\u306e\u63a1\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   # \u826f\u3044\u4f8b\n   variable \"vpc_cidr_block\" { ... }\n\n   # \u907f\u3051\u308b\u3079\u304d\u4f8b\n   variable \"vcb\" { ... }<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u9069\u5207\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   variable \"instance_count\" {\n     type    = number\n     default = 1  # \u5b89\u5168\u306a\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\n   }<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u30eb\u30fc\u30eb\u306e\u6d3b\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">   variable \"environment\" {\n     type    = string\n     validation {\n       condition     = contains([\"dev\", \"staging\", \"prod\"], var.environment)\n       error_message = \"\u74b0\u5883\u306f dev, staging, prod \u306e\u3044\u305a\u308c\u304b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n     }\n   }<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u62bc\u3055\u3048\u308b\u3053\u3068\u3067\u3001\u3088\u308a\u52b9\u7387\u7684\u306aTerraform\u306e\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u5b9f\u8df5\u7684\u306a\u5909\u6570\u7ba1\u7406\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-7\">\u5b9f\u8df5\u7684\u306a\u5909\u6570\u7ba1\u7406\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<p>\u5b9f\u52d9\u3067Terraform\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u9069\u5207\u306a\u5909\u6570\u7ba1\u7406\u306f\u4fdd\u5b88\u6027\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u4e21\u9762\u3067\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u5909\u6570\u7ba1\u7406\u306e\u30c6\u30af\u30cb\u30c3\u30af\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u5206\u5272\u3068\u7ba1\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u5927\u898f\u6a21\u306a\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u3067\u306f\u3001\u5909\u6570\u306e\u6570\u304c\u5897\u52a0\u3057\u7ba1\u7406\u304c\u8907\u96d1\u306b\u306a\u308a\u304c\u3061\u3067\u3059\u3002\u52b9\u7387\u7684\u306a\u7ba1\u7406\u306e\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u69cb\u6210\u3092\u63a8\u5968\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">project\/\n\u251c\u2500\u2500 main.tf\n\u251c\u2500\u2500 variables.tf        # \u5909\u6570\u306e\u5b9a\u7fa9\n\u251c\u2500\u2500 terraform.tfvars    # \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\n\u251c\u2500\u2500 environments\/\n\u2502   \u251c\u2500\u2500 dev.tfvars     # \u958b\u767a\u74b0\u5883\u7528\n\u2502   \u251c\u2500\u2500 staging.tfvars # \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0\u74b0\u5883\u7528\n\u2502   \u2514\u2500\u2500 prod.tfvars    # \u672c\u756a\u74b0\u5883\u7528\n\u2514\u2500\u2500 modules\/\n    \u2514\u2500\u2500 vpc\/\n        \u251c\u2500\u2500 main.tf\n        \u2514\u2500\u2500 variables.tf<\/pre>\n\n\n\n<p>\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u306e\u5206\u5272\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># variables.tf - \u5909\u6570\u306e\u5b9a\u7fa9\nvariable \"vpc_config\" {\n  type = object({\n    cidr_block = string\n    name       = string\n    subnets    = map(object({\n      cidr_block = string\n      zone       = string\n    }))\n  })\n  description = \"VPC\u306e\u8a2d\u5b9a\"\n}\n\n# terraform.tfvars - \u30c7\u30d5\u30a9\u30eb\u30c8\u5024\nvpc_config = {\n  cidr_block = \"10.0.0.0\/16\"\n  name       = \"default-vpc\"\n  subnets = {\n    public-1 = {\n      cidr_block = \"10.0.1.0\/24\"\n      zone       = \"ap-northeast-1a\"\n    }\n    public-2 = {\n      cidr_block = \"10.0.2.0\/24\"\n      zone       = \"ap-northeast-1c\"\n    }\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-9\">\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u5024\u306e\u5207\u308a\u66ff\u3048\u65b9<\/h3>\n\n\n\n<p>\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u7d39\u4ecb\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u74b0\u5883\u5225\u306e\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u4f5c\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># environments\/dev.tfvars\nvpc_config = {\n  cidr_block = \"10.0.0.0\/16\"\n  name       = \"dev-vpc\"\n  subnets = {\n    public-1 = {\n      cidr_block = \"10.0.1.0\/24\"\n      zone       = \"ap-northeast-1a\"\n    }\n  }\n}\n\n# environments\/prod.tfvars\nvpc_config = {\n  cidr_block = \"172.16.0.0\/16\"\n  name       = \"prod-vpc\"\n  subnets = {\n    public-1 = {\n      cidr_block = \"172.16.1.0\/24\"\n      zone       = \"ap-northeast-1a\"\n    }\n    public-2 = {\n      cidr_block = \"172.16.2.0\/24\"\n      zone       = \"ap-northeast-1c\"\n    }\n  }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u74b0\u5883\u306e\u5207\u308a\u66ff\u3048\u65b9\u6cd5<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u958b\u767a\u74b0\u5883\u3078\u306e\u30c7\u30d7\u30ed\u30a4\nterraform plan -var-file=\"environments\/dev.tfvars\"\nterraform apply -var-file=\"environments\/dev.tfvars\"\n\n# \u672c\u756a\u74b0\u5883\u3078\u306e\u30c7\u30d7\u30ed\u30a4\nterraform plan -var-file=\"environments\/prod.tfvars\"\nterraform apply -var-file=\"environments\/prod.tfvars\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">\u6a5f\u5bc6\u60c5\u5831\u306e\u5b89\u5168\u306a\u6271\u3044\u65b9<\/h3>\n\n\n\n<p>\u6a5f\u5bc6\u60c5\u5831\u306e\u7ba1\u7406\u306f\u7279\u306b\u6ce8\u610f\u304c\u5fc5\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306b\u5b89\u5168\u306a\u7ba1\u7406\u65b9\u6cd5\u3092\u793a\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>AWS Systems Manager Parameter Store\u306e\u5229\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3068\u3057\u3066\u6a5f\u5bc6\u60c5\u5831\u3092\u53d6\u5f97\ndata \"aws_ssm_parameter\" \"db_password\" {\n  name = \"\/app\/database\/password\"\n}\n\n# \u5909\u6570\u5b9a\u7fa9\nvariable \"db_password\" {\n  type        = string\n  sensitive   = true  # \u6a5f\u5bc6\u60c5\u5831\u3068\u3057\u3066\u30de\u30fc\u30af\n  description = \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\"\n}\n\n# \u30ea\u30bd\u30fc\u30b9\u3067\u306e\u4f7f\u7528\nresource \"aws_db_instance\" \"main\" {\n  password = data.aws_ssm_parameter.db_password.value\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u74b0\u5883\u5909\u6570\u306e\u4f7f\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n# \u74b0\u5883\u5909\u6570\u8a2d\u5b9a\u30b9\u30af\u30ea\u30d7\u30c8\n\n# \u6a5f\u5bc6\u60c5\u5831\u306e\u8a2d\u5b9a\nexport TF_VAR_db_password=$(aws ssm get-parameter --name \"\/app\/database\/password\" --with-decryption --query Parameter.Value --output text)\nexport TF_VAR_api_key=$(aws ssm get-parameter --name \"\/app\/api\/key\" --with-decryption --query Parameter.Value --output text)\n\n# Terraform\u5b9f\u884c\nterraform apply -var-file=\"environments\/prod.tfvars\"<\/pre>\n\n\n\n<p>\u5909\u6570\u7ba1\u7406\u306b\u304a\u3051\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\uff1a<\/p>\n\n\n<div id=\"id-7f6f9374-8f00-4697-bc40-e3366db26ffc\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30c1\u30a7\u30c3\u30af\u9805\u76ee<\/th><th>\u8aac\u660e<\/th><th>\u63a8\u5968\u3055\u308c\u308b\u5bfe\u5fdc<\/th><\/tr><\/thead><tbody><tr><td>\u6a5f\u5bc6\u60c5\u5831\u306e\u5206\u96e2<\/td><td>\u30d1\u30b9\u30ef\u30fc\u30c9\u3084API\u30ad\u30fc\u306e\u7ba1\u7406<\/td><td>Parameter Store\u3084Secrets Manager\u306e\u4f7f\u7528<\/td><\/tr><tr><td>\u30a2\u30af\u30bb\u30b9\u5236\u5fa1<\/td><td>\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u3078\u306e\u30a2\u30af\u30bb\u30b9\u5236\u9650<\/td><td>Git\u306e\u30a2\u30af\u30bb\u30b9Fu\u5236\u5fa1\u3068gitignore\u306e\u9069\u5207\u306a\u8a2d\u5b9a<\/td><\/tr><tr><td>\u6697\u53f7\u5316<\/td><td>\u6a5f\u5bc6\u60c5\u5831\u306e\u6697\u53f7\u5316<\/td><td>KMS\u3084Vault\u4f7f\u7528<\/td><\/tr><tr><td>\u76e3\u67fb\u30ed\u30b0<\/td><td>\u5909\u6570\u30a2\u30af\u30bb\u30b9\u306e\u8a18\u9332<\/td><td>CloudTrail\u3068\u306e\u9023\u643a<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3053\u308c\u3089\u306e\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u5b89\u5168\u3067\u52b9\u7387\u7684\u306a\u5909\u6570\u7ba1\u7406\u304c\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u3089\u306b\u5177\u4f53\u7684\u306a\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-11\">7\u3064\u306eTerraform Variable\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h2>\n\n\n\n<p>\u5b9f\u52d9\u3067Terraform\u3092\u4f7f\u7528\u3059\u308b\u969b\u3001\u5909\u6570\u7ba1\u7406\u306e\u54c1\u8cea\u304c\u30b3\u30fc\u30c9\u306e\u4fdd\u5b88\u6027\u3068\u518d\u5229\u7528\u6027\u3092\u5927\u304d\u304f\u5de6\u53f3\u3057\u307e\u3059\u3002\u3053\u3053\u3067\u306f\u3001\u5b9f\u8df5\u3067\u5f79\u7acb\u30647\u3064\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u547d\u540d\u898f\u5247\u306e\u7d71\u4e00\u306b\u3088\u308b\u53ef\u8aad\u6027\u306e\u5411\u4e0a<\/h3>\n\n\n\n<p>\u5909\u6570\u540d\u306e\u4e00\u8cab\u6027\u306f\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u3092\u9ad8\u3081\u308b\u91cd\u8981\u306a\u8981\u7d20\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u63a8\u5968\u3055\u308c\u308b\u547d\u540d\u898f\u5247\nvariable \"project_name\" {\n  type = string\n  description = \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\"\n}\n\nvariable \"environment_type\" {\n  type = string\n  description = \"\u74b0\u5883\u7a2e\u5225\uff08dev\/staging\/prod\uff09\"\n}\n\nvariable \"vpc_cidr_block\" {\n  type = string\n  description = \"VPC\u306eCIDR\u30d6\u30ed\u30c3\u30af\"\n}\n\n# \u907f\u3051\u308b\u3079\u304d\u547d\u540d\u4f8b\nvariable \"pn\" {           # \u7565\u8a9e\u306f\u907f\u3051\u308b\n  type = string\n}\n\nvariable \"VpcCidrBlock\" { # \u30ad\u30e3\u30e1\u30eb\u30b1\u30fc\u30b9\u306f\u907f\u3051\u308b\n  type = string\n}<\/pre>\n\n\n\n<p>\u547d\u540d\u898f\u5247\u306e\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\uff1a<\/p>\n\n\n<div id=\"id-89aa8ea6-308d-4bbc-b1e5-77fc8c2ce5a5\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u30ab\u30c6\u30b4\u30ea<\/th><th>\u63a8\u5968\u5f62\u5f0f<\/th><th>\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u30ea\u30bd\u30fc\u30b9\u8b58\u5225\u5b50<\/td><td><code>resource_name<\/code><\/td><td>instance_type, subnet_id<\/td><\/tr><tr><td>\u74b0\u5883\u5909\u6570<\/td><td><code>environment_*<\/code><\/td><td>environment_name, environment_type<\/td><\/tr><tr><td>\u30bf\u30b0<\/td><td><code>tag_*<\/code><\/td><td>tag_project, tag_owner<\/td><\/tr><tr><td>\u8a2d\u5b9a\u5024<\/td><td><code>config_*<\/code><\/td><td>config_version, config_region<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">\u578b\u4fdd\u7559\u306b\u3088\u308b\u4e88\u671f\u305b\u306c\u30a8\u30e9\u30fc\u306e\u9632\u6b62<\/h3>\n\n\n\n<p>\u578b\u5b9a\u7fa9\u3092\u660e\u78ba\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u5b9f\u884c\u6642\u30a8\u30e9\u30fc\u3092\u4e8b\u524d\u306b\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u57fa\u672c\u7684\u306a\u578b\u5b9a\u7fa9\nvariable \"instance_count\" {\n  type        = number\n  default     = 1\n  description = \"\u8d77\u52d5\u3059\u308b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570\"\n\n  validation {\n    condition     = var.instance_count &gt; 0\n    error_message = \"\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u6570\u306f1\u4ee5\u4e0a\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}\n\n# \u8907\u5408\u7684\u306a\u578b\u5b9a\u7fa9\nvariable \"subnet_config\" {\n  type = object({\n    cidr_blocks = list(string)\n    zones       = list(string)\n    tags        = map(string)\n  })\n\n  description = \"\u30b5\u30d6\u30cd\u30c3\u30c8\u306e\u8a2d\u5b9a\"\n\n  validation {\n    condition     = length(var.subnet_config.cidr_blocks) == length(var.subnet_config.zones)\n    error_message = \"CIDR\u30d6\u30ed\u30c3\u30af\u3068\u30a2\u30d9\u30a4\u30e9\u30d3\u30ea\u30c6\u30a3\u30be\u30fc\u30f3\u306e\u6570\u304c\u4e00\u81f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308b\u5024\u306e\u691c\u8a3c<\/h3>\n\n\n\n<p>\u5165\u529b\u5024\u306e\u691c\u8a3c\u306f\u3001\u8a2d\u5b9a\u30df\u30b9\u3092\u65e9\u671f\u306b\u767a\u898b\u3059\u308b\u305f\u3081\u306b\u91cd\u8981\u3067\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">variable \"environment\" {\n  type        = string\n  description = \"\u30c7\u30d7\u30ed\u30a4\u74b0\u5883\"\n\n  validation {\n    condition     = contains([\"dev\", \"staging\", \"prod\"], var.environment)\n    error_message = \"\u74b0\u5883\u306f\u300cdev\u300d\u300cstaging\u300d\u300cprod\u300d\u306e\u3044\u305a\u308c\u304b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}\n\nvariable \"instance_type\" {\n  type        = string\n  description = \"EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\"\n\n  validation {\n    condition     = can(regex(\"^t[23].micro|t[23].small|t[23].medium$\", var.instance_type))\n    error_message = \"\u6307\u5b9a\u3055\u308c\u305f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\"\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u5909\u6570\u306e\u30b0\u30eb\u30fc\u30d7\u5316\u3068\u30e2\u30b8\u30e5\u30fc\u30eb\u5316<\/h3>\n\n\n\n<p>\u95a2\u9023\u3059\u308b\u5909\u6570\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3057\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u3057\u3066\u7ba1\u7406\u3059\u308b\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u6574\u7406\u3068\u518d\u5229\u7528\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/vpc\/variables.tf\nvariable \"vpc_settings\" {\n  type = object({\n    cidr_block = string\n    name       = string\n    enable_dns = bool\n    tags       = map(string)\n  })\n  description = \"VPC\u306e\u57fa\u672c\u8a2d\u5b9a\"\n}\n\nvariable \"subnet_settings\" {\n  type = list(object({\n    cidr_block = string\n    zone       = string\n    public     = bool\n  }))\n  description = \"\u30b5\u30d6\u30cd\u30c3\u30c8\u306e\u8a2d\u5b9a\u30ea\u30b9\u30c8\"\n}\n\n# \u4f7f\u7528\u4f8b\nmodule \"vpc\" {\n  source = \".\/modules\/vpc\"\n\n  vpc_settings = {\n    cidr_block = \"10.0.0.0\/16\"\n    name       = \"main-vpc\"\n    enable_dns = true\n    tags = {\n      Environment = \"production\"\n      Managed_by  = \"terraform\"\n    }\n  }\n\n  subnet_settings = [\n    {\n      cidr_block = \"10.0.1.0\/24\"\n      zone       = \"ap-northeast-1a\"\n      public     = true\n    },\n    {\n      cidr_block = \"10.0.2.0\/24\"\n      zone       = \"ap-northeast-1c\"\n      public     = false\n    }\n  ]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-16\">\u74b0\u5883\u5225\u306e\u5909\u6570\u30d5\u30a1\u30a4\u30eb\u7ba1\u7406<\/h3>\n\n\n\n<p>\u74b0\u5883\u3054\u3068\u306e\u8a2d\u5b9a\u3092\u660e\u78ba\u306b\u5206\u96e2\u3059\u308b\u3053\u3068\u3067\u3001\u8a2d\u5b9a\u30df\u30b9\u3092\u9632\u304e\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># environments\/base.tfvars\nregion = \"ap-northeast-1\"\nproject_name = \"example-project\"\n\n# environments\/dev.tfvars\nenvironment = \"dev\"\ninstance_type = \"t2.micro\"\nenable_monitoring = false\n\n# environments\/prod.tfvars\nenvironment = \"prod\"\ninstance_type = \"t3.medium\"\nenable_monitoring = true\nbackup_retention_days = 30<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-17\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u8003\u616e\u3057\u305f\u6a5f\u5bc6\u60c5\u5831\u306e\u6271\u3044<\/h3>\n\n\n\n<p>\u6a5f\u5bc6\u60c5\u5831\u306f\u9069\u5207\u306b\u4fdd\u8b77\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6a5f\u5bc6\u60c5\u5831\u306e\u5b9a\u7fa9\nvariable \"database_password\" {\n  type        = string\n  sensitive   = true\n  description = \"\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\"\n}\n\n# AWS Secrets Manager\u306e\u5229\u7528\ndata \"aws_secretsmanager_secret_version\" \"db_password\" {\n  secret_id = \"db-password\"\n}\n\n# \u5909\u6570\u3067\u306e\u4f7f\u7528\nresource \"aws_db_instance\" \"main\" {\n  password = jsondecode(data.aws_secretsmanager_secret_version.db_password.secret_string)[\"password\"]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-18\">\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4f5c\u6210\u306b\u3088\u308b\u4fdd\u5b88\u6027\u306e\u5411\u4e0a<\/h3>\n\n\n\n<p>\u9069\u5207\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5316\u306f\u3001\u30c1\u30fc\u30e0\u958b\u767a\u3068\u9577\u671f\u7684\u306a\u4fdd\u5b88\u6027\u3092\u652f\u63f4\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u5909\u6570\u5b9a\u7fa9\u306e\u4f8b\nvariable \"vpc_config\" {\n  type = object({\n    cidr_block = string\n    name       = string\n    subnets    = map(object({\n      cidr_block = string\n      zone       = string\n    }))\n  })\n\n  description = &lt;&lt;EOT\nVPC\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002\n\n\u5f15\u6570:\n  - cidr_block: VPC\u306eCIDR\u30d6\u30ed\u30c3\u30af\uff08\u4f8b: 10.0.0.0\/16\uff09\n  - name: VPC\u306e\u540d\u524d\n  - subnets: \u30b5\u30d6\u30cd\u30c3\u30c8\u306e\u8a2d\u5b9a\n    - cidr_block: \u30b5\u30d6\u30cd\u30c3\u30c8\u306eCIDR\u30d6\u30ed\u30c3\u30af\n    - zone: \u30a2\u30d9\u30a4\u30e9\u30d3\u30ea\u30c6\u30a3\u30be\u30fc\u30f3\n\n\u4f7f\u7528\u4f8b:\nvpc_config = {\n  cidr_block = \"10.0.0.0\/16\"\n  name       = \"main-vpc\"\n  subnets = {\n    public-1 = {\n      cidr_block = \"10.0.1.0\/24\"\n      zone       = \"ap-northeast-1a\"\n    }\n  }\n}\nEOT\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u4fdd\u5b88\u6027\u304c\u9ad8\u304f\u3001\u5b89\u5168\u306aTerraform\u30b3\u30fc\u30c9\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u969b\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-19\">\u3088\u304f\u3042\u308b\u30c8\u30e9\u30d6\u30eb\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h2>\n\n\n\n<p>Terraform\u5909\u6570\u306e\u4f7f\u7528\u306b\u304a\u3044\u3066\u767a\u751f\u3057\u3084\u3059\u3044\u30c8\u30e9\u30d6\u30eb\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u306b\u3064\u3044\u3066\u3001\u5177\u4f53\u7684\u306a\u4e8b\u4f8b\u3068\u3068\u3082\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">\u5909\u6570\u306e\u5024\u304c\u6b63\u3057\u304f\u6e21\u3055\u308c\u306a\u3044\u5834\u5408\u306e\u5bfe\u51e6\u6cd5<\/h3>\n\n\n\n<p>\u5909\u6570\u306e\u5024\u304c\u671f\u5f85\u901a\u308a\u306b\u6e21\u3055\u308c\u306a\u3044\u30b1\u30fc\u30b9\u306f\u3001\u3088\u304f\u906d\u9047\u3059\u308b\u30c8\u30e9\u30d6\u30eb\u306e\u4e00\u3064\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u304c\u672a\u5b9a\u7fa9\u306e\u30a8\u30e9\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Error: Reference to undeclared input variable\n\n  on main.tf line 12, in resource \"aws_instance\" \"example\":\n  12:   instance_type = var.instance_type<\/pre>\n\n\n\n<p>\u3053\u306e\u30a8\u30e9\u30fc\u306e\u4e00\u822c\u7684\u306a\u539f\u56e0\u3068\u89e3\u6c7a\u65b9\u6cd5\uff1a<\/p>\n\n\n<div id=\"id-7801b38a-4321-4188-89d9-7da54a186643\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u539f\u56e0<\/th><th>\u89e3\u6c7a\u65b9\u6cd5<\/th><th>\u30b3\u30fc\u30c9\u4f8b<\/th><\/tr><\/thead><tbody><tr><td>\u5909\u6570\u5b9a\u7fa9\u306e\u6f0f\u308c<\/td><td>variables.tf\u306b\u5b9a\u7fa9\u3092\u8ffd\u52a0<\/td><td><code>variable \"instance_type\" { type = string }<\/code><\/td><\/tr><tr><td>tfvars\u30d5\u30a1\u30a4\u30eb\u306e\u672a\u6307\u5b9a<\/td><td>-var-file\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4f7f\u7528<\/td><td><code>terraform apply -var-file=\"env.tfvars\"<\/code><\/td><\/tr><tr><td>\u74b0\u5883\u5909\u6570\u306e\u672a\u8a2d\u5b9a<\/td><td>\u74b0\u5883\u5909\u6570\u3092\u8a2d\u5b9a<\/td><td><code>export TF_VAR_instance_type=\"t2.micro\"<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u306e\u512a\u5148\u9806\u4f4d\u306e\u554f\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># variables.tf\nvariable \"environment\" {\n  type    = string\n  default = \"development\"\n}\n\n# terraform.tfvars\nenvironment = \"staging\"\n\n# dev.tfvars\nenvironment = \"dev\"<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u6b63\u3057\u3044\u512a\u5148\u9806\u4f4d\u3067\u306e\u5b9f\u884c\nterraform apply -var-file=\"terraform.tfvars\" -var-file=\"dev.tfvars\"\n\n# \u7279\u5b9a\u306e\u5024\u3092\u5f37\u5236\u7684\u306b\u4f7f\u7528\nterraform apply -var=\"environment=production\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-21\">\u30bf\u30a4\u30d7\u95a2\u9023\u306e\u30a8\u30e9\u30fc\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u578b\u306e\u4e0d\u4e00\u81f4\u306f\u983b\u7e41\u306b\u767a\u751f\u3059\u308b\u30a8\u30e9\u30fc\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u578b\u5909\u63db\u30a8\u30e9\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Error: Invalid value for variable\n\n  on variables.tf line 15:\n  15: variable \"instance_count\" {\n    The number 2.5 is not a whole number.<\/pre>\n\n\n\n<p>\u89e3\u6c7a\u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\nvariable \"instance_count\" {\n  type = number\n}\n\n# \u4fee\u6b63\u5f8c\u306e\u30b3\u30fc\u30c9\nvariable \"instance_count\" {\n  type        = number\n  validation {\n    condition     = floor(var.instance_count) == var.instance_count\n    error_message = \"instance_count\u306f\u6574\u6570\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30ea\u30b9\u30c8\u30fb\u30de\u30c3\u30d7\u306e\u578b\u30a8\u30e9\u30fc<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u30b1\u30fc\u30b9\nvariable \"subnet_cidrs\" {\n  type = list(string)\n  default = {  # \u30de\u30c3\u30d7\u578b\u3092\u8aa4\u3063\u3066\u6307\u5b9a\n    \"subnet1\" = \"10.0.1.0\/24\"\n  }\n}\n\n# \u6b63\u3057\u3044\u6307\u5b9a\u65b9\u6cd5\nvariable \"subnet_cidrs\" {\n  type = list(string)\n  default = [\n    \"10.0.1.0\/24\",\n    \"10.0.2.0\/24\"\n  ]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-22\">\u30e2\u30b8\u30e5\u30fc\u30eb\u9593\u306e\u5909\u6570\u53d7\u3051\u6e21\u3057\u554f\u984c\u3068\u5bfe\u7b56<\/h3>\n\n\n\n<p>\u30e2\u30b8\u30e5\u30fc\u30eb\u9593\u306e\u5909\u6570\u306e\u53d7\u3051\u6e21\u3057\u3067\u3088\u304f\u767a\u751f\u3059\u308b\u554f\u984c\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u306e\u30b9\u30b3\u30fc\u30d7\u306e\u554f\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/vpc\/variables.tf\nvariable \"vpc_settings\" {\n  type = object({\n    cidr_block = string\n    name       = string\n  })\n}\n\n# main.tf - \u554f\u984c\u306e\u3042\u308b\u30b3\u30fc\u30c9\nmodule \"vpc\" {\n  source = \".\/modules\/vpc\"\n\n  # \u76f4\u63a5\u5024\u3092\u6e21\u305d\u3046\u3068\u3057\u3066\u30a8\u30e9\u30fc\n  cidr_block = \"10.0.0.0\/16\"\n  name       = \"main-vpc\"\n}\n\n# main.tf - \u6b63\u3057\u3044\u30b3\u30fc\u30c9\nmodule \"vpc\" {\n  source = \".\/modules\/vpc\"\n\n  vpc_settings = {\n    cidr_block = \"10.0.0.0\/16\"\n    name       = \"main-vpc\"\n  }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u51fa\u529b\u5909\u6570\u306e\u9023\u643a\u554f\u984c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/vpc\/outputs.tf\noutput \"vpc_id\" {\n  value = aws_vpc.main.id\n}\n\n# modules\/subnet\/variables.tf\nvariable \"vpc_id\" {\n  type = string\n}\n\n# main.tf - \u6b63\u3057\u3044\u9023\u643a\u65b9\u6cd5\nmodule \"vpc\" {\n  source = \".\/modules\/vpc\"\n  # VPC\u8a2d\u5b9a\n}\n\nmodule \"subnet\" {\n  source = \".\/modules\/subnet\"\n  vpc_id = module.vpc.vpc_id\n}<\/pre>\n\n\n\n<p>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30c7\u30d0\u30c3\u30b0\u7528\u306e\u51fa\u529b\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">output \"debug_vpc_settings\" {\n  value = var.vpc_settings\n}\n\n# \u30c7\u30d0\u30c3\u30b0\u6642\u306b\u4f7f\u7528\nterraform plan -out=plan.out\nterraform show plan.out<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u5024\u306e\u691c\u8a3c<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">variable \"instance_type\" {\n  type = string\n\n  validation {\n    condition     = can(regex(\"^t[23]\\\\.\", var.instance_type))\n    error_message = \"\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30bf\u30a4\u30d7\u306ft2\u307e\u305f\u306ft3\u30b7\u30ea\u30fc\u30ba\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u7528\u306e\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8<\/strong><\/li>\n<\/ol>\n\n\n<div id=\"id-d7946242-6306-486a-b7b5-a0b70d0d7bbd\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u78ba\u8a8d\u9805\u76ee<\/th><th>\u78ba\u8a8d\u65b9\u6cd5<\/th><th>\u5bfe\u51e6\u65b9\u6cd5<\/th><\/tr><\/thead><tbody><tr><td>\u5909\u6570\u306e\u5b9a\u7fa9<\/td><td><code>terraform validate<\/code><\/td><td>\u672a\u5b9a\u7fa9\u306e\u5909\u6570\u3092\u8ffd\u52a0<\/td><\/tr><tr><td>\u578b\u306e\u4e00\u81f4<\/td><td><code>terraform plan<\/code><\/td><td>\u578b\u5b9a\u7fa9\u3092\u4fee\u6b63<\/td><\/tr><tr><td>\u5024\u306e\u5b58\u5728<\/td><td>\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d<\/td><td>\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u8a2d\u5b9a<\/td><\/tr><tr><td>\u30e2\u30b8\u30e5\u30fc\u30eb\u9023\u643a<\/td><td>\u51fa\u529b\u5909\u6570\u306e\u78ba\u8a8d<\/td><td>\u6b63\u3057\u3044\u53c2\u7167\u65b9\u6cd5\u306b\u4fee\u6b63<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3053\u308c\u3089\u306e\u77e5\u8b58\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u3067\u3001\u591a\u304f\u306e\u4e00\u822c\u7684\u306a\u30c8\u30e9\u30d6\u30eb\u3092\u52b9\u7387\u7684\u306b\u89e3\u6c7a\u3067\u304d\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-23\">\u5b9f\u8df5\u7684\u306a\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9<\/h2>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001Terraform\u5909\u6570\u306e\u5b9f\u8df5\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u3001\u5177\u4f53\u7684\u306a\u30b7\u30ca\u30ea\u30aa\u3068\u3068\u3082\u306b\u89e3\u8aac\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u306f\u3001\u5b9f\u52d9\u3067\u306e\u9069\u7528\u3092\u60f3\u5b9a\u3057\u3066\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-24\">\u672c\u756a\u30fb\u958b\u767a\u74b0\u5883\u306e\u8a2d\u5b9a\u5024\u7ba1\u7406<\/h3>\n\n\n\n<p>\u8907\u6570\u74b0\u5883\u306e\u8a2d\u5b9a\u3092\u52b9\u7387\u7684\u306b\u7ba1\u7406\u3059\u308b\u5b9f\u8df5\u7684\u306a\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">project\/\n\u251c\u2500\u2500 main.tf\n\u251c\u2500\u2500 variables.tf\n\u251c\u2500\u2500 terraform.tfvars\n\u251c\u2500\u2500 environments\/\n\u2502   \u251c\u2500\u2500 dev.tfvars\n\u2502   \u251c\u2500\u2500 staging.tfvars\n\u2502   \u2514\u2500\u2500 prod.tfvars\n\u2514\u2500\u2500 modules\/\n    \u251c\u2500\u2500 vpc\/\n    \u251c\u2500\u2500 ec2\/\n    \u2514\u2500\u2500 rds\/<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u5171\u901a\u5909\u6570\u306e\u5b9a\u7fa9<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># variables.tf\nvariable \"project\" {\n  type = object({\n    name        = string\n    owner       = string\n    cost_center = string\n  })\n  description = \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u57fa\u672c\u60c5\u5831\"\n}\n\nvariable \"environment_config\" {\n  type = object({\n    name                = string\n    vpc_cidr           = string\n    subnet_cidrs       = map(string)\n    instance_type      = string\n    rds_instance_class = string\n    multi_az          = bool\n  })\n  description = \"\u74b0\u5883\u56fa\u6709\u306e\u8a2d\u5b9a\"\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>\u74b0\u5883\u5225\u306e\u8a2d\u5b9a<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># environments\/dev.tfvars\nproject = {\n  name        = \"example-project\"\n  owner       = \"dev-team\"\n  cost_center = \"dev-1234\"\n}\n\nenvironment_config = {\n  name           = \"development\"\n  vpc_cidr       = \"10.0.0.0\/16\"\n  subnet_cidrs   = {\n    public-1  = \"10.0.1.0\/24\"\n    private-1 = \"10.0.2.0\/24\"\n  }\n  instance_type      = \"t3.micro\"\n  rds_instance_class = \"db.t3.small\"\n  multi_az          = false\n}\n\n# environments\/prod.tfvars\nproject = {\n  name        = \"example-project\"\n  owner       = \"ops-team\"\n  cost_center = \"prod-5678\"\n}\n\nenvironment_config = {\n  name           = \"production\"\n  vpc_cidr       = \"172.16.0.0\/16\"\n  subnet_cidrs   = {\n    public-1  = \"172.16.1.0\/24\"\n    public-2  = \"172.16.2.0\/24\"\n    private-1 = \"172.16.3.0\/24\"\n    private-2 = \"172.16.4.0\/24\"\n  }\n  instance_type      = \"t3.large\"\n  rds_instance_class = \"db.t3.large\"\n  multi_az          = true\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-25\">AWS \u30ea\u30bd\u30fc\u30b9\u306e\u67d4\u8edf\u306a\u69cb\u6210\u7ba1\u7406<\/h3>\n\n\n\n<p>AWS\u30ea\u30bd\u30fc\u30b9\u3092\u5909\u6570\u3092\u4f7f\u3063\u3066\u67d4\u8edf\u306b\u69cb\u6210\u3059\u308b\u5b9f\u8df5\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u52d5\u7684\u69cb\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/ec2\/variables.tf\nvariable \"instance_config\" {\n  type = object({\n    instance_type = string\n    ami_id        = string\n    user_data     = string\n    tags         = map(string)\n  })\n  description = \"EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8a2d\u5b9a\"\n}\n\nvariable \"scaling_config\" {\n  type = object({\n    min_size         = number\n    max_size         = number\n    desired_capacity = number\n  })\n  description = \"Auto Scaling\u306e\u8a2d\u5b9a\"\n}\n\n# modules\/ec2\/main.tf\nresource \"aws_launch_template\" \"this\" {\n  name_prefix   = \"app-template\"\n  image_id      = var.instance_config.ami_id\n  instance_type = var.instance_config.instance_type\n\n  user_data = base64encode(var.instance_config.user_data)\n\n  tags = var.instance_config.tags\n}\n\nresource \"aws_autoscaling_group\" \"this\" {\n  desired_capacity    = var.scaling_config.desired_capacity\n  max_size           = var.scaling_config.max_size\n  min_size           = var.scaling_config.min_size\n\n  launch_template {\n    id      = aws_launch_template.this.id\n    version = \"$Latest\"\n  }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30ea\u30bd\u30fc\u30b9\u306e\u6761\u4ef6\u4ed8\u304d\u4f5c\u6210<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/rds\/variables.tf\nvariable \"db_config\" {\n  type = object({\n    instance_class    = string\n    engine_version    = string\n    multi_az         = bool\n    backup_retention = number\n    storage_encrypted = bool\n  })\n  description = \"RDS\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u8a2d\u5b9a\"\n}\n\n# modules\/rds\/main.tf\nresource \"aws_db_instance\" \"this\" {\n  instance_class    = var.db_config.instance_class\n  engine_version    = var.db_config.engine_version\n  multi_az         = var.db_config.multi_az\n  backup_retention_period = var.db_config.backup_retention\n  storage_encrypted     = var.db_config.storage_encrypted\n\n  lifecycle {\n    prevent_destroy = var.db_config.multi_az  # \u672c\u756a\u74b0\u5883\u306eDB\u306f\u8aa4\u524a\u9664\u3092\u9632\u6b62\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-26\">\u30c1\u30fc\u30e0\u958b\u767a\u3067\u306e\u5909\u6570\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<p>\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u52b9\u7387\u7684\u306a\u5909\u6570\u7ba1\u7406\u306e\u5b9f\u8df5\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5909\u6570\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3068\u518d\u5229\u7528<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/common\/variables.tf\nvariable \"common_tags\" {\n  type = object({\n    Environment = string\n    Project     = string\n    Owner       = string\n    ManagedBy   = string\n  })\n  description = \"\u5171\u901a\u3067\u4f7f\u7528\u3059\u308b\u30bf\u30b0\"\n}\n\n# \u4f7f\u7528\u4f8b\nmodule \"common\" {\n  source = \".\/modules\/common\"\n\n  common_tags = {\n    Environment = var.environment_config.name\n    Project     = var.project.name\n    Owner       = var.project.owner\n    ManagedBy   = \"terraform\"\n  }\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>\u30c1\u30fc\u30e0\u5171\u6709\u306e\u5909\u6570\u691c\u8a3c\u30eb\u30fc\u30eb<\/strong><\/li>\n<\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># modules\/validation\/variables.tf\nvariable \"resource_naming\" {\n  type = object({\n    prefix = string\n    name   = string\n  })\n\n  validation {\n    condition     = can(regex(\"^[a-z0-9-]+$\", var.resource_naming.prefix))\n    error_message = \"\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306f\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u3001\u6570\u5b57\u3001\u30cf\u30a4\u30d5\u30f3\u306e\u307f\u4f7f\u7528\u53ef\u80fd\u3067\u3059\u3002\"\n  }\n\n  validation {\n    condition     = length(var.resource_naming.name) &lt;= 32\n    error_message = \"\u30ea\u30bd\u30fc\u30b9\u540d\u306f32\u6587\u5b57\u4ee5\u4e0b\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\"\n  }\n}<\/pre>\n\n\n\n<p>\u5b9f\u88c5\u306e\u30dd\u30a4\u30f3\u30c8\uff1a<\/p>\n\n\n<div id=\"id-1f044bb3-d756-4482-bec8-21f964a3943e\">\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u9805\u76ee<\/th><th>\u5b9f\u88c5\u65b9\u91dd<\/th><th>\u30e1\u30ea\u30c3\u30c8<\/th><\/tr><\/thead><tbody><tr><td>\u74b0\u5883\u5206\u96e2<\/td><td>\u74b0\u5883\u5225\u306e.tfvars\u30d5\u30a1\u30a4\u30eb<\/td><td>\u8a2d\u5b9a\u306e\u660e\u78ba\u306a\u5206\u96e2\u3068\u7ba1\u7406\u304c\u5bb9\u6613<\/td><\/tr><tr><td>\u30e2\u30b8\u30e5\u30fc\u30eb\u5316<\/td><td>\u5171\u901a\u51e6\u7406\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u5316<\/td><td>\u30b3\u30fc\u30c9\u306e\u518d\u5229\u7528\u6027\u5411\u4e0a<\/td><\/tr><tr><td>\u547d\u540d\u898f\u5247<\/td><td>\u5909\u6570\u540d\u306e\u898f\u5247\u5316<\/td><td>\u30c1\u30fc\u30e0\u5185\u3067\u306e\u7406\u89e3\u4fc3\u9032<\/td><\/tr><tr><td>\u691c\u8a3c\u30eb\u30fc\u30eb<\/td><td>\u5171\u901a\u306e\u691c\u8a3c\u30eb\u30fc\u30eb\u9069\u7528<\/td><td>\u8a2d\u5b9a\u30df\u30b9\u306e\u9632\u6b62<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n\n\n<p>\u3053\u308c\u3089\u306e\u30e6\u30fc\u30b9\u30b1\u30fc\u30b9\u3092\u53c2\u8003\u306b\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u8981\u4ef6\u306b\u5408\u308f\u305b\u3066\u9069\u5207\u306a\u5909\u6570\u7ba1\u7406\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Warning: Undefined array key &#8220;is_admin&#8221; in \/home\/xs392991\/dexall.co.jp\/public_html\/articles\/wp-content\/themes\/ &#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":{"0":"post-2289","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-aws","7":"nothumb"},"_links":{"self":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2289"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2289\/revisions"}],"predecessor-version":[{"id":2290,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2289\/revisions\/2290"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}