{"id":19915,"date":"2023-06-23T19:07:07","date_gmt":"2023-06-23T10:07:07","guid":{"rendered":"https:\/\/itport.cloud\/?p=19915"},"modified":"2023-06-23T19:07:50","modified_gmt":"2023-06-23T10:07:50","slug":"post-19915","status":"publish","type":"post","link":"https:\/\/itport.cloud\/?p=19915","title":{"rendered":"\uff08\u7b2c3\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"0\">\u76ee\u6b21<\/h2>\n\n\n\n<p><a href=\"#1\" data-type=\"internal\" data-id=\"#1\">\u524d\u56de\u306e\u632f\u308a\u8fd4\u308a<\/a><br><a href=\"#2\" data-type=\"internal\" data-id=\"#2\">EC2\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210<\/a><br>  &#8211; <a href=\"#2-1\" data-type=\"internal\" data-id=\"#2-1\">ec2.tf<\/a><br>  &#8211; <a href=\"#2-2\" data-type=\"internal\" data-id=\"#2-2\">Elastic IP\u3092\u8ffd\u52a0\u3059\u308b\u969b\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9<\/a> <br><a href=\"#3\" data-type=\"internal\" data-id=\"#3\">ELB\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210<\/a><br>  &#8211; <a href=\"#3-1\" data-type=\"internal\" data-id=\"#3-1\">elb.tf<\/a><br><a href=\"#4\" data-type=\"internal\" data-id=\"#4\">\u5909\u6570\u5b9a\u7fa9\u306e\u8ffd\u52a0\u3068.tfvars\u306e\u7528\u610f<\/a> <br>  &#8211; <a href=\"#4-1\" data-type=\"internal\" data-id=\"#4-1\">variables.tf<\/a><br>  &#8211; <a href=\"#4-2\" data-type=\"internal\" data-id=\"#4-2\">vars\/terraform.tfvars<\/a><br><a href=\"#5\" data-type=\"internal\" data-id=\"#5\">Terraform\u306e\u5b9f\u884c<\/a><br><a href=\"#6\" data-type=\"internal\" data-id=\"#6\">\u7d42\u308f\u308a\u306b<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"1\">\u524d\u56de\u306e\u632f\u308a\u8fd4\u308a<\/h2>\n\n\n\n<p>\u524d\u56de\u306fTerraform\u3067 IAM\u30ed\u30fc\u30eb\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3001Route53\u3001Certificate Manager\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-it-port wp-block-embed-it-port\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"ANRg2Mlji1\"><a href=\"https:\/\/itport.cloud\/?p=19156\">\uff08\u7b2c2\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;\uff08\u7b2c2\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b&#8221; &#8212; IT PORT\" src=\"https:\/\/itport.cloud\/?p=19156&#038;embed=true#?secret=ANRg2Mlji1\" data-secret=\"ANRg2Mlji1\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\u4eca\u56de\u306f\u3044\u3088\u3044\u3088\u30e9\u30b9\u30c8\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3068ALB\u3092\u7528\u610f\u3057\u3066Web\u30b5\u30a4\u30c8\u3092\u516c\u958b\u3057\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [3,5,6]; title: ; notranslate\" title=\"\">\nterraform\/\n\u251c\u2500vars\/\n\u2502  \u2514\u2500terraform.tfvars ... \u2605\u4eca\u56de\u2605\n\u251c\u2500acm.tf              ... \u7b2c2\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500ec2.tf              ... \u2605\u4eca\u56de\u2605\n\u251c\u2500elb.tf              ... \u2605\u4eca\u56de\u2605\n\u251c\u2500iam.tf              ... \u7b2c2\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500provider.tf         ... \u7b2c1\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500route53.tf          ... \u7b2c2\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500securitygroup.tf    ... \u7b2c2\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500terraform.tf        ... \u7b2c1\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500variables.tf        ... \u7b2c1\u56de\u3067\u4f5c\u6210\u6e08\n\u2514\u2500vpc.tf              ... \u7b2c1\u56de\u3067\u4f5c\u6210\u6e08\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"2\">EC2\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210 <\/h2>\n\n\n\n<p>Web\u30b5\u30fc\u30d0\u30fc\u3068\u3057\u3066EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u304c\u3001KMS\u3067\u9375\u3092\u4f5c\u6210\u3057EBS\u3092\u6697\u53f7\u5316\u3059\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<br>AMI\u306fAmazon Linux2\u306e5.10\u7cfb\u306e\u6700\u65b0\u30d3\u30eb\u30c9\u304c\u9078\u629e\u3055\u308c\u308b\u3088\u3046\u306bData Sources\u3092\u4f7f\u3063\u3066AMI ID\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"2-1\">ec2.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# AWS\u30a2\u30ab\u30a6\u30f3\u30c8ID\u3092\u53d6\u5f97\ndata \"aws_caller_identity\" \"current\" {}\nlocals {\n  account_id = data.aws_caller_identity.current.account_id\n}\n\n# Amazon Linux 2\u306e\u6700\u65b0\u306eAMI ID\u3092\u53d6\u5f97\ndata \"aws_ami\" \"amzn2\" {\n  most_recent = true\n  owners      = &#x5B;\"amazon\"]\n\n  filter {\n    name   = \"state\"\n    values = &#x5B;\"available\"]\n  }\n\n  filter {\n    name   = \"name\"\n    values = &#x5B;\"amzn2-ami-kernel-5.10-hvm*\"]\n  }\n}\n\n# EBS\u7528\u306e\u6697\u53f7\u9375\u306e\u4f5c\u6210\n# KMS Key\nresource \"aws_kms_key\" \"ec2_kms_key\" {\n  description             = \"EC2 KMS Key\"\n  deletion_window_in_days = 10\n  policy = jsonencode({\n    Version = \"2012-10-17\"\n    Statement = &#x5B;\n      {\n        \"Sid\" : \"Enable IAM User Permissions\",\n        \"Effect\" : \"Allow\",\n        \"Principal\" : {\n          \"AWS\" : \"arn:aws:iam::${local.account_id}:root\"\n        },\n        \"Action\" : \"kms:*\",\n        \"Resource\" : \"*\"\n      }\n    ]\n  })\n}\n\nresource \"aws_kms_alias\" \"ec2_kms_key\" {\n  name          = \"alias\/ebs-kms-key\"\n  target_key_id = aws_kms_key.ec2_kms_key.key_id\n}\n\n# EC2 Web Instance\nresource \"aws_instance\" \"web\" {\n  ami                         = data.aws_ami.amzn2.id\n  instance_type               = var.ec2_instance_type\n  iam_instance_profile        = aws_iam_instance_profile.ec2_profile.name\n  key_name                    = var.ec2_keypair\n  subnet_id                   = aws_subnet.private_a_1.id\n  monitoring                  = false\n  vpc_security_group_ids      = &#x5B;\"${aws_security_group.web_sg.id}\"]\n  hibernation                 = false\n  tenancy                     = \"default\"\n  associate_public_ip_address = false\n  user_data                   = &lt;&lt;EOF\n    #!\/bin\/sh\n    amazon-linux-extras install -y nginx1\n    systemctl start nginx\n    systemctl enable nginx\n  EOF\n\n  credit_specification {\n    cpu_credits = \"standard\"\n  }\n\n  root_block_device {\n    delete_on_termination = true\n    encrypted             = true\n    kms_key_id            = aws_kms_key.ec2_kms_key.arn\n    volume_size           = var.ec2_volume_size\n    volume_type           = \"gp3\"\n    tags = {\n      Name = \"${var.name_prefix}-web\"\n    }\n  }\n\n  lifecycle {\n    ignore_changes = &#x5B;\n      associate_public_ip_address\n    ]\n  }\n\n  tags = {\n    Name = \"${var.name_prefix}-web\"\n  }\n}\n<\/pre><\/div>\n\n\n<p>\u203b \u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u7d4c\u7531\u3067\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306bssh\u63a5\u7d9a\u3059\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u914d\u7f6e\u30b5\u30d6\u30cd\u30c3\u30c8\u3092\u30d1\u30d6\u30ea\u30c3\u30af\u30b5\u30d6\u30cd\u30c3\u30c8\u306b\u5909\u66f4\u3057\u3001Elastic IP\u3092\u8ffd\u52a0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"2-2\">Elastic IP\u3092\u8ffd\u52a0\u3059\u308b\u969b\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Elastic IP\nresource \"aws_eip\" \"ec2\" {\n  instance = aws_instance.web.id\n  vpc      = true\n  tags = {\n    Name = \"${var.name_prefix}-eip-ec2\"\n  }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"3\">ELB\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210<\/h2>\n\n\n\n<p>Application Load Balancer\uff08ALB\uff09\u3001HTTPS\u3068HTTP\u306e\u5404\u30ea\u30b9\u30ca\u30fc\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\u3092ALB\u306b\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u305f\u3081\u306e\u30bf\u30fc\u30b2\u30c3\u30c8\u30b0\u30eb\u30fc\u30d7\u30a2\u30bf\u30c3\u30c1\u30e1\u30f3\u30c8\u3092\u8a18\u8f09\u3057\u307e\u3059\u3002<br>ALB\u306b\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306f<a rel=\"noreferrer noopener\" href=\"https:\/\/itport.cloud\/?p=19156#2-1\" data-type=\"URL\" data-id=\"https:\/\/itport.cloud\/?p=19156#2-1\" target=\"_blank\">\u7b2c2\u56de\u306e\u8a18\u4e8b<\/a>\u3067\u4e8b\u524d\u306b\u7528\u610f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"3-1\">elb.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# Application load balancer\nresource \"aws_lb\" \"alb\" {\n  name               = \"${var.name_prefix}-alb\"\n  internal           = false\n  subnets            = &#x5B;aws_subnet.public_a_1.id, aws_subnet.public_c_1.id]\n  security_groups    = &#x5B;aws_security_group.alb_sg.id]\n  load_balancer_type = \"application\"\n  idle_timeout       = 60\n\n  tags = {\n    Name = \"${var.name_prefix}-alb\"\n  }\n}\n\n# HTTPS Listener\nresource \"aws_lb_listener\" \"alb_https\" {\n  load_balancer_arn = aws_lb.alb.arn\n  port              = \"443\"\n  protocol          = \"HTTPS\"\n  ssl_policy        = \"ELBSecurityPolicy-TLS-1-2-Ext-2018-06\"\n  certificate_arn   = aws_acm_certificate.cert.id\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = aws_lb_target_group.alb_tg.arn\n  }\n\n  tags = {\n    Name = \"${var.name_prefix}-alb-https-listener\"\n  }\n}\n\n# HTTP Listener\nresource \"aws_lb_listener\" \"alb_http\" {\n  load_balancer_arn = aws_lb.alb.arn\n  port              = \"80\"\n  protocol          = \"HTTP\"\n\n  default_action {\n    type             = \"forward\"\n    target_group_arn = aws_lb_target_group.alb_tg.arn\n  }\n\n  tags = {\n    Name = \"${var.name_prefix}-alb-http-listener\"\n  }\n}\n\n# Target Group\nresource \"aws_lb_target_group\" \"alb_tg\" {\n  name     = \"${var.name_prefix}-alb-tg\"\n  port     = 80\n  protocol = \"HTTP\"\n  vpc_id   = aws_vpc.vpc.id\n\n  health_check {\n    healthy_threshold   = 5\n    unhealthy_threshold = 2\n    matcher             = 200\n    timeout             = 5\n    path                = \"\/\"\n    interval            = 30\n  }\n\n  tags = {\n    Name = \"${var.name_prefix}-alb-tg\"\n  }\n}\n\n# Target Group Attachment\nresource \"aws_lb_target_group_attachment\" \"alb_tg_attach\" {\n  target_group_arn = aws_lb_target_group.alb_tg.arn\n  target_id        = aws_instance.web.id\n  port             = 80\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"4\">\u5909\u6570\u5b9a\u7fa9\u306e\u8ffd\u52a0\u3068.tfvars\u306e\u7528\u610f<\/h2>\n\n\n\n<p>\u8ffd\u52a0\u3057\u305fec2\u3068elb\u306e\u5b9a\u7fa9\u3092\u4e00\u90e8\u5909\u6570\u5316\u3057\u305f\u305f\u3081 variables.tf \u306b\u5909\u6570\u3092\u8ffd\u52a0\u3057 terraform apply \u306e\u969b\u306b\u624b\u3067\u5165\u529b\u305b\u305a\u306b\u6e08\u3080\u3088\u3046\u306b terraform.tfvars \u3067\u5909\u6570\u306e\u5024\u3092\u5b9a\u7fa9\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"4-1\">variables.tf\uff08<a rel=\"noreferrer noopener\" href=\"https:\/\/itport.cloud\/?p=18835#4-1\" data-type=\"URL\" data-id=\"https:\/\/itport.cloud\/?p=18835#4-1\" target=\"_blank\">\u7b2c1\u56de\u304b\u3089\u8ffd\u8a18<\/a>\uff09<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101]; title: ; notranslate\" title=\"\">\n# -------------------------------------- #\n# General\n# -------------------------------------- #\n# Prefix\nvariable \"name_prefix\" {\n  type        = string\n  description = \"system code prefix\"\n}\n\n# Environment\nvariable \"env\" {\n  type        = string\n  description = \"tag\"\n}\n\n# Tags\nvariable \"tag_terraform\" {\n  type        = string\n  default     = \"true\"\n  description = \"tag\"\n}\n\nvariable \"tag_system_name\" {\n  type        = string\n  description = \"tag\"\n}\n\n# Profile Name\nvariable \"profile\" {\n  type        = string\n  description = \"aws cli profile name\"\n}\n\nvariable \"region\" {\n  type        = string\n  default     = \"ap-northeast-1\"\n  description = \"AWS region in which resources will get deployed. Defaults to Tokyo.\"\n}\n\n# -------------------------------------- #\n# VPC\n# -------------------------------------- #\nvariable \"vpc_cidr\" {\n  type        = string\n  description = \"VPC CIDR\"\n}\n\nvariable \"private_subnet_cidr_a_1\" {\n  type        = string\n  description = \"Private Subnets CIDR\"\n}\n\nvariable \"private_subnet_cidr_c_1\" {\n  type        = string\n  description = \"Private Subnets CIDR\"\n}\n\nvariable \"public_subnet_cidr_a_1\" {\n  type        = string\n  description = \"Public Subnets CIDR\"\n}\n\nvariable \"public_subnet_cidr_c_1\" {\n  type        = string\n  description = \"Public Subnets CIDR\"\n}\n\n# -------------------------------------- #\n# Route53\n# -------------------------------------- #\nvariable \"dns_zone\" {\n  type        = string\n  description = \"dns zone name\"\n}\n\n# -------------------------------------- #\n# EC2\n# -------------------------------------- #\nvariable \"ec2_instance_type\" {\n  type        = string\n  description = \"EC2 Instance Type\"\n}\n\nvariable \"ec2_volume_size\" {\n  type        = string\n  description = \"EBS Volume Size\"\n}\n\nvariable \"ec2_keypair\" {\n  type = string\n  description = \"EC2 Key pair name\"\n}\n\n# -------------------------------------- #\n# ELB \u30d8\u30eb\u30b9\u30c1\u30a7\u30c3\u30af\u3059\u308b\u30d1\u30b9\n# -------------------------------------- #\nvariable \"elb_healthcheck_path\" {\n    type = string\n    default = \"\/\"\n    description = \"health check path\"\n}\n<\/pre><\/div>\n\n\n<p>\u5909\u6570\u306b\u5bfe\u3057\u3066\u5024\u3092\u5165\u308c\u3066\u304a\u304d\u305f\u3044\u305f\u3081 .tfvars \u3092\u7528\u610f\u3057\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5185\u5bb9\u3092\u5165\u529b\u3057\u307e\u3059\u3002<br>\u203b \u308f\u3056\u308f\u3056\u5909\u6570\u5316\u3059\u308b\u7406\u7531\u3068\u3057\u3066\u306f\u958b\u767a\u3001\u672c\u756a\u7b49\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u8907\u6570\u74b0\u5883\u306b\u30c7\u30d7\u30ed\u30a4\u3092\u3059\u308b\u969b\u306b\u4e00\u90e8\u8a2d\u5b9a\u3092\u5909\u3048\u305f\u3044\u969b\u306a\u3069\u306b\u5909\u6570\u5316\u3057\u3066\u304a\u3044\u305f\u308a\u3057\u3066\u3044\u307e\u3059\u3002\u3082\u3057\u304f\u306f\u3001\u8907\u6570\u306e\u30ea\u30bd\u30fc\u30b9\u306b\u540c\u3058\u5024\u3092\u5165\u308c\u3066\u304a\u304d\u305f\u3044\u5834\u5408\u306a\u3069\u306b\u4f7f\u3063\u305f\u308a\u3057\u307e\u3059\u3002\uff08\u305d\u306e\u5834\u5408\u306f locals \u3067\u5b9a\u7fa9\u3057\u3066\u3082\u826f\u3044\u304b\u3068\u601d\u3044\u307e\u3059\uff09<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"4-2\">vars\/terraform.tfvars<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n# General\nname_prefix = \"itport\" # \u5404\u30ea\u30bd\u30fc\u30b9\u306eName\u30bf\u30b0\u306e\u63a5\u982d\u8f9e\u306b\u4f7f\u7528\u3059\u308b\nenv         = \"dev\"    # \u30ea\u30bd\u30fc\u30b9\u30bf\u30b0\u306b\u8a18\u8f09\u3059\u308b\n\n# Shared Resource Tags\ntag_terraform   = \"true\"   # Terraform\u3092\u4f7f\u7528\u3057\u3066\u69cb\u7bc9\u3055\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u304b\u5206\u304b\u308b\u3088\u3046\u306b\u3059\u308b\ntag_system_name = \"itport\" # SystemName\u30bf\u30b0\u306b\u4f7f\u7528\u3059\u308b\n\n# Network\nregion  = \"ap-northeast-1\"\nprofile = \"itport\"\n\n# VPC CIDR\nvpc_cidr = \"10.0.0.0\/22\"\n\n# Subnets CIDR\nprivate_subnet_cidr_a_1 = \"10.0.0.0\/27\"\nprivate_subnet_cidr_c_1 = \"10.0.0.32\/27\"\npublic_subnet_cidr_a_1  = \"10.0.1.0\/27\"\npublic_subnet_cidr_c_1  = \"10.0.1.32\/27\"\n\n# EC2\nec2_instance_type = \"t3.small\"\nec2_keypair       = \"itport\"\nec2_volume_size   = 50\n\n# Route53\ndns_zone = \"\u4f5c\u6210\u3057\u305f\u3044\u30be\u30fc\u30f3\u540d\"\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"5\">Terraform\u306e\u5b9f\u884c<\/h2>\n\n\n\n<p>\u305d\u308c\u3067\u306fTerraform\u3092\u5b9f\u884c\u3057\u3066\u3044\u304d\u307e\u3059\u3002plan\u3092\u884c\u3044\u5fc5\u305a\u3069\u3046\u3044\u3046\u30ea\u30bd\u30fc\u30b9\u304c\u4f5c\u3089\u308c\u308b\u306e\u304b\u78ba\u8a8d\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; auto-links: false; gutter: false; title: ; notranslate\" title=\"\">\n# \u521d\u56de\u306f\u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u3092\u521d\u671f\u5316\u3059\u308b\nterraform init\n\n# \u5b9f\u884c\u8a08\u753b\u3092\u78ba\u8a8d\nterraform plan -var-file .\\vars\\terraform.tfvars\n\n# \u5b9f\u884c\nterraform apply -var-file .\\vars\\terraform.tfvars\n<\/pre><\/div>\n\n\n<p>\u203b Windows \u3067\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059\u3002Mac\u3084Linux\u306e\u5834\u5408\u306f.tfvars\u306e\u30d1\u30b9\u3092\u30d0\u30c3\u30af\u30b9\u30e9\u30c3\u30b7\u30e5\u3067\u306f\u306a\u304f\u30b9\u30e9\u30c3\u30b7\u30e5\u306b\u3057\u307e\u3059\u3002<br>\u203b ACM\u8a3c\u660e\u66f8\u767a\u884c\u6642\u306eDNS\u691c\u8a3c\u304c\u6210\u529f\u3057\u306a\u3044\u3068\u5f8c\u7d9a\u306eALB\u306eHTTPS\u30ea\u30b9\u30ca\u30fc\u306e\u4f5c\u6210\u304c\u5931\u6557\u3057\u307e\u3059\u3002\u5229\u7528\u3059\u308b\u30c9\u30e1\u30a4\u30f3\u306e\u6a29\u5a01DNS\u3092Route53\u306b\u5909\u3048\u308b\u3088\u3046\u306b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br>\u203b \u521d\u56de\u306eapply\u6642\u306fdestroy\u3055\u308c\u308b\u30ea\u30bd\u30fc\u30b9\u306f\u306a\u3044\u3068\u601d\u3044\u307e\u3059\u304c\u30012\u56de\u76ee\u4ee5\u964d\u306f\u518d\u4f5c\u6210\uff08destroy &amp; add\uff09\u3055\u308c\u3066\u3057\u307e\u3046\u5909\u66f4\u304c\u542b\u307e\u308c\u306a\u3044\u304b\u5fc5\u305a\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070EC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306eAMI ID\u3092\u5909\u3048\u3088\u3046\u3068\u3057\u305f\u5834\u5408\u306a\u3069\u3001\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u30b3\u30f3\u30bd\u30fc\u30eb\u3067\u5909\u66f4\u51fa\u6765\u306a\u3044\u3088\u3046\u306a\u5c5e\u6027\u3092\u5909\u3048\u3088\u3046\u3068\u3059\u308b\u3068\u524a\u9664\u3057\u3066\u4f5c\u6210\u3068\u3044\u3046\u6319\u52d5\u306b\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u306e\u305f\u3081\u6700\u521d\u306b terraform plan \u3067\u78ba\u8a8d\u3092\u3057\u3066\u304a\u304f\u306e\u304c\u30d9\u30b9\u30c8\u3067\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"terraform-plan-e69982e381abe8a1a8e7a4bae38195e3828ce3828be6a78be7af89e6a682e8a681e3818ce8a1a8e7a4bae38195e3828ce381a6e38184e3828be58685-1\">terraform plan \u6642\u306b\u8868\u793a\u3055\u308c\u308b\u69cb\u7bc9\u6982\u8981\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u5185\u5bb9\u306e\u4f8b<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nPlan: 34 to add, 0 to change, 0 to destroy.\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"6\">\u7d42\u308f\u308a\u306b<\/h2>\n\n\n\n<p>Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5\u3092\u6700\u5f8c\u307e\u3067\u898b\u3066\u304f\u3060\u3055\u308a\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\uff01<br>\u3082\u3061\u308d\u3093\u3067\u306f\u3054\u3056\u3044\u307e\u3059\u304c\u3001\u79c1\u306e\u66f8\u304d\u65b9\u304c\u5168\u3066\u3067\u306f\u3054\u3056\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u8907\u6570\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u7528\u610f\u3059\u308b\u5834\u5408\u306f\u30e2\u30b8\u30e5\u30fc\u30eb\u5316\u3092\u3057\u3066\u7c21\u7565\u3057\u3066\u66f8\u3051\u308b\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3082\u53ef\u80fd\u3067\u3059\u3057\u3001\u4eca\u56de\u5168\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u540c\u968e\u5c64\u306b\u914d\u7f6e\u3057\u307e\u3057\u305f\u304c\u3001\u5f71\u97ff\u7bc4\u56f2\u3092\u5c11\u306a\u304f\u3059\u308b\u305f\u3081\u306b\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u5358\u4f4d\u3067\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u5206\u3051\u3066\u3082\u826f\u3044\u304b\u3068\u601d\u3044\u307e\u3059\u3002\uff08Terraform\u306e\u5b9f\u884c\u306f\u30ab\u30ec\u30f3\u30c8\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u76f4\u4e0b\u306b\u914d\u7f6e\u3055\u308c\u305f .tf \u3092\u5143\u306b\u5b9f\u884c\u3055\u308c\u308b\uff09<\/p>\n\n\n\n<p>\u305d\u3057\u3066\u3001\u306a\u308b\u3079\u304f\u30b7\u30f3\u30d7\u30eb\u306b\u8a18\u8ff0\u3059\u308b\u3053\u3068\u3092\u5fc3\u639b\u3051\u3066\u3044\u304d\u307e\u3057\u305f\u304c\u4fdd\u5b88\u6027\u7b49\u3092\u8003\u616e\u3057\u3066\u3069\u3046\u66f8\u3044\u3066\u3044\u304f\u304b\u306f\u3001\u6bce\u56de\u5272\u3068\u60a9\u3080\u3068\u3053\u308d\u3067\u3059\u3002\u4f8b\u3048\u3070AMI ID\u306b\u95a2\u3057\u3066\u3082 Data Sources \u3092\u4f7f\u7528\u3057\u305f\u305f\u3081\u3001\u4eca\u56de\u306e\u66f8\u304d\u65b9\u3060\u3068\u90fd\u5ea6\u6700\u65b0\u306eID\u3092\u53d6\u5f97\u3057\u3066\u3057\u307e\u3046\u305f\u3081\u3001\u6642\u9593\u306e\u7d4c\u904e\u3068\u5171\u306b\u6700\u65b0\u306eID\u304c\u5909\u308f\u308b\u305f\u3081Destroy\u3055\u308c\u308b\u5371\u967a\u304c\u3042\u308a\u307e\u3059\u3002<br>\u3067\u3059\u306e\u3067\u3001\u3042\u3048\u3066AMI ID\u3092\u76f4\u63a5\u66f8\u3044\u3066\u3057\u307e\u3046\u306e\u3082\u624b\u304b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4eca\u5f8c\u3082\u3001\u3088\u308a\u826f\u3044\u66f8\u304d\u65b9\u304c\u51fa\u6765\u308b\u3088\u3046\u7cbe\u9032\u3057\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u3067\u306f\uff01<\/p>\n\n\n<ul class=\"lcp_catlist\" id=\"lcp_instance_0\"><li><a href=\"https:\/\/itport.cloud\/?p=18835\">\uff08\u7b2c1\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b<\/a><\/li><li><a href=\"https:\/\/itport.cloud\/?p=19156\">\uff08\u7b2c2\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b<\/a><\/li><li class=\"current\"><a href=\"https:\/\/itport.cloud\/?p=19915\">\uff08\u7b2c3\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b<\/a><\/li><\/ul>\n\n\n","protected":false},"excerpt":{"rendered":"\u76ee\u6b21 \u524d\u56de\u306e\u632f\u308a\u8fd4\u308aEC2\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210 &#8211; ec2.tf &#8211; Elastic IP\u3092\u8ffd\u52a0\u3059\u308b\u969b\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9 ELB\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u306e\u4f5c\u6210 &#8211; elb.tf\u5909\u6570\u5b9a\u7fa9\u306e\u8ffd\u52a0\u3068.tfvars\u306e\u7528\u610f &#8211; variables.tf &#8211; vars\/terraform.tfvarsTerraform\u306e\u5b9f\u884c\u7d42\u308f\u308a\u306b \u524d\u56de\u306e\u632f\u308a\u8fd4\u308a \u524d\u56de\u306fTerraform\u3067 IAM\u30ed\u30fc\u30eb\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3001Route53\u3001Certificate Manager\u306e\u30ea\u30bd\u30fc\u30b9\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002 https:\/\/itport.cloud\/?p=19156 \u4eca\u56de\u306f\u3044\u3088\u3044\u3088\u30e9\u30b9\u30c8\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3068ALB\u3092\u7528\u610f\u3057\u3066Web\u30b5\u30a4\u30c8\u3092\u516c\u958b\u3057\u307e\u3059\u3002 terraform\/ \u251c\u2500&hellip;","protected":false},"author":3,"featured_media":19919,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[139],"class_list":{"0":"post-19915","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-aws","8":"tag-season45"},"_links":{"self":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/19915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=19915"}],"version-history":[{"count":40,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/19915\/revisions"}],"predecessor-version":[{"id":20334,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/19915\/revisions\/20334"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/media\/19919"}],"wp:attachment":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}