Created
          June 16, 2016 09:40 
        
      - 
      
- 
        Save 1syo/71bade10f59d567d24c0b99c4a683592 to your computer and use it in GitHub Desktop. 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | provider "aws" {} | |
| # | |
| # VPC | |
| # | |
| resource "aws_vpc" "vpc" { | |
| cidr_block = "10.10.0.0/16" | |
| instance_tenancy = "default" | |
| enable_dns_hostnames = true | |
| tags { | |
| Name = "vpc" | |
| } | |
| } | |
| resource "aws_internet_gateway" "gateway" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| tags { | |
| Name = "gateway" | |
| } | |
| } | |
| resource "aws_route_table" "route_table" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| route { | |
| cidr_block = "0.0.0.0/0" | |
| gateway_id = "${aws_internet_gateway.gateway.id}" | |
| } | |
| tags { | |
| Name = "route_table" | |
| } | |
| } | |
| resource "aws_subnet" "public_subnet" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| cidr_block = "10.10.1.0/24" | |
| availability_zone = "ap-northeast-1a" | |
| map_public_ip_on_launch = true | |
| tags { | |
| Name = "public_subnet" | |
| } | |
| } | |
| resource "aws_route_table_association" "route_table_association" { | |
| subnet_id = "${aws_subnet.public_subnet.id}" | |
| route_table_id = "${aws_route_table.route_table.id}" | |
| } | |
| # | |
| # ネットワークACL | |
| # | |
| # | |
| # プロダクション向けネットワークACL | |
| # | |
| resource "aws_network_acl" "public_network_acl" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| subnet_ids = [ | |
| "${aws_subnet.public_subnet.id}" | |
| ] | |
| ingress { | |
| rule_no = 100 | |
| protocol = "tcp" | |
| action = "allow" | |
| from_port = 80 | |
| to_port = 80 | |
| cidr_block = "0.0.0.0/0" | |
| } | |
| ingress { | |
| rule_no = 110 | |
| protocol = "tcp" | |
| action = "allow" | |
| from_port = 443 | |
| to_port = 443 | |
| cidr_block = "0.0.0.0/0" | |
| } | |
| ingress { | |
| rule_no = 120 | |
| protocol = "tcp" | |
| action = "allow" | |
| from_port = 22 | |
| to_port = 22 | |
| cidr_block = "0.0.0.0/0" | |
| } | |
| ingress { | |
| rule_no = 130 | |
| protocol = "tcp" | |
| action = "allow" | |
| from_port = 1024 | |
| to_port = 65535 | |
| cidr_block = "0.0.0.0/0" | |
| } | |
| egress { | |
| rule_no = 100 | |
| protocol = "-1" | |
| action = "allow" | |
| from_port = 0 | |
| to_port = 0 | |
| cidr_block = "0.0.0.0/0" | |
| } | |
| tags { | |
| Name = "public_network_acl" | |
| } | |
| } | |
| # | |
| # セキュリティグループ | |
| # | |
| resource "aws_security_group" "security_group_elb" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| name = "security_group_elb" | |
| description = "security_group_elb" | |
| ingress { | |
| from_port = 80 | |
| to_port = 80 | |
| protocol = "tcp" | |
| cidr_blocks = ["0.0.0.0/0"] | |
| } | |
| ingress { | |
| from_port = 443 | |
| to_port = 443 | |
| protocol = "tcp" | |
| cidr_blocks = ["0.0.0.0/0"] | |
| } | |
| egress { | |
| from_port = 0 | |
| to_port = 0 | |
| protocol = "-1" | |
| cidr_blocks = ["0.0.0.0/0"] | |
| } | |
| tags { | |
| Name = "security_group_elb" | |
| } | |
| } | |
| resource "aws_security_group" "security_group_ec2" { | |
| vpc_id = "${aws_vpc.vpc.id}" | |
| name = "security_group_ec2" | |
| description = "security_group_ec2" | |
| ingress { | |
| from_port = 22 | |
| to_port = 22 | |
| protocol = "tcp" | |
| cidr_blocks = ["0.0.0.0/0"] | |
| } | |
| ingress { | |
| from_port = 80 | |
| to_port = 80 | |
| protocol = "tcp" | |
| security_groups = [ | |
| "${aws_security_group.security_group_elb.id}" | |
| ] | |
| } | |
| ingress { | |
| from_port = 443 | |
| to_port = 443 | |
| protocol = "tcp" | |
| security_groups = [ | |
| "${aws_security_group.security_group_elb.id}" | |
| ] | |
| } | |
| egress { | |
| from_port = 0 | |
| to_port = 0 | |
| protocol = "-1" | |
| cidr_blocks = ["0.0.0.0/0"] | |
| } | |
| tags { | |
| Name = "security_group_ec2" | |
| } | |
| } | |
| # | |
| # EC2インスタンス | |
| # | |
| resource "aws_instance" "ec2" { | |
| ami = "ami-a21529cc" | |
| instance_type = "t2.micro" | |
| key_name = "AWS_Book_Key" | |
| availability_zone = "ap-northeast-1a" | |
| subnet_id = "${aws_subnet.public_subnet.id}" | |
| disable_api_termination = true | |
| vpc_security_group_ids = [ | |
| "${aws_security_group.security_group_ec2.id}" | |
| ] | |
| root_block_device { | |
| volume_type = "gp2" | |
| volume_size = 20 | |
| } | |
| tags { | |
| Name = "sandbox" | |
| } | |
| } | |
| # | |
| # ELB | |
| # | |
| resource "aws_elb" "elb" { | |
| name = "elb" | |
| security_groups = [ | |
| "${aws_security_group.security_group_elb.id}" | |
| ] | |
| subnets = [ | |
| "${aws_subnet.public_subnet.id}" | |
| ] | |
| listener { | |
| instance_port = 80 | |
| instance_protocol = "http" | |
| lb_port = 80 | |
| lb_protocol = "http" | |
| } | |
| health_check { | |
| healthy_threshold = 10 | |
| unhealthy_threshold = 2 | |
| timeout = 5 | |
| target = "HTTP:80/" | |
| interval = 6 | |
| } | |
| instances = [ | |
| "${aws_instance.ec2.id}" | |
| ] | |
| idle_timeout = 400 | |
| connection_draining = true | |
| connection_draining_timeout = 400 | |
| tags { | |
| Name = "elb" | |
| } | |
| } | |
| # | |
| # cloudfront | |
| # | |
| resource "aws_cloudfront_distribution" "cloudfront_distribution" { | |
| # | |
| # Distribution | |
| # | |
| price_class = "PriceClass_All" | |
| # web_acl_id = "None" | |
| aliases = ["sandbox.1syo.net", "test.1syo.net"] | |
| viewer_certificate { | |
| cloudfront_default_certificate = true | |
| } | |
| default_root_object = "index.html" | |
| #logging_config { | |
| #} | |
| comment = "Some comment" | |
| enabled = true | |
| # | |
| # Origings | |
| # | |
| origin { | |
| domain_name = "${aws_elb.elb.dns_name}" | |
| #origing_path = "" | |
| origin_id = "elb" | |
| custom_origin_config { | |
| origin_ssl_protocols = ["TLSv1", "TLSv1.1", "TLSv1.2"] | |
| origin_protocol_policy = "match-viewer" | |
| http_port = 80 | |
| https_port = 443 | |
| } | |
| } | |
| # | |
| # Behavior | |
| # | |
| default_cache_behavior { | |
| # origin_path = "*" | |
| target_origin_id = "elb" | |
| viewer_protocol_policy = "allow-all" | |
| allowed_methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT"] | |
| cached_methods = ["GET", "HEAD"] | |
| forwarded_values { | |
| headers = ["*"] | |
| cookies { | |
| forward = "all" | |
| } | |
| query_string = true | |
| } | |
| min_ttl = 0 | |
| default_ttl = 0 | |
| max_ttl = 0 | |
| } | |
| cache_behavior { | |
| path_pattern = "/assets/*" | |
| target_origin_id = "elb" | |
| viewer_protocol_policy = "allow-all" | |
| allowed_methods = ["GET", "HEAD"] | |
| cached_methods = ["GET", "HEAD"] | |
| forwarded_values { | |
| headers = ["Host", "Authorization"] | |
| cookies { | |
| forward = "none" | |
| } | |
| query_string = true | |
| } | |
| min_ttl = 0 | |
| max_ttl = 31536000 | |
| default_ttl = 86400 | |
| } | |
| # | |
| # Error Response | |
| # | |
| custom_error_response { | |
| error_code = 400 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 403 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 404 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 405 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 414 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 416 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 500 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 501 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 502 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 503 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| custom_error_response { | |
| error_code = 504 | |
| # response_page_path = | |
| error_caching_min_ttl = 0 | |
| } | |
| # | |
| # Restriction | |
| # | |
| restrictions { | |
| geo_restriction { | |
| restriction_type = "whitelist" | |
| locations = ["JP"] | |
| } | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment