{"id":19156,"date":"2022-07-15T18:30:00","date_gmt":"2022-07-15T09:30:00","guid":{"rendered":"https:\/\/itport.cloud\/?p=19156"},"modified":"2022-07-14T18:36:42","modified_gmt":"2022-07-14T09:36:42","slug":"post-19156","status":"publish","type":"post","link":"https:\/\/itport.cloud\/?p=19156","title":{"rendered":"\uff08\u7b2c2\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\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/a><br>\u3000- <a href=\"#2-1\" data-type=\"internal\" data-id=\"#2-1\">securitygroup.tf<\/a><br><a href=\"#3\" data-type=\"internal\" data-id=\"#3\">IAM\u95a2\u9023\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/a><br>\u3000- <a href=\"#3-1\" data-type=\"internal\" data-id=\"#3-1\">iam.tf<\/a><br><a href=\"#4\" data-type=\"internal\" data-id=\"#4\">Route 53\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/a><br>\u3000- <a href=\"#4-1\" data-type=\"internal\" data-id=\"#4-1\">route53.tf<\/a><br><a href=\"#5\" data-type=\"internal\" data-id=\"#5\">Certificate Manager\uff08ACM\uff09\u306e\u5b9a\u7fa9\u3092\u4f5c\u6210<\/a><br>\u3000- <a href=\"#5-1\" data-type=\"internal\" data-id=\"#5-1\">acm.tf<\/a><br><a href=\"#6\" data-type=\"internal\" data-id=\"#6\">\u6b21\u56de\u4e88\u544a<\/a><br><\/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\u3067VPC\u30ea\u30bd\u30fc\u30b9\u306e\u5b9a\u7fa9\u307e\u3067\u66f8\u304d\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=\"K2eeFgYw4x\"><a href=\"https:\/\/itport.cloud\/?p=18835\">\uff08\u7b2c1\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\u7b2c1\u56de\uff09Terraform\u3067AWS\u4e0a\u306bWeb\u30b5\u30fc\u30d0\u30fc\u3092\u69cb\u7bc9\u3059\u308b&#8221; &#8212; IT PORT\" src=\"https:\/\/itport.cloud\/?p=18835&#038;embed=true#?secret=K2eeFgYw4x\" data-secret=\"K2eeFgYw4x\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>\u4eca\u56de\u306f\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u3001IAM\u3001Route 53\u3001Certificate Manager\u30ea\u30bd\u30fc\u30b9\u306e\u5b9a\u7fa9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; gutter: false; highlight: [4,7,9,10]; title: ; notranslate\" title=\"\">\nterraform\/\n\u251c\u2500vars\/\n\u2502  \u2514\u2500terraform.tfvars\n\u251c\u2500acm.tf              ... \u2605\u4eca\u56de\u2605\n\u251c\u2500ec2.tf\n\u251c\u2500elb.tf\n\u251c\u2500iam.tf              ... \u2605\u4eca\u56de\u2605\n\u251c\u2500provider.tf         ... \u7b2c1\u56de\u3067\u4f5c\u6210\u6e08\n\u251c\u2500route53.tf          ... \u2605\u4eca\u56de\u2605\n\u251c\u2500securitygroup.tf    ... \u2605\u4eca\u56de\u2605\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\">\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7\u306f\uff12\u3064\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>ALB\u7528\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7<ul><li>\u4eca\u56de\u306f\u691c\u8a3c\u306e\u305f\u3081HTTPS\u3001HTTP\u3092\u81ea\u5206\u306eIP\u30a2\u30c9\u30ec\u30b9\u304b\u3089\u306e\u307f\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u3088\u3046\u306b\u8a31\u53ef\u3057\u307e\u3059\u3002<\/li><\/ul><\/li><li>EC2\uff08Web\u30b5\u30fc\u30d0\u30fc\uff09\u7528\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b0\u30eb\u30fc\u30d7<ul><li>ALB\u304b\u3089\u306e80\u756a\u30dd\u30fc\u30c8\u3078\u306e\u53d7\u4fe1\u3092\u8a31\u53ef\u3057\u307e\u3059\u3002<\/li><\/ul><\/li><\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"2-1\">securitygroup.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; highlight: [20,31]; title: ; notranslate\" title=\"\">\ndata http ifconfig {\n  url = \"https:\/\/ifconfig.co\/ip\"\n}\n\nlocals {\n  myip = chomp(data.http.ifconfig.body)\n}\n\n# Internal ALB Security Group\nresource \"aws_security_group\" \"alb_sg\" {\n  name   = \"${var.name_prefix}-alb-sg\"\n  vpc_id = aws_vpc.vpc.id\n\n  \/* In-Bound *\/\n  ingress = &#x5B;\n    {\n      from_port        = 80\n      to_port          = 80\n      protocol         = \"tcp\"\n      cidr_blocks      = &#x5B;\"${local.myip}\/32\"]\n      description      = \"http allow\"\n      ipv6_cidr_blocks = &#x5B;]\n      prefix_list_ids  = &#x5B;]\n      security_groups  = &#x5B;]\n      self             = false\n    },\n    {\n      from_port        = 443\n      to_port          = 443\n      protocol         = \"tcp\"\n      cidr_blocks      = &#x5B;\"${local.myip}\/32\"]\n      description      = \"https allow\"\n      ipv6_cidr_blocks = &#x5B;]\n      prefix_list_ids  = &#x5B;]\n      security_groups  = &#x5B;]\n      self             = false\n    }\n  ]\n\n  \/* Out-Bound *\/\n  egress = &#x5B;\n    {\n      from_port        = 0\n      to_port          = 0\n      protocol         = \"-1\"\n      cidr_blocks      = &#x5B;\"0.0.0.0\/0\"]\n      description      = \"egress allow\"\n      ipv6_cidr_blocks = &#x5B;]\n      prefix_list_ids  = &#x5B;]\n      security_groups  = &#x5B;]\n      self             = false\n    }\n  ]\n\n  tags = {\n    Name = \"${var.name_prefix}-alb-sg\"\n  }\n}\n\n# EC2 Web Server Security Group\nresource \"aws_security_group\" \"web_sg\" {\n  name   = \"${var.name_prefix}-web-server-sg\"\n  vpc_id = aws_vpc.vpc.id\n\n  \/* In-Bound *\/\n  ingress = &#x5B;\n    {\n      from_port        = 80\n      to_port          = 80\n      protocol         = \"tcp\"\n      cidr_blocks      = &#x5B;]\n      description      = \"http allow from alb\"\n      ipv6_cidr_blocks = &#x5B;]\n      prefix_list_ids  = &#x5B;]\n      security_groups  = &#x5B;aws_security_group.alb_sg.id]\n      self             = false\n    }\n  ]\n\n  \/* Out-Bound *\/\n  egress = &#x5B;\n    {\n      from_port        = 0\n      to_port          = 0\n      protocol         = \"-1\"\n      cidr_blocks      = &#x5B;\"0.0.0.0\/0\"]\n      description      = \"egress allow\"\n      ipv6_cidr_blocks = &#x5B;]\n      prefix_list_ids  = &#x5B;]\n      security_groups  = &#x5B;]\n      self             = false\n    }\n  ]\n\n  tags = {\n    Name = \"${var.name_prefix}-web-server-sg\"\n  }\n}\n<\/pre><\/div>\n\n\n<p>\u203b \u4f5c\u6210\u3057\u305f\u30ea\u30bd\u30fc\u30b9\u306f\u5f8c\u307b\u3069\u3001ALB\u3068EC2\u306e\u30ea\u30bd\u30fc\u30b9\u304b\u3089\u53c2\u7167\u3057\u307e\u3059\u3002Web\u30b5\u30a4\u30c8\u3092\u5168\u516c\u958b\u3059\u308b\u5834\u5408\u306f<span class=\"has-inline-color has-vivid-green-cyan-color\"><strong>[&#8220;${local.myip}\/32&#8221;]<\/strong><\/span>\u306e\u90e8\u5206\u3092<span class=\"has-inline-color has-vivid-green-cyan-color\"><strong>[&#8220;0.0.0.0\/0&#8221;]<\/strong><\/span>\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"3\">IAM\u95a2\u9023\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>EC2\u306bIAM\u30ed\u30fc\u30eb\u3092\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u305f\u3081\u306e\u5b9a\u7fa9\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>EC2\u7528\u306e\u30ed\u30fc\u30eb<\/strong><br>\u21d2 SSM\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u304c\u4f7f\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u300cAmazonSSMManagedInstanceCore\u300dAWS\u7ba1\u7406\u30dd\u30ea\u30b7\u30fc\u3092\u30a2\u30bf\u30c3\u30c1<br>\u21d2 Cloud Watch Agent\u3092\u5c0e\u5165\u3059\u308b\u60f3\u5b9a\u3092\u3057\u3066\u300cCloudWatchAgentServerPolicy\u300d\u3092\u30a2\u30bf\u30c3\u30c1<\/li><li><strong>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb<\/strong><\/li><li><strong>\u30dd\u30ea\u30b7\u30fc<\/strong><br>\u21d2 ssm:StartSession\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8a31\u53ef<\/li><li><strong>\u30dd\u30ea\u30b7\u30fc\u3092\u30ed\u30fc\u30eb\u306b\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u5b9a\u7fa9<\/strong><br>\u21d2 \u4f5c\u6210\u3057\u305f\u30ab\u30b9\u30bf\u30de\u30fc\u7ba1\u7406\u30dd\u30ea\u30b7\u30fc\u3092EC2\u7528\u306e\u30ed\u30fc\u30eb\u306b\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u5b9a\u7fa9\u3092\u66f8\u304d\u307e\u3059\u3002<\/li><\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"3-1\">iam.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; highlight: [21,22,23,24,52]; title: ; notranslate\" title=\"\">\n# ------------------------------------------------------ #\n# IAM\n# ------------------------------------------------------ #\n\n# EC2 Instance Attach Role\nresource \"aws_iam_role\" \"ec2_role\" {\n  name = \"${var.name_prefix}-ec2-role\"\n  assume_role_policy = jsonencode({\n    \"Version\" : \"2012-10-17\",\n    \"Statement\" : &#x5B;\n      {\n        \"Effect\" : \"Allow\",\n        \"Principal\" : {\n          \"Service\" : \"ec2.amazonaws.com\"\n        },\n        \"Action\" : \"sts:AssumeRole\"\n      }\n    ]\n  })\n\n  managed_policy_arns = &#x5B;\n    \"arn:aws:iam::aws:policy\/AmazonSSMManagedInstanceCore\",\n    \"arn:aws:iam::aws:policy\/CloudWatchAgentServerPolicy\"\n  ]\n\n  tags = {\n    Name = \"${var.name_prefix}-ec2-role\"\n  }\n}\n\n# Instance Profile\nresource \"aws_iam_instance_profile\" \"ec2_profile\" {\n  name = \"${var.name_prefix}-ec2-profile\"\n  role = aws_iam_role.ec2_role.name\n  tags = {\n    Name = \"${var.name_prefix}-ec2-profile\"\n  }\n}\n\n# IAM Policy\nresource \"aws_iam_policy\" \"start_session\" {\n  depends_on = &#x5B;aws_instance.web]\n  name        = \"${var.name_prefix}-start-session-policy\"\n  description = \"session manager start session\"\n  policy = jsonencode({\n    \"Version\" : \"2012-10-17\",\n    \"Statement\" : &#x5B;\n      {\n        \"Effect\" : \"Allow\",\n        \"Action\" : \"ssm:StartSession\",\n        \"Resource\" : &#x5B;\n          \"arn:aws:ec2:*:*:instance\/${aws_instance.web.id}\",\n          \"arn:aws:ssm:*:*:document\/AWS-StartSSHSession\"\n        ]\n      }\n    ]\n  })\n\n  tags = {\n    Name = \"${var.name_prefix}-start-session-policy\"\n  }\n}\n\nresource \"aws_iam_policy_attachment\" \"ec2_role\" {\n  depends_on = &#x5B;aws_iam_policy.start_session]\n  name       = \"ec2-role-attachment\"\n  roles      = &#x5B;aws_iam_role.ec2_role.name]\n  policy_arn = aws_iam_policy.start_session.arn\n}\n<\/pre><\/div>\n\n\n<p>\u203b SSM\u30b9\u30bf\u30fc\u30c8\u30bb\u30c3\u30b7\u30e7\u30f3\u7528\u306e\u30dd\u30ea\u30b7\u30fc\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9ID\u3092\u5909\u6570\u3068\u3057\u3066\u4f7f\u7528\u3059\u308b\u305f\u3081\u3001\u300c<strong>aws_iam_role<\/strong>\u300d\u306e\u300c<strong>managed_policy_arns<\/strong>\u300d\u306b\u306f\u66f8\u304b\u305a\u3001\u3042\u3048\u3066\u300c<strong>aws_iam_policy_attachment\u300d<\/strong>\u30ea\u30bd\u30fc\u30b9\u3092\u5225\u9014\u5b9a\u7fa9\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u3046\u3059\u308b\u3053\u3068\u3067apply\u5b9f\u884c\u6642\u306bEC2\u30ea\u30bd\u30fc\u30b9\u4f5c\u6210\u5f8c\u306b\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u4f5c\u6210\u3057\u30a2\u30bf\u30c3\u30c1\u3057\u3066\u304f\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\uff08\u4e0b\u8a18\u53c2\u7167\uff09<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>IAM\u30ed\u30fc\u30eb\u3092\u4f5c\u6210<\/li><li>EC2\u3092\u4f5c\u6210\u3001\u4f5c\u6210\u3057\u305fIAM\u30ed\u30fc\u30eb\u3092EC2\u306b\u30a2\u30bf\u30c3\u30c1<\/li><li>\u30dd\u30ea\u30b7\u30fc\u3092\u4f5c\u6210<br>\u21d2 EC2\u304c\u4f5c\u6210\u3055\u308c\u306a\u3044\u306852\u884c\u76ee\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9ID\u304c\u5206\u304b\u3089\u306a\u3044\u305f\u3081\u3001\u3053\u306e\u30bf\u30a4\u30df\u30f3\u30b0\u3067\u4f5c\u6210\u3055\u308c\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3002\u300c<strong>aws_iam_role<\/strong>\u300d\u306e\u300c<strong>managed_policy_arns<\/strong>\u300d\u3067\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u3053\u3068\u3092\u66f8\u3044\u3066\u3057\u307e\u3046\u3068EC2\u304c\u4f5c\u6210\u3055\u308c\u308b\u524d\u306b\u3053\u306e\u30dd\u30ea\u30b7\u30fc\u3092\u4f5c\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u3002<\/li><li>\u30dd\u30ea\u30b7\u30fc\u3092IAM\u30ed\u30fc\u30eb\u306b\u30a2\u30bf\u30c3\u30c1<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"4\">Route 53\u306e\u30ea\u30bd\u30fc\u30b9\u5b9a\u7fa9\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>Web\u30b5\u30fc\u30d0\u30fc\u3092\u516c\u958b\u3059\u308b\u306b\u306fDNS\u306e\u8a2d\u5b9a\u304c\u5fc5\u8981\u3067\u3059\u3002Route53\u3067\u30be\u30fc\u30f3\u3092\u4f5c\u6210\u3057\u3001\u30ec\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"4-1\">route53.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; auto-links: false; title: ; notranslate\" title=\"\">\n# Public DNS Zone\nresource \"aws_route53_zone\" \"public\" {\n  name = var.dns_zone\n}\n\n# DNS Record\nresource \"aws_route53_record\" \"www\" {\n  zone_id = aws_route53_zone.public.zone_id\n  name    = \"www.${var.dns_zone}\"\n  type    = \"CNAME\"\n  ttl     = \"300\"\n  records = &#x5B;\n    \"${aws_lb.alb.dns_name}\"\n  ]\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"5\">Certificate Manager\uff08ACM\uff09\u306e\u5b9a\u7fa9\u3092\u4f5c\u6210<\/h2>\n\n\n\n<p>\u6628\u4eca\u3067\u306f\u3001SSL\/TLS\u306b\u3088\u308b\u6697\u53f7\u5316\u304c\u5fc5\u9808\u3067\u3059\u306e\u3067\u3001ACM\u3067\u8a3c\u660e\u66f8\u3092\u767a\u884c\u3057\u307e\u3059\u3002DNS\u691c\u8a3c\u306b\u3088\u308b\u30c9\u30e1\u30a4\u30f3\u6240\u6709\u8005\u306e\u78ba\u8a8d\u3082\u3053\u3053\u3067\u30ec\u30b3\u30fc\u30c9\u8ffd\u52a0\u304c\u53ef\u80fd\u3067\u3059\u3002<a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/acm_certificate_validation\" target=\"_blank\" rel=\"noreferrer noopener\">\u516c\u5f0f<\/a>\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u8003\u306b\u8a18\u8f09\u3092\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"5-1\">acm.tf<\/h5>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nresource \"aws_acm_certificate\" \"cert\" {\n  domain_name = \"www.${var.dns_zone}\"\n  validation_method = \"DNS\"\n\n  lifecycle {\n    create_before_destroy = true\n  }\n\n  tags = {\n    Name = \"${var.name_prefix}-acm\"\n  }\n}\n\nresource \"aws_route53_record\" \"cert_validation\" {\n  for_each = {\n    for x in aws_acm_certificate.cert.domain_validation_options : x.domain_name => {\n      name   = x.resource_record_name\n      record = x.resource_record_value\n      type   = x.resource_record_type\n    }\n  }\n\n  allow_overwrite = true\n  name            = each.value.name\n  records         = &#x5B;each.value.record]\n  type            = each.value.type\n  ttl             = \"300\"\n\n  zone_id = aws_route53_zone.public.id\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"6\">\u6b21\u56de\u4e88\u544a<\/h2>\n\n\n\n<p>\u4eca\u56de\u306fSSL\/TLS\u8a3c\u660e\u66f8\u304c\u5b9f\u7528\u7684\u306b\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u8003\u616e\u3082\u3057\u307e\u3057\u305f\u3002\u6b21\u56de\u306f\u3044\u3088\u3044\u3088\u5927\u8a70\u3081\u3067ELB\u3001EC2\u3092\u4f5c\u6210\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/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 class=\"current\"><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><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","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":19157,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[139],"class_list":{"0":"post-19156","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\/19156","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=19156"}],"version-history":[{"count":50,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/19156\/revisions"}],"predecessor-version":[{"id":19488,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/posts\/19156\/revisions\/19488"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=\/wp\/v2\/media\/19157"}],"wp:attachment":[{"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=19156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=19156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itport.cloud\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=19156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}