2017-03-16 9 views
1

テンプレートでは、javaをセットアップし、アプリケーションをビルドして実行します。CloudFormation - Javaバックエンドを開始

すべては期待通りに機能しますが、アプリを実行するだけでは機能しません。私はAWSがコマンドを終了するのを待っているようですが、(私たちのSpring Boot Rest Backendがコマンドを返すために終了する必要があるため)応答を得られないようです。私たちは、テンプレート内で、を使用してはならないことを知っていますが、そのテンプレートからアプリを使い果たして、AWSがステータスを健全なものとして受け入れることができないため、ロールバックしません。 initセクションのコマンドに注目してください。そこには物事が起こっています。

{ 
    "AWSTemplateFormatVersion": "2010-09-09", 
    "Description": "AWS playground", 
    "Parameters": { 
     "KeyName": { 
      "Description": "Key Pair name", 
      "Type": "AWS::EC2::KeyPair::KeyName", 
      "Default": "xyz" 
     } 
    }, 
    "Mappings": { 
     "EC2RegionMap": { 
      "ap-northeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-cbf90ecb"}, 
      "ap-southeast-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-68d8e93a"}, 
      "ap-southeast-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-fd9cecc7"}, 
      "eu-central-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a8221fb5"}, 
      "eu-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-a10897d6"}, 
      "sa-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-b52890a8"}, 
      "us-east-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-1ecae776"}, 
      "us-west-1": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-d114f295"}, 
      "us-west-2": {"AmazonLinuxAMIHVMEBSBacked64bit": "ami-e7527ed7"} 
     } 
    }, 
    "Resources": { 
     "VPC": { 
      "Type": "AWS::EC2::VPC", 
      "Properties": { 
       "CidrBlock": "172.31.0.0/16", 
       "EnableDnsHostnames": "true" 
      } 
     }, 
     "InternetGateway": { 
      "Type": "AWS::EC2::InternetGateway", 
      "Properties": {} 
     }, 
     "VPCGatewayAttachment": { 
      "Type": "AWS::EC2::VPCGatewayAttachment", 
      "Properties": { 
       "VpcId": {"Ref": "VPC"}, 
       "InternetGatewayId": {"Ref": "InternetGateway"} 
      } 
     }, 
     "SubnetA": { 
      "Type": "AWS::EC2::Subnet", 
      "Properties": { 
       "AvailabilityZone": {"Fn::Select": ["0", {"Fn::GetAZs": ""}]}, 
       "CidrBlock": "172.31.38.0/24", 
       "VpcId": {"Ref": "VPC"} 
      } 
     }, 
     "SubnetB": { 
      "Type": "AWS::EC2::Subnet", 
      "Properties": { 
       "AvailabilityZone": {"Fn::Select": ["1", {"Fn::GetAZs": ""}]}, 
       "CidrBlock": "172.31.37.0/24", 
       "VpcId": {"Ref": "VPC"} 
      } 
     }, 
     "RouteTable": { 
      "Type": "AWS::EC2::RouteTable", 
      "Properties": { 
       "VpcId": {"Ref": "VPC"} 
      } 
     }, 
     "RouteTableAssociationA": { 
      "Type": "AWS::EC2::SubnetRouteTableAssociation", 
      "Properties": { 
       "SubnetId": {"Ref": "SubnetA"}, 
       "RouteTableId": {"Ref": "RouteTable"} 
      } 
     }, 
     "RouteTableAssociationB": { 
      "Type": "AWS::EC2::SubnetRouteTableAssociation", 
      "Properties": { 
       "SubnetId": {"Ref": "SubnetB"}, 
       "RouteTableId": {"Ref": "RouteTable"} 
      } 
     }, 
     "RoutePublicNATToInternet": { 
      "Type": "AWS::EC2::Route", 
      "Properties": { 
       "RouteTableId": {"Ref": "RouteTable"}, 
       "DestinationCidrBlock": "0.0.0.0/0", 
       "GatewayId": {"Ref": "InternetGateway"} 
      }, 
      "DependsOn": "VPCGatewayAttachment" 
     }, 
     "NetworkAcl": { 
      "Type": "AWS::EC2::NetworkAcl", 
      "Properties": { 
       "VpcId": {"Ref": "VPC"} 
      } 
     }, 
     "SubnetNetworkAclAssociationA": { 
      "Type": "AWS::EC2::SubnetNetworkAclAssociation", 
      "Properties": { 
       "SubnetId": {"Ref": "SubnetA"}, 
       "NetworkAclId": {"Ref": "NetworkAcl"} 
      } 
     }, 
     "SubnetNetworkAclAssociationB": { 
      "Type": "AWS::EC2::SubnetNetworkAclAssociation", 
      "Properties": { 
       "SubnetId": {"Ref": "SubnetB"}, 
       "NetworkAclId": {"Ref": "NetworkAcl"} 
      } 
     }, 
     "NetworkAclEntryIngress": { 
      "Type": "AWS::EC2::NetworkAclEntry", 
      "Properties": { 
       "NetworkAclId": {"Ref": "NetworkAcl"}, 
       "RuleNumber": "100", 
       "Protocol": "-1", 
       "RuleAction": "allow", 
       "Egress": "false", 
       "CidrBlock": "0.0.0.0/0" 
      } 
     }, 
     "NetworkAclEntryEgress": { 
      "Type": "AWS::EC2::NetworkAclEntry", 
      "Properties": { 
       "NetworkAclId": {"Ref": "NetworkAcl"}, 
       "RuleNumber": "100", 
       "Protocol": "-1", 
       "RuleAction": "allow", 
       "Egress": "true", 
       "CidrBlock": "0.0.0.0/0" 
      } 
     }, 
     "LoadBalancer": { 
      "Type": "AWS::ElasticLoadBalancing::LoadBalancer", 
      "Properties": { 
       "Subnets": [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}], 
       "LoadBalancerName": "school-elb", 
       "Listeners": [{ 
        "InstancePort": "80", 
        "InstanceProtocol": "HTTP", 
        "LoadBalancerPort": "80", 
        "Protocol": "HTTP" 
       }], 
       "HealthCheck": { 
        "HealthyThreshold": "2", 
        "Interval": "5", 
        "Target": "TCP:80", 
        "Timeout": "3", 
        "UnhealthyThreshold": "2" 
       }, 
       "SecurityGroups": [{"Ref": "LoadBalancerSecurityGroup"}], 
       "Scheme": "internet-facing" 
      }, 
      "DependsOn": "VPCGatewayAttachment" 
     }, 
     "LoadBalancerSecurityGroup": { 
      "Type": "AWS::EC2::SecurityGroup", 
      "Properties": { 
       "GroupDescription": "school-elb-sg", 
       "VpcId": {"Ref": "VPC"}, 
       "SecurityGroupIngress": [{ 
        "CidrIp": "0.0.0.0/0", 
        "FromPort": "80", 
        "IpProtocol": "tcp", 
        "ToPort": "80" 
       }] 
      } 
     }, 
     "WebServerSecurityGroup": { 
      "Type": "AWS::EC2::SecurityGroup", 
      "Properties": { 
       "GroupDescription": "school-sg", 
       "VpcId": {"Ref": "VPC"}, 
       "SecurityGroupIngress": [{ 
        "CidrIp": "0.0.0.0/0", 
        "FromPort": "22", 
        "IpProtocol": "tcp", 
        "ToPort": "22" 
       }, { 
        "FromPort": "80", 
        "ToPort": "80", 
        "IpProtocol": "tcp", 
        "SourceSecurityGroupId": {"Ref": "LoadBalancerSecurityGroup"} 
       }] 
      } 
     }, 
     "LaunchConfiguration": { 
      "Type": "AWS::AutoScaling::LaunchConfiguration", 
      "Metadata": { 
       "AWS::CloudFormation::Init": { 
        "config": { 
        "packages": { 
         "yum": { 
         "java-1.8.0-openjdk-devel": [] 
         } 
        }, 
        "sources": { 
         "/opt": "https://services.gradle.org/distributions/gradle-3.4.1-bin.zip", 
         "/home/ec2-user": "https://github.com/yandypiedra/AWS_Cloud_Formation/archive/master.zip" 
        }, 
        "files": { 
         "/tmp/depend_config": { 
         "content": { 
          "Fn::Join": [ 
          "", 
          [ 
           "#!/bin/bash -ex\n", 
           "chmod -R 755 gradle-3.4.1/\n", 
           "echo \"PATH=$PATH:/opt/gradle-3.4.1/bin\" >> /etc/environment\n", 
           "yum install -y java-1.8.0\n" 
          ] 
          ] 
         }, 
         "mode": "000500", 
         "owner": "root", 
         "group": "root" 
         }, 
         "/tmp/app_config": { 
         "content": { 
          "Fn::Join": [ 
          "", 
          [ 
           "#!/bin/bash -ex\n", 
           "chmod -R 777 AWS_Cloud_Formation-master/\n", 
           "/opt/gradle-3.4.1/bin/gradle build -p /home/ec2-user/AWS_Cloud_Formation-master/src/Hi/\n" 
          ] 
          ] 
         }, 
         "mode": "000500", 
         "owner": "root", 
         "group": "root" 
         }, 
              "/tmp/launch_server": { 
               "content": { 
          "Fn::Join": [ 
          "", 
          [ 
           "#!/bin/bash -ex\n", 
           "chmod -R 777 AWS_Cloud_Formation-master/\n", 
           "java -jar AWS_Cloud_Formation-master/src/Hi/build/libs/hi-1.0-SNAPSHOT.jar\n" 
          ] 
          ] 
         }, 
         "mode": "000500", 
         "owner": "root", 
         "group": "root" 
              } 
        }, 
        "commands": { 
         "01_config": { 
         "command": "/tmp/depend_config", 
         "cwd": "/opt" 
         }, 
         "02_config": { 
         "command": "yum remove -y java-1.7.0-openjdk" 
         }, 
         "03_config": { 
         "command": "/tmp/app_config", 
         "cwd": "/home/ec2-user" 
         }, 
         "04_config": { 
         "command": "/tmp/launch_server", 
         "cwd": "/home/ec2-user" 
         } 
        } 
        } 
       } 
      }, 
      "Properties": { 
       "EbsOptimized": false, 
       "ImageId": {"Fn::FindInMap": ["EC2RegionMap", {"Ref": "AWS::Region"}, "AmazonLinuxAMIHVMEBSBacked64bit"]}, 
       "InstanceType": "t2.micro", 
       "SecurityGroups": [{"Ref": "WebServerSecurityGroup"}], 
       "KeyName": {"Ref": "KeyName"}, 
       "AssociatePublicIpAddress": true, 
       "UserData": {"Fn::Base64": {"Fn::Join": ["", [ 
        "#!/bin/bash -ex\n", 
        "yum update -y aws-cfn-bootstrap\n", 
        "/opt/aws/bin/cfn-init -v --stack ", {"Ref": "AWS::StackName"}, " --resource LaunchConfiguration --region ", {"Ref": "AWS::Region"}, "\n", 
        "/opt/aws/bin/cfn-signal -e $? --stack ", {"Ref": "AWS::StackName"}, " --resource AutoScalingGroup --region ", {"Ref": "AWS::Region"}, "\n" 
       ]]}} 
      } 
     }, 
     "AutoScalingGroup": { 
      "Type": "AWS::AutoScaling::AutoScalingGroup", 
      "Properties": { 
       "LoadBalancerNames": [{"Ref": "LoadBalancer"}], 
       "LaunchConfigurationName": {"Ref": "LaunchConfiguration"}, 
       "MinSize": "1", 
       "MaxSize": "1", 
       "DesiredCapacity": "1", 
       "VPCZoneIdentifier": [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}] 
      }, 
      "CreationPolicy": { 
       "ResourceSignal": { 
        "Timeout": "PT15M" 
       } 
      }, 
      "DependsOn": "VPCGatewayAttachment" 
     } 
    } 
} 

答えて

1

service/deamonとして実行してみますか?または、おそらく使用するnohup

+0

'nohup'は解決策でした! – codepleb

関連する問題