{"id":2287,"date":"2025-03-24T08:47:47","date_gmt":"2025-03-23T23:47:47","guid":{"rendered":"https:\/\/dexall.co.jp\/articles\/?p=2287"},"modified":"2025-03-24T08:48:12","modified_gmt":"2025-03-23T23:48:12","slug":"%e3%80%90%e4%bf%9d%e5%ad%98%e7%89%88%e3%80%91terraform-provider%e5%ae%8c%e5%85%a8%e5%85%a5%e9%96%80-2024%e5%b9%b4%e7%89%88-%e3%80%9caws%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%e3%82%9210%e5%80%8d%e5%8a%b9","status":"publish","type":"post","link":"https:\/\/dexall.co.jp\/articles\/?p=2287","title":{"rendered":"\u3010\u4fdd\u5b58\u7248\u3011Terraform Provider\u5b8c\u5168\u5165\u9580 2024\u5e74\u7248 \u301cAWS\u74b0\u5883\u69cb\u7bc9\u309210\u500d\u52b9\u7387\u5316\u3059\u308b\u65b9\u6cd5\u301c"},"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\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3068\u306f\uff1f\u57fa\u790e\u304b\u3089\u5b8c\u5168\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">Terraform\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u5f79\u5272\u3068\u91cd\u8981\u6027<\/a>      <\/li>      <li>        <a href=\"#i-2\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u30e1\u30ea\u30c3\u30c83\u9078<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u74b0\u5883\u69cb\u7bc9\u306e\u624b\u9806\u3092\u5fb9\u5e95\u89e3\u8aac<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-5\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-12\">\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u3068\u7ba1\u7406\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-15\">\u30ea\u30fc\u30b8\u30e7\u30f3\u8a2d\u5b9a\u3068\u7ba1\u7406\u306e\u30b3\u30c4<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-19\">\u5b9f\u8df5\uff01AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u3092\u81ea\u52d5\u5316<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-20\">EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u3068\u7ba1\u7406<\/a>      <\/li>      <li>        <a href=\"#i-27\">VPC\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u69cb\u7bc9\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-30\">S3\u30d0\u30b1\u30c3\u30c8\u3068\u30a2\u30af\u30bb\u30b9\u5236\u5fa1<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-34\">\u56f0\u3063\u305f\u3068\u304d\u306e\u5bfe\u51e6\u6cd5\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-35\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-43\">\u30c7\u30d0\u30c3\u30b0\u3068\u30ed\u30b0\u78ba\u8a8d\u306e\u65b9\u6cd5<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-47\">\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u6642\u306e\u6ce8\u610f\u70b9\u3068\u4e92\u63db\u6027\u78ba\u8a8d<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-51\">\u5b9f\u52d9\u3067\u4f7f\u3048\u308bAWS\u30d7\u30ed\u30d0\u30a4\u30c0\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-52\">\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u306b\u3088\u308b\u30b3\u30fc\u30c9\u518d\u5229\u7528\u306e\u65b9\u6cd5<\/a>      <\/li>      <li>        <a href=\"#i-58\">\u5909\u6570\u7ba1\u7406\u3068\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u6d3b\u7528\u306e\u30b3\u30c4<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-65\">\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\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\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3068\u306f\uff1f\u57fa\u790e\u304b\u3089\u5b8c\u5168\u89e3\u8aac<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">Terraform\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u5f79\u5272\u3068\u91cd\u8981\u6027<\/h3>\n\n\n\n<p>Terraform\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306f\u3001Terraform\u3092\u5b9f\u969b\u306e\u30af\u30e9\u30a6\u30c9\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u3068\u63a5\u7d9a\u3059\u308b\u91cd\u8981\u306a\u300c\u67b6\u3051\u6a4b\u300d\u3068\u3057\u3066\u306e\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u5177\u4f53\u7684\u306b\u306f\u3001\u4ee5\u4e0b\u306e3\u3064\u306e\u4e3b\u8981\u306a\u6a5f\u80fd\u3092\u63d0\u4f9b\u3057\u307e\u3059\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>API\u3068\u306e\u901a\u4fe1\u51e6\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30af\u30e9\u30a6\u30c9\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306eAPI\u3092\u62bd\u8c61\u5316<\/li>\n\n\n\n<li>\u8a8d\u8a3c\u60c5\u5831\u306e\u7ba1\u7406\u3068\u5b89\u5168\u306a\u901a\u4fe1\u306e\u5b9f\u73fe<\/li>\n\n\n\n<li>API\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u5dee\u7570\u306e\u5438\u53ce<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u63d0\u4f9b<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5404\u30af\u30e9\u30a6\u30c9\u30b5\u30fc\u30d3\u30b9\u306b\u5bfe\u5fdc\u3059\u308b\u30ea\u30bd\u30fc\u30b9\u30bf\u30a4\u30d7\u306e\u5b9a\u7fa9<\/li>\n\n\n\n<li>\u5c5e\u6027\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u578b\u5b9a\u7fa9<\/li>\n\n\n\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u7ba1\u7406\u6a5f\u80fd<\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u72b6\u614b\u7ba1\u7406\u306e\u5b9f\u73fe<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u73fe\u5728\u306e\u30a4\u30f3\u30d5\u30e9\u72b6\u614b\u306e\u628a\u63e1<\/li>\n\n\n\n<li>\u5dee\u5206\u691c\u51fa\u3068\u9069\u7528\u306e\u5236\u5fa1<\/li>\n\n\n\n<li>\u30b9\u30c6\u30fc\u30c8\u60c5\u5831\u306e\u6c38\u7d9a\u5316<\/li>\n<\/ul>\n\n\n\n<p>\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u57fa\u672c\u7684\u306a\u8a2d\u5b9a\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=\"\"># AWS \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u8a2d\u5b9a\u4f8b\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~&gt; 5.0\"  # \u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\n    }\n  }\n}\n\nprovider \"aws\" {\n  region = \"ap-northeast-1\"  # \u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3\n  # \u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\uff08\u74b0\u5883\u5909\u6570\u3084\u5171\u6709\u8a8d\u8a3c\u60c5\u5831\u304b\u3089\u81ea\u52d5\u53d6\u5f97\uff09\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u30e1\u30ea\u30c3\u30c83\u9078<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e00\u8cab\u6027\u306e\u3042\u308b\u74b0\u5883\u69cb\u7bc9<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30a4\u30f3\u30d5\u30e9\u306e\u30b3\u30fc\u30c9\u5316\u306b\u3088\u308b\u518d\u73fe\u6027\u306e\u78ba\u4fdd<\/li>\n\n\n\n<li>\u74b0\u5883\u9593\u306e\u8a2d\u5b9a\u5dee\u7570\u306e\u6700\u5c0f\u5316<\/li>\n\n\n\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306b\u3088\u308b\u5909\u66f4\u5c65\u6b74\u306e\u8ffd\u8de1<\/li>\n<\/ul>\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=\"\">   # \u8907\u6570\u74b0\u5883\u3067\u306e\u4e00\u8cab\u3057\u305f\u8a2d\u5b9a\u4f8b\n   provider \"aws\" {\n     alias  = \"production\"\n     region = \"ap-northeast-1\"\n     # \u30d7\u30ed\u30c0\u30af\u30b7\u30e7\u30f3\u7528\u306e\u8ffd\u52a0\u8a2d\u5b9a\n   }\n\n   provider \"aws\" {\n     alias  = \"staging\"\n     region = \"ap-northeast-1\"\n     # \u30b9\u30c6\u30fc\u30b8\u30f3\u30b0\u7528\u306e\u8ffd\u52a0\u8a2d\u5b9a\n   }<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u4f5c\u696d\u52b9\u7387\u306e\u5927\u5e45\u306a\u5411\u4e0a<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u624b\u52d5\u4f5c\u696d\u306e\u81ea\u52d5\u5316\u306b\u3088\u308b\u5de5\u6570\u524a\u6e1b<\/li>\n\n\n\n<li>\u30a8\u30e9\u30fc\u306e\u65e9\u671f\u767a\u898b\u3068\u4fee\u6b63<\/li>\n\n\n\n<li>\u8907\u96d1\u306a\u4f9d\u5b58\u95a2\u4fc2\u306e\u81ea\u52d5\u89e3\u6c7a<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9\u306e\u5f37\u5316<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IaC\u306b\u3088\u308b\u8a2d\u5b9a\u306e\u6a19\u6e96\u5316<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u306e\u4e00\u5143\u7ba1\u7406<\/li>\n\n\n\n<li>\u76e3\u67fb\u30ed\u30b0\u306e\u81ea\u52d5\u8a18\u9332<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u5fb9\u5e95<\/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=\"\">   terraform {\n     required_providers {\n       aws = {\n         source  = \"hashicorp\/aws\"\n         version = \"~&gt; 5.0\"  # \u30de\u30a4\u30ca\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u307f\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\n       }\n     }\n     required_version = \"&gt;= 1.0.0\"  # Terraform\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\n   }<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8a8d\u8a3c\u60c5\u5831\u306e\u5b89\u5168\u306a\u7ba1\u7406<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u6d3b\u7528<\/li>\n<\/ul>\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=\"\">   export AWS_ACCESS_KEY_ID=\"your_access_key\"\n   export AWS_SECRET_ACCESS_KEY=\"your_secret_key\"<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5171\u6709\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u5229\u7528<\/li>\n<\/ul>\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=\"\">   provider \"aws\" {\n     shared_config_files      = [\"\/Users\/username\/.aws\/config\"]\n     shared_credentials_files = [\"\/Users\/username\/.aws\/credentials\"]\n     profile                  = \"default\"\n   }<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u9069\u5207\u306a\u5206\u5272<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u74b0\u5883\u3054\u3068\u306e\u5206\u96e2<\/li>\n\n\n\n<li>\u30ea\u30fc\u30b8\u30e7\u30f3\u3054\u3068\u306e\u8a2d\u5b9a<\/li>\n\n\n\n<li>\u8cac\u4efb\u7bc4\u56f2\u306e\u660e\u78ba\u5316<\/li>\n<\/ul>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30ea\u30f3\u30b0\u306e\u5b9f\u88c5<\/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=\"\">   provider \"aws\" {\n     region = \"ap-northeast-1\"\n\n     # \u30ea\u30c8\u30e9\u30a4\u8a2d\u5b9a\n     max_retries = 3\n\n     # \u30ab\u30b9\u30bf\u30e0\u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\uff08\u5fc5\u8981\u306a\u5834\u5408\uff09\n     endpoints {\n       s3 = \"s3.your-domain.com\"\n     }\n   }<\/pre>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u30bf\u30b0\u4ed8\u3051\u306e\u6a19\u6e96\u5316<\/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\u30d5\u30a9\u30eb\u30c8\u30bf\u30b0\u306e\u8a2d\u5b9a\n   provider \"aws\" {\n     default_tags {\n       tags = {\n         Environment = \"production\"\n         Project     = \"terraform-management\"\n         Owner       = \"infrastructure-team\"\n      }\n    }\n   }<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u57fa\u672c\u6982\u5ff5\u3068\u8a2d\u5b9a\u65b9\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001AWS\u30ea\u30bd\u30fc\u30b9\u306e\u52b9\u7387\u7684\u306a\u7ba1\u7406\u3068\u904b\u7528\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u969b\u306e\u74b0\u5883\u69cb\u7bc9\u624b\u9806\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u74b0\u5883\u69cb\u7bc9\u306e\u624b\u9806\u3092\u5fb9\u5e95\u89e3\u8aac<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\">AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-6\">1. \u524d\u63d0\u6761\u4ef6\u306e\u78ba\u8a8d<\/h4>\n\n\n\n<p>Terraform\u30d7\u30ed\u30d0\u30a4\u30c0\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u524d\u306b\u3001\u4ee5\u4e0b\u306e\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Terraform CLI\uff081.0\u4ee5\u4e0a\uff09\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/li>\n\n\n\n<li>AWS CLI\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\uff08\u63a8\u5968\uff09<\/li>\n\n\n\n<li>AWS\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210<\/li>\n\n\n\n<li>\u9069\u5207\u306aIAM\u6a29\u9650\u306e\u8a2d\u5b9a<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">2. \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u5316<\/h4>\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=\"\"># \u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u4f5c\u6210\u3068\u79fb\u52d5\nmkdir terraform-aws-project\ncd terraform-aws-project\n\n# \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u521d\u671f\u5316\nterraform init<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-8\">3. \u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u8a2d\u5b9a<\/h4>\n\n\n\n<p>main.tf \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u3092\u8a18\u8ff0\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=\"\"># \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u8981\u4ef6\u5b9a\u7fa9\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~&gt; 5.0\"\n    }\n  }\n}\n\n# \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u57fa\u672c\u8a2d\u5b9a\nprovider \"aws\" {\n  region = \"ap-northeast-1\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-9\">4. OS\u5225\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u624b\u9806<\/h4>\n\n\n\n<p><strong>Linux\/macOS<\/strong><\/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=\"\"># Terraform\u306e\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\nmkdir -p ~\/.terraform.d\/plugins\n\n# \u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u5c55\u958b\nterraform init<\/pre>\n\n\n\n<p><strong>Windows<\/strong><\/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=\"\"># Terraform\u306e\u8a2d\u5b9a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\nmkdir -p $env:APPDATA\\terraform.d\\plugins\n\n# \u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3068\u5c55\u958b\nterraform init<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-10\">5. \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u78ba\u8a8d<\/h4>\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=\"\"># \u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d\nterraform version\n\n# \u30d7\u30ed\u30d0\u30a4\u30c0\u306e\u4e00\u89a7\u8868\u793a\nterraform providers\n\n# \u521d\u671f\u5316\u72b6\u614b\u306e\u78ba\u8a8d\nterraform init -upgrade<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-11\">6. \u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h4>\n\n\n\n<p>\u3088\u304f\u3042\u308b\u554f\u984c\u3068\u89e3\u6c7a\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u521d\u671f\u5316\u30a8\u30e9\u30fc<\/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=\"\"># \u30ad\u30e3\u30c3\u30b7\u30e5\u306e\u30af\u30ea\u30a2\nrm -rf .terraform\nterraform init<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u4e92\u63db\u6027\u306e\u554f\u984c<\/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=\"\"># \u30d0\u30fc\u30b8\u30e7\u30f3\u5236\u7d04\u306e\u7de9\u548c\nterraform {\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"&gt;= 4.0.0\"  # \u3088\u308a\u5e83\u3044\u7bc4\u56f2\u3092\u6307\u5b9a\n    }\n  }\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30d7\u30ed\u30ad\u30b7\u74b0\u5883\u3067\u306e\u8a2d\u5b9a<\/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=\"\"># \u30d7\u30ed\u30ad\u30b7\u8a2d\u5b9a\u306e\u8ffd\u52a0\nexport HTTP_PROXY=\"http:\/\/proxy.example.com:8080\"\nexport HTTPS_PROXY=\"http:\/\/proxy.example.com:8080\"<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-12\">\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u3068\u7ba1\u7406\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-13\">1. \u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\u65b9\u6cd5\uff08\u8907\u6570\u306e\u9078\u629e\u80a2\uff09<\/h4>\n\n\n\n<p><strong>\u65b9\u6cd51: \u74b0\u5883\u5909\u6570\u3092\u4f7f\u7528<\/strong><\/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=\"\"># AWS\u8a8d\u8a3c\u60c5\u5831\u306e\u8a2d\u5b9a\nexport AWS_ACCESS_KEY_ID=\"your_access_key\"\nexport AWS_SECRET_ACCESS_KEY=\"your_secret_key\"\nexport AWS_DEFAULT_REGION=\"ap-northeast-1\"<\/pre>\n\n\n\n<p><strong>\u65b9\u6cd52: \u5171\u6709\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u4f7f\u7528<\/strong><\/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=\"\"># ~\/.aws\/credentials<\/pre>\n\n\n[default]\n\n\n\n<p>aws_access_key_id = your_access_key aws_secret_access_key = your_secret_key # ~\/.aws\/config<\/p>\n\n\n[default]\n\n\n\n<p>region = ap-northeast-1 output = json<\/p>\n\n\n\n<p><strong>\u65b9\u6cd53: \u30d7\u30ed\u30d0\u30a4\u30c0\u8a2d\u5b9a\u3067\u306e\u76f4\u63a5\u6307\u5b9a\uff08\u975e\u63a8\u5968\uff09<\/strong><\/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=\"\">provider \"aws\" {\n  region     = \"ap-northeast-1\"\n  access_key = \"your_access_key\"\n  secret_key = \"your_secret_key\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-14\">2. \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u307e\u305f\u306f\u5171\u6709\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u4f7f\u7528\u3092\u63a8\u5968<\/li>\n\n\n\n<li>\u30a2\u30af\u30bb\u30b9\u30ad\u30fc\u306e\u5b9a\u671f\u7684\u306a\u30ed\u30fc\u30c6\u30fc\u30b7\u30e7\u30f3<\/li>\n\n\n\n<li>\u6700\u5c0f\u6a29\u9650\u306e\u539f\u5247\u306b\u57fa\u3065\u3044\u305fIAM\u30dd\u30ea\u30b7\u30fc\u306e\u4f7f\u7528<\/li>\n\n\n\n<li>\u6a5f\u5bc6\u60c5\u5831\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u304b\u3089\u306e\u9664\u5916<\/li>\n<\/ul>\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=\"\"># .gitignore\n.terraform\n*.tfstate\n*.tfstate.*\n.terraformrc\nterraform.rc\n*.tfvars<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-15\">\u30ea\u30fc\u30b8\u30e7\u30f3\u8a2d\u5b9a\u3068\u7ba1\u7406\u306e\u30b3\u30c4<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-16\">1. \u5358\u4e00\u30ea\u30fc\u30b8\u30e7\u30f3\u306e\u8a2d\u5b9a<\/h4>\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=\"\">provider \"aws\" {\n  region = \"ap-northeast-1\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-17\">2. \u30de\u30eb\u30c1\u30ea\u30fc\u30b8\u30e7\u30f3\u8a2d\u5b9a<\/h4>\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=\"\"># \u6771\u4eac\u30ea\u30fc\u30b8\u30e7\u30f3\uff08\u30e1\u30a4\u30f3\uff09\nprovider \"aws\" {\n  region = \"ap-northeast-1\"\n}\n\n# \u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u30ea\u30fc\u30b8\u30e7\u30f3\uff08\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\uff09\nprovider \"aws\" {\n  alias  = \"singapore\"\n  region = \"ap-southeast-1\"\n}\n\n# \u30ea\u30bd\u30fc\u30b9\u3067\u306e\u30ea\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\nresource \"aws_instance\" \"example\" {\n  provider = aws.singapore\n  # ... \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-18\">3. \u30ea\u30fc\u30b8\u30e7\u30f3\u8a2d\u5b9a\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5909\u6570\u3092\u4f7f\u7528\u3057\u305f\u30ea\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406<\/li>\n<\/ul>\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 \"aws_region\" {\n  description = \"AWS region\"\n  type        = string\n  default     = \"ap-northeast-1\"\n}\n\nprovider \"aws\" {\n  region = var.aws_region\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u30ea\u30fc\u30b8\u30e7\u30f3\u56fa\u6709\u306e\u8a2d\u5b9a\u306e\u5206\u96e2<\/li>\n<\/ul>\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=\"\">locals {\n  region_settings = {\n    ap-northeast-1 = {\n      instance_type = \"t3.micro\"\n      az_count      = 3\n    }\n    ap-southeast-1 = {\n      instance_type = \"t3.small\"\n      az_count      = 2\n    }\n  }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3067\u74b0\u5883\u69cb\u7bc9\u306e\u57fa\u672c\u8a2d\u5b9a\u306f\u5b8c\u4e86\u3067\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u969b\u306e\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u306e\u81ea\u52d5\u5316\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\">\u5b9f\u8df5\uff01AWS\u30d7\u30ed\u30d0\u30a4\u30c0\u3067\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u3092\u81ea\u52d5\u5316<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-20\">EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u3068\u7ba1\u7406<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-21\">1. \u57fa\u672c\u7684\u306aEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210<\/h4>\n\n\n\n<p>\u307e\u305a\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u306aEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3059\u308b\u4f8b\u304b\u3089\u59cb\u3081\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=\"\"># Amazon Linux 2\u306e\u6700\u65b0AMI\u3092\u53d6\u5f97\ndata \"aws_ami\" \"amazon_linux_2\" {\n  most_recent = true\n  owners      = [\"amazon\"]\n\n  filter {\n    name   = \"name\"\n    values = [\"amzn2-ami-hvm-*-x86_64-gp2\"]\n  }\n}\n\n# \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306e\u4f5c\u6210\nresource \"aws_security_group\" \"allow_ssh\" {\n  name        = \"allow_ssh\"\n  description = \"Allow SSH inbound traffic\"\n  vpc_id      = aws_vpc.main.id\n\n  ingress {\n    description = \"SSH from anywhere\"\n    from_port   = 22\n    to_port     = 22\n    protocol    = \"tcp\"\n    cidr_blocks = [\"0.0.0.0\/0\"]\n  }\n\n  egress {\n    from_port   = 0\n    to_port     = 0\n    protocol    = \"-1\"\n    cidr_blocks = [\"0.0.0.0\/0\"]\n  }\n\n  tags = {\n    Name = \"allow_ssh\"\n  }\n}\n\n# EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\nresource \"aws_instance\" \"web_server\" {\n  ami           = data.aws_ami.amazon_linux_2.id\n  instance_type = \"t3.micro\"\n\n  subnet_id                   = aws_subnet.public.id\n  vpc_security_group_ids      = [aws_security_group.allow_ssh.id]\n  associate_public_ip_address = true\n\n  root_block_device {\n    volume_size = 20\n    volume_type = \"gp3\"\n  }\n\n  tags = {\n    Name = \"WebServer\"\n    Environment = \"production\"\n  }\n\n  user_data = &lt;&lt;-EOF\n              #!\/bin\/bash\n              yum update -y\n              yum install -y httpd\n              systemctl start httpd\n              systemctl enable httpd\n              EOF\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-22\">2. \u9ad8\u5ea6\u306a\u8a2d\u5b9a\u30aa\u30d7\u30b7\u30e7\u30f3<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-23\">AutoScaling\u306e\u8a2d\u5b9a<\/h5>\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=\"\"># \u8d77\u52d5\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f5c\u6210\nresource \"aws_launch_template\" \"web_server\" {\n  name_prefix   = \"web-server\"\n  image_id      = data.aws_ami.amazon_linux_2.id\n  instance_type = \"t3.micro\"\n\n  network_interfaces {\n    associate_public_ip_address = true\n    security_groups            = [aws_security_group.allow_ssh.id]\n  }\n\n  user_data = base64encode(&lt;&lt;-EOF\n              #!\/bin\/bash\n              yum update -y\n              yum install -y httpd\n              systemctl start httpd\n              systemctl enable httpd\n              EOF\n  )\n\n  tag_specifications {\n    resource_type = \"instance\"\n    tags = {\n      Name = \"WebServer\"\n    }\n  }\n}\n\n# AutoScaling Group\u306e\u4f5c\u6210\nresource \"aws_autoscaling_group\" \"web_server\" {\n  desired_capacity    = 2\n  max_size           = 4\n  min_size           = 1\n  target_group_arns  = [aws_lb_target_group.web_server.arn]\n  vpc_zone_identifier = [aws_subnet.public_1.id, aws_subnet.public_2.id]\n\n  launch_template {\n    id      = aws_launch_template.web_server.id\n    version = \"$Latest\"\n  }\n\n  tag {\n    key                 = \"Name\"\n    value               = \"WebServer\"\n    propagate_at_launch = true\n  }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-24\">3. \u904b\u7528\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-25\">\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u76e3\u8996\u306e\u8a2d\u5b9a<\/h5>\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=\"\"># CloudWatch Alarm\u306e\u8a2d\u5b9a\nresource \"aws_cloudwatch_metric_alarm\" \"high_cpu\" {\n  alarm_name          = \"high-cpu-usage\"\n  comparison_operator = \"GreaterThanThreshold\"\n  evaluation_periods  = \"2\"\n  metric_name        = \"CPUUtilization\"\n  namespace          = \"AWS\/EC2\"\n  period             = \"300\"\n  statistic          = \"Average\"\n  threshold          = \"80\"\n  alarm_description  = \"This metric monitors ec2 cpu utilization\"\n  alarm_actions      = [aws_sns_topic.alerts.arn]\n\n  dimensions = {\n    InstanceId = aws_instance.web_server.id\n  }\n}<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-26\">\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u306e\u81ea\u52d5\u5316<\/h5>\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=\"\"># \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30dd\u30ea\u30b7\u30fc\u306e\u4f5c\u6210\nresource \"aws_backup_plan\" \"example\" {\n  name = \"daily_backup_plan\"\n\n  rule {\n    rule_name         = \"daily_backup\"\n    target_vault_name = aws_backup_vault.example.name\n    schedule          = \"cron(0 12 * * ? *)\"\n\n    lifecycle {\n      delete_after = 14\n    }\n  }\n}\n\n# \u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u5bfe\u8c61\u306e\u9078\u629e\nresource \"aws_backup_selection\" \"example\" {\n  name         = \"ec2_backup_selection\"\n  iam_role_arn = aws_iam_role.backup.arn\n  plan_id      = aws_backup_plan.example.id\n\n  resources = [\n    aws_instance.web_server.arn\n  ]\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-27\">VPC\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u69cb\u7bc9\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-28\">1. \u57fa\u672c\u7684\u306aVPC\u69cb\u6210<\/h4>\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=\"\"># VPC\u306e\u4f5c\u6210\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = \"10.0.0.0\/16\"\n  enable_dns_hostnames = true\n  enable_dns_support   = true\n\n  tags = {\n    Name = \"main\"\n  }\n}\n\n# \u30d1\u30d6\u30ea\u30c3\u30af\u30b5\u30d6\u30cd\u30c3\u30c8\u306e\u4f5c\u6210\nresource \"aws_subnet\" \"public\" {\n  count             = 2\n  vpc_id            = aws_vpc.main.id\n  cidr_block        = \"10.0.${count.index}.0\/24\"\n  availability_zone = data.aws_availability_zones.available.names[count.index]\n\n  tags = {\n    Name = \"Public Subnet ${count.index + 1}\"\n  }\n}\n\n# \u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u30b2\u30fc\u30c8\u30a6\u30a7\u30a4\u306e\u4f5c\u6210\nresource \"aws_internet_gateway\" \"main\" {\n  vpc_id = aws_vpc.main.id\n\n  tags = {\n    Name = \"Main IGW\"\n  }\n}\n\n# \u30eb\u30fc\u30c8\u30c6\u30fc\u30d6\u30eb\u306e\u8a2d\u5b9a\nresource \"aws_route_table\" \"public\" {\n  vpc_id = aws_vpc.main.id\n\n  route {\n    cidr_block = \"0.0.0.0\/0\"\n    gateway_id = aws_internet_gateway.main.id\n  }\n\n  tags = {\n    Name = \"Public Route Table\"\n  }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-29\">2. \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a2d\u5b9a<\/h4>\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=\"\"># NACL\u306e\u8a2d\u5b9a\nresource \"aws_network_acl\" \"main\" {\n  vpc_id = aws_vpc.main.id\n\n  egress {\n    protocol   = \"-1\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0\/0\"\n    from_port  = 0\n    to_port    = 0\n  }\n\n  ingress {\n    protocol   = \"tcp\"\n    rule_no    = 100\n    action     = \"allow\"\n    cidr_block = \"0.0.0.0\/0\"\n    from_port  = 80\n    to_port    = 80\n  }\n\n  tags = {\n    Name = \"Main NACL\"\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-30\">S3\u30d0\u30b1\u30c3\u30c8\u3068\u30a2\u30af\u30bb\u30b9\u5236\u5fa1<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-31\">1. \u57fa\u672c\u7684\u306aS3\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210<\/h4>\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=\"\"># S3\u30d0\u30b1\u30c3\u30c8\u306e\u4f5c\u6210\nresource \"aws_s3_bucket\" \"content\" {\n  bucket = \"my-unique-bucket-name-${data.aws_caller_identity.current.account_id}\"\n\n  tags = {\n    Name        = \"Content Bucket\"\n    Environment = \"Production\"\n  }\n}\n\n# \u30d0\u30b1\u30c3\u30c8\u306e\u6697\u53f7\u5316\u8a2d\u5b9a\nresource \"aws_s3_bucket_server_side_encryption_configuration\" \"content\" {\n  bucket = aws_s3_bucket.content.id\n\n  rule {\n    apply_server_side_encryption_by_default {\n      sse_algorithm = \"AES256\"\n    }\n  }\n}\n\n# \u30d1\u30d6\u30ea\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u306e\u30d6\u30ed\u30c3\u30af\nresource \"aws_s3_bucket_public_access_block\" \"content\" {\n  bucket = aws_s3_bucket.content.id\n\n  block_public_acls       = true\n  block_public_policy     = true\n  ignore_public_acls      = true\n  restrict_public_buckets = true\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-32\">2. \u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u8a2d\u5b9a<\/h4>\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=\"\"># \u30d0\u30b1\u30c3\u30c8\u30dd\u30ea\u30b7\u30fc\u306e\u4f5c\u6210\nresource \"aws_s3_bucket_policy\" \"content\" {\n  bucket = aws_s3_bucket.content.id\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Sid       = \"DenyHttpRequests\"\n        Effect    = \"Deny\"\n        Principal = \"*\"\n        Action    = \"s3:*\"\n        Resource  = [\n          aws_s3_bucket.content.arn,\n          \"${aws_s3_bucket.content.arn}\/*\"\n        ]\n        Condition = {\n          Bool = {\n            \"aws:SecureTransport\": \"false\"\n          }\n        }\n      }\n    ]\n  })\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-33\">3. \u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u30eb\u30fc\u30eb\u306e\u8a2d\u5b9a<\/h4>\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=\"\"># \u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u30eb\u30fc\u30eb\u306e\u8a2d\u5b9a\nresource \"aws_s3_bucket_lifecycle_configuration\" \"content\" {\n  bucket = aws_s3_bucket.content.id\n\n  rule {\n    id     = \"archive_old_files\"\n    status = \"Enabled\"\n\n    transition {\n      days          = 90\n      storage_class = \"STANDARD_IA\"\n    }\n\n    transition {\n      days          = 180\n      storage_class = \"GLACIER\"\n    }\n\n    expiration {\n      days = 365\n    }\n  }\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u88c5\u4f8b\u3092\u57fa\u306b\u3001\u5b9f\u969b\u306e\u8981\u4ef6\u306b\u5408\u308f\u305b\u3066\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u3044\u304f\u3053\u3068\u3067\u3001\u52b9\u7387\u7684\u306a\u30a4\u30f3\u30d5\u30e9\u69cb\u7bc9\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u88c5\u6642\u306b\u3088\u304f\u767a\u751f\u3059\u308b\u30c8\u30e9\u30d6\u30eb\u3068\u305d\u306e\u89e3\u6c7a\u65b9\u6cd5\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-34\">\u56f0\u3063\u305f\u3068\u304d\u306e\u5bfe\u51e6\u6cd5\u3068\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-35\">\u3088\u304f\u3042\u308b\u30a8\u30e9\u30fc\u3068\u89e3\u6c7a\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-36\">1. \u8a8d\u8a3c\u95a2\u9023\u306e\u30a8\u30e9\u30fc<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-37\">\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f31: \u30af\u30ec\u30c7\u30f3\u30b7\u30e3\u30eb\u304c\u898b\u3064\u304b\u3089\u306a\u3044<\/h5>\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: NoCredentialProviders: no valid providers in chain<\/pre>\n\n\n\n<p><strong>\u539f\u56e0\u3068\u89e3\u6c7a\u7b56:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u74b0\u5883\u5909\u6570\u306e\u78ba\u8a8d<\/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=\"\"># \u74b0\u5883\u5909\u6570\u306e\u8a2d\u5b9a\nexport AWS_ACCESS_KEY_ID=\"your_access_key\"\nexport AWS_SECRET_ACCESS_KEY=\"your_secret_key\"\nexport AWS_REGION=\"ap-northeast-1\"\n\n# \u74b0\u5883\u5909\u6570\u306e\u78ba\u8a8d\nenv | grep AWS<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u5171\u6709\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u306e\u78ba\u8a8d<\/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=\"\"># ~\/.aws\/credentials \u306e\u78ba\u8a8d\ncat ~\/.aws\/credentials\n\n# \u6a29\u9650\u306e\u78ba\u8a8d\nls -la ~\/.aws\/<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>IAM\u30ed\u30fc\u30eb\u306e\u78ba\u8a8d<\/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=\"\"># \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u8a2d\u5b9a\u3067\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u6307\u5b9a\nprovider \"aws\" {\n  profile = \"default\"\n  region  = \"ap-northeast-1\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-38\">2. \u30ea\u30bd\u30fc\u30b9\u4f5c\u6210\u30a8\u30e9\u30fc<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-39\">\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f32: \u91cd\u8907\u30ea\u30bd\u30fc\u30b9<\/h5>\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: Resource already exists<\/pre>\n\n\n\n<p><strong>\u89e3\u6c7a\u624b\u9806:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u65e2\u5b58\u30ea\u30bd\u30fc\u30b9\u306e\u30a4\u30f3\u30dd\u30fc\u30c8<\/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=\"\"># \u65e2\u5b58\u30ea\u30bd\u30fc\u30b9\u306e\u72b6\u614b\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\nterraform import aws_instance.example i-1234567890abcdef0\n\n# \u72b6\u614b\u306e\u78ba\u8a8d\nterraform show<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ea\u30bd\u30fc\u30b9\u540d\u306e\u5909\u66f4<\/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=\"\"># \u30ea\u30bd\u30fc\u30b9\u540d\u3092\u4e00\u610f\u306b\u8a2d\u5b9a\nresource \"aws_instance\" \"web_server_2024\" {\n  # ... \u8a2d\u5b9a ...\n}<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-40\">\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f33: \u4f9d\u5b58\u95a2\u4fc2\u30a8\u30e9\u30fc<\/h5>\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: Resource depends on non-existent resource<\/pre>\n\n\n\n<p><strong>\u89e3\u6c7a\u7b56:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f9d\u5b58\u95a2\u4fc2\u306e\u660e\u793a\u7684\u306a\u6307\u5b9a<\/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=\"\"># depends_on\u306e\u4f7f\u7528\nresource \"aws_instance\" \"web\" {\n  # ... \u8a2d\u5b9a ...\n  depends_on = [\n    aws_vpc.main,\n    aws_subnet.public\n  ]\n}<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6d3b\u7528<\/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=\"\"># \u65e2\u5b58\u30ea\u30bd\u30fc\u30b9\u306e\u53c2\u7167\ndata \"aws_vpc\" \"existing\" {\n  id = \"vpc-1234567890abcdef0\"\n}\n\nresource \"aws_subnet\" \"new\" {\n  vpc_id = data.aws_vpc.existing.id\n  # ... \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a ...\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-41\">3. \u72b6\u614b\u7ba1\u7406\u306e\u30a8\u30e9\u30fc<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-42\">\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f34: \u72b6\u614b\u30d5\u30a1\u30a4\u30eb\u306e\u7af6\u5408<\/h5>\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: Error loading state: state file is locked<\/pre>\n\n\n\n<p><strong>\u89e3\u6c7a\u624b\u9806:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30ed\u30c3\u30af\u306e\u5f37\u5236\u89e3\u9664<\/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=\"\"># \u5f37\u5236\u7684\u306a\u30ed\u30c3\u30af\u89e3\u9664\uff08\u6ce8\u610f\u3057\u3066\u4f7f\u7528\uff09\nterraform force-unlock LOCK_ID<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30ea\u30e2\u30fc\u30c8\u72b6\u614b\u7ba1\u7406\u306e\u8a2d\u5b9a<\/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=\"\"># S3\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u306e\u8a2d\u5b9a\nterraform {\n  backend \"s3\" {\n    bucket = \"terraform-state-bucket\"\n    key    = \"prod\/terraform.tfstate\"\n    region = \"ap-northeast-1\"\n    dynamodb_table = \"terraform-locks\"\n    encrypt = true\n  }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-43\">\u30c7\u30d0\u30c3\u30b0\u3068\u30ed\u30b0\u78ba\u8a8d\u306e\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-44\">1. \u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u6709\u52b9\u5316<\/h4>\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=\"\"># \u8a73\u7d30\u306a\u30ed\u30b0\u51fa\u529b\u306e\u6709\u52b9\u5316\nexport TF_LOG=DEBUG\nexport TF_LOG_PATH=.\/terraform.log\n\n# \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u30c7\u30d0\u30c3\u30b0\u30ed\u30b0\u306e\u6709\u52b9\u5316\nexport AWS_DEBUG=true<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-45\">2. \u30d7\u30e9\u30f3\u306e\u8a73\u7d30\u78ba\u8a8d<\/h4>\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=\"\"># \u8a73\u7d30\u306a\u30d7\u30e9\u30f3\u51fa\u529b\nterraform plan -detailed-exitcode -out=plan.out\n\n# \u30d7\u30e9\u30f3\u306e\u53ef\u8996\u5316\nterraform show -json plan.out | jq<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-46\">3. \u72b6\u614b\u306e\u691c\u67fb\u3068\u30c7\u30d0\u30c3\u30b0<\/h4>\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=\"\"># \u72b6\u614b\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\u78ba\u8a8d\nterraform show\n\n# \u7279\u5b9a\u306e\u30ea\u30bd\u30fc\u30b9\u306e\u72b6\u614b\u78ba\u8a8d\nterraform state show aws_instance.web\n\n# \u72b6\u614b\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\nterraform state pull &gt; terraform.backup<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-47\">\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u6642\u306e\u6ce8\u610f\u70b9\u3068\u4e92\u63db\u6027\u78ba\u8a8d<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-48\">1. \u30d0\u30fc\u30b8\u30e7\u30f3\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\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=\"\"># \u30d0\u30fc\u30b8\u30e7\u30f3\u5236\u7d04\u306e\u6307\u5b9a\nterraform {\n  required_version = \"&gt;= 1.0.0, &lt; 2.0.0\"\n\n  required_providers {\n    aws = {\n      source  = \"hashicorp\/aws\"\n      version = \"~&gt; 5.0\"  # \u30e1\u30b8\u30e3\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u56fa\u5b9a\n    }\n  }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-49\">2. \u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u624b\u9806<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u306e\u78ba\u8a8d<\/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=\"\"># \u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d\nterraform version\nterraform providers\n\n# \u5229\u7528\u53ef\u80fd\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u306e\u78ba\u8a8d\nterraform init -upgrade<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u6bb5\u968e\u7684\u306a\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8<\/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=\"\"># \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u66f4\u65b0\nterraform init -upgrade\n\n# \u8a2d\u5b9a\u306e\u59a5\u5f53\u6027\u78ba\u8a8d\nterraform validate\n\n# \u30d7\u30e9\u30f3\u306e\u78ba\u8a8d\nterraform plan<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-50\">3. \u4e92\u63db\u6027\u554f\u984c\u306e\u5bfe\u51e6<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u975e\u4e92\u63db\u6027\u306e\u691c\u51fa<\/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=\"\"># terraform 0.12upgrade \u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\uff08\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5834\u5408\uff09\nterraform 0.12upgrade\n\n# \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u8a3c\nterraform validate<\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u30d0\u30fc\u30b8\u30e7\u30f3\u56fa\u5b9a\u306b\u3088\u308b\u5b89\u5b9a\u5316<\/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=\"\"># \u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u56fa\u5b9a\nprovider \"aws\" {\n  version = \"= 5.0.0\"  # \u7279\u5b9a\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u56fa\u5b9a\n}<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u65bd<\/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=\"\"># \u72b6\u614b\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\nterraform state pull &gt; terraform.backup\n\n# \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\nterraform init -migrate-state\n\n# \u72b6\u614b\u306e\u691c\u8a3c\nterraform plan<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u30c8\u30e9\u30d6\u30eb\u30b7\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0\u624b\u6cd5\u3092\u7406\u89e3\u3059\u308b\u3053\u3068\u3067\u3001\u591a\u304f\u306e\u4e00\u822c\u7684\u306a\u554f\u984c\u306b\u52b9\u7387\u7684\u306b\u5bfe\u51e6\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u6b21\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001\u5b9f\u52d9\u3067\u4f7f\u3048\u308b\u9ad8\u5ea6\u306a\u6d3b\u7528\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-51\">\u5b9f\u52d9\u3067\u4f7f\u3048\u308bAWS\u30d7\u30ed\u30d0\u30a4\u30c0\u6d3b\u7528\u30c6\u30af\u30cb\u30c3\u30af<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-52\">\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u306b\u3088\u308b\u30b3\u30fc\u30c9\u518d\u5229\u7528\u306e\u65b9\u6cd5<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-53\">1. \u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u8a08\u306e\u57fa\u672c\u539f\u5247<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-54\">\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u9020\u306e\u4f8b<\/h5>\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=\"\">terraform-aws-project\/\n\u251c\u2500\u2500 modules\/\n\u2502   \u251c\u2500\u2500 vpc\/\n\u2502   \u2502   \u251c\u2500\u2500 main.tf\n\u2502   \u2502   \u251c\u2500\u2500 variables.tf\n\u2502   \u2502   \u251c\u2500\u2500 outputs.tf\n\u2502   \u2502   \u2514\u2500\u2500 README.md\n\u2502   \u251c\u2500\u2500 ec2\/\n\u2502   \u2502   \u251c\u2500\u2500 main.tf\n\u2502   \u2502   \u251c\u2500\u2500 variables.tf\n\u2502   \u2502   \u251c\u2500\u2500 outputs.tf\n\u2502   \u2502   \u2514\u2500\u2500 README.md\n\u2502   \u2514\u2500\u2500 s3\/\n\u2502       \u251c\u2500\u2500 main.tf\n\u2502       \u251c\u2500\u2500 variables.tf\n\u2502       \u251c\u2500\u2500 outputs.tf\n\u2502       \u2514\u2500\u2500 README.md\n\u251c\u2500\u2500 environments\/\n\u2502   \u251c\u2500\u2500 prod\/\n\u2502   \u2502   \u251c\u2500\u2500 main.tf\n\u2502   \u2502   \u251c\u2500\u2500 terraform.tfvars\n\u2502   \u2502   \u2514\u2500\u2500 backend.tf\n\u2502   \u2514\u2500\u2500 dev\/\n\u2502       \u251c\u2500\u2500 main.tf\n\u2502       \u251c\u2500\u2500 terraform.tfvars\n\u2502       \u2514\u2500\u2500 backend.tf\n\u2514\u2500\u2500 README.md<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-55\">\u518d\u5229\u7528\u53ef\u80fd\u306aVPC\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4f8b<\/h5>\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 \"project_name\" {\n  type        = string\n  description = \"\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\"\n}\n\nvariable \"environment\" {\n  type        = string\n  description = \"\u74b0\u5883\u540d\uff08dev\/stg\/prod\uff09\"\n}\n\nvariable \"vpc_cidr\" {\n  type        = string\n  description = \"VPC\u306eCIDR\u30d6\u30ed\u30c3\u30af\"\n  default     = \"10.0.0.0\/16\"\n}\n\n# modules\/vpc\/main.tf\nresource \"aws_vpc\" \"main\" {\n  cidr_block           = var.vpc_cidr\n  enable_dns_hostnames = true\n  enable_dns_support   = true\n\n  tags = {\n    Name        = \"${var.project_name}-${var.environment}-vpc\"\n    Environment = var.environment\n    Project     = var.project_name\n    Terraform   = \"true\"\n  }\n}\n\n# modules\/vpc\/outputs.tf\noutput \"vpc_id\" {\n  value       = aws_vpc.main.id\n  description = \"\u4f5c\u6210\u3055\u308c\u305fVPC\u306eID\"\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-56\">2. \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4f7f\u7528\u4f8b<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-57\">\u74b0\u5883\u5225\u306e\u8a2d\u5b9a<\/h5>\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\/prod\/main.tf\nmodule \"vpc\" {\n  source = \"..\/..\/modules\/vpc\"\n\n  project_name = \"example\"\n  environment  = \"prod\"\n  vpc_cidr     = \"10.0.0.0\/16\"\n}\n\nmodule \"ec2\" {\n  source = \"..\/..\/modules\/ec2\"\n\n  vpc_id       = module.vpc.vpc_id\n  environment  = \"prod\"\n  instance_type = \"t3.medium\"\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-58\">\u5909\u6570\u7ba1\u7406\u3068\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u6d3b\u7528\u306e\u30b3\u30c4<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-59\">1. \u5909\u6570\u7ba1\u7406\u306e\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-60\">\u74b0\u5883\u5225\u306e\u5909\u6570\u30d5\u30a1\u30a4\u30eb<\/h5>\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\/prod\/terraform.tfvars\nproject_name    = \"example\"\nenvironment     = \"prod\"\ninstance_type   = \"t3.medium\"\nvpc_cidr        = \"10.0.0.0\/16\"\nenable_backup   = true\n\n# environments\/dev\/terraform.tfvars\nproject_name    = \"example\"\nenvironment     = \"dev\"\ninstance_type   = \"t3.micro\"\nvpc_cidr        = \"10.1.0.0\/16\"\nenable_backup   = false<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-61\">\u5909\u6570\u306e\u578b\u5b9a\u7fa9\u3068\u691c\u8a3c<\/h5>\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  description = \"\u74b0\u5883\u540d\"\n  validation {\n    condition     = contains([\"dev\", \"stg\", \"prod\"], var.environment)\n    error_message = \"\u74b0\u5883\u540d\u306f'dev'\u3001'stg'\u3001'prod'\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  validation {\n    condition     = can(regex(\"^t[23]\\\\.\", 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<h4 class=\"wp-block-heading\" id=\"i-62\">2. \u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u52b9\u679c\u7684\u306a\u6d3b\u7528<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-63\">\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u8a2d\u5b9a<\/h5>\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=\"\"># \u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u4f5c\u6210\u3068\u5207\u308a\u66ff\u3048\nterraform workspace new prod\nterraform workspace new dev\nterraform workspace select prod<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-64\">\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306b\u57fa\u3065\u304f\u6761\u4ef6\u5206\u5c90<\/h5>\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=\"\">locals {\n  workspace_config = {\n    prod = {\n      instance_type = \"t3.medium\"\n      min_size      = 2\n      max_size      = 4\n    }\n    dev = {\n      instance_type = \"t3.micro\"\n      min_size      = 1\n      max_size      = 2\n    }\n  }\n\n  config = local.workspace_config[terraform.workspace]\n}\n\nresource \"aws_instance\" \"app\" {\n  instance_type = local.config.instance_type\n  # ... \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a ...\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-65\">\u30c1\u30fc\u30e0\u958b\u767a\u306b\u304a\u3051\u308b\u30d9\u30b9\u30c8\u30d7\u30e9\u30af\u30c6\u30a3\u30b9<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-66\">1. \u30b3\u30fc\u30c9\u54c1\u8cea\u306e\u7dad\u6301<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-67\">pre-commit\u30d5\u30c3\u30af\u306e\u8a2d\u5b9a<\/h5>\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=\"\"># .pre-commit-config.yaml\nrepos:\n  - repo: https:\/\/github.com\/antonbabenko\/pre-commit-terraform\n    rev: v1.50.0\n    hooks:\n      - id: terraform_fmt\n      - id: terraform_docs\n      - id: terraform_tflint\n      - id: terraform_validate<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-68\">\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u898f\u7d04\u306e\u4f8b<\/h5>\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=\"\"># \u547d\u540d\u898f\u5247\u306e\u4f8b\nresource \"aws_instance\" \"web_server\" {  # \u30b9\u30cd\u30fc\u30af\u30b1\u30fc\u30b9\u3092\u4f7f\u7528\n  instance_type = \"t3.micro\"\n\n  tags = {\n    Name        = \"${var.project}-${var.environment}-web\"  # \u4e00\u8cab\u3057\u305f\u547d\u540d\u30d1\u30bf\u30fc\u30f3\n    Environment = var.environment\n    Terraform   = \"true\"\n  }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-69\">2. \u30c1\u30fc\u30e0\u30ef\u30fc\u30af\u30d5\u30ed\u30fc<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-70\">Pull Request\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h5>\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=\"\"># .github\/pull_request_template.md\n## \u5909\u66f4\u5185\u5bb9\n- [ ] \u30a4\u30f3\u30d5\u30e9\u306e\u8ffd\u52a0\/\u5909\u66f4\/\u524a\u9664\n- [ ] \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8ffd\u52a0\/\u5909\u66f4\n- [ ] \u8a2d\u5b9a\u306e\u66f4\u65b0\n\n## \u78ba\u8a8d\u9805\u76ee\n- [ ] terraform fmt\u5b9f\u884c\u6e08\u307f\n- [ ] terraform validate\u78ba\u8a8d\u6e08\u307f\n- [ ] terraform\u30d7\u30e9\u30f3\u78ba\u8a8d\u6e08\u307f\n- [ ] \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4e0a\u306e\u5f71\u97ff\u306a\u3057<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-71\">CI\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u306e\u8a2d\u5b9a<\/h5>\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=\"\"># .github\/workflows\/terraform.yml\nname: Terraform\n\non:\n  pull_request:\n    paths:\n      - '**.tf'\n      - '**.tfvars'\n\njobs:\n  terraform:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v2\n\n      - name: Setup Terraform\n        uses: hashicorp\/setup-terraform@v1\n\n      - name: Terraform Format\n        run: terraform fmt -check\n\n      - name: Terraform Init\n        run: terraform init\n\n      - name: Terraform Validate\n        run: terraform validate\n\n      - name: Terraform Plan\n        run: terraform plan<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-72\">3. \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3068\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-73\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30dd\u30ea\u30b7\u30fc\u306e\u5b9f\u88c5<\/h5>\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=\"\"># policies\/security.tf\nresource \"aws_iam_policy\" \"strict_security\" {\n  name        = \"strict-security-policy\"\n  description = \"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8981\u4ef6\u306b\u57fa\u3065\u3044\u305f\u30dd\u30ea\u30b7\u30fc\"\n\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = [\n      {\n        Effect = \"Deny\"\n        Action = [\n          \"s3:*\"\n        ]\n        Resource = \"*\"\n        Condition = {\n          Bool = {\n            \"aws:SecureTransport\": \"false\"\n          }\n        }\n      }\n    ]\n  })\n}<\/pre>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"i-74\">\u30b3\u30f3\u30d7\u30e9\u30a4\u30a2\u30f3\u30b9\u30c1\u30a7\u30c3\u30af<\/h5>\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=\"\"># compliance\/rules.tf\nresource \"aws_config_config_rule\" \"require_tag\" {\n  name = \"require-tags\"\n\n  source {\n    owner             = \"AWS\"\n    source_identifier = \"REQUIRED_TAGS\"\n  }\n\n  input_parameters = jsonencode({\n    tag1Key   = \"Environment\"\n    tag1Value = \"prod,dev,stg\"\n    tag2Key   = \"Project\"\n  })\n}<\/pre>\n\n\n\n<p>\u3053\u308c\u3089\u306e\u5b9f\u52d9\u30c6\u30af\u30cb\u30c3\u30af\u3092\u9069\u5207\u306b\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30c1\u30fc\u30e0\u958b\u767a\u306e\u52b9\u7387\u5316\u3068\u54c1\u8cea\u306e\u5411\u4e0a\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u7279\u306b\u5927\u898f\u6a21\u306a\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u306f\u3001\u3053\u308c\u3089\u306e\u30d7\u30e9\u30af\u30c6\u30a3\u30b9\u304c\u91cd\u8981\u306a\u5f79\u5272\u3092\u679c\u305f\u3057\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-2287","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\/2287","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=2287"}],"version-history":[{"count":1,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2287\/revisions"}],"predecessor-version":[{"id":2288,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=\/wp\/v2\/posts\/2287\/revisions\/2288"}],"wp:attachment":[{"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2287"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2287"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dexall.co.jp\/articles\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}