2013-08-02 1 views
3

EC2 인스턴스를 자동 크기 조정하도록 AWS를 설정하려고합니다 (Windows Server 2012). 이 캐치는 다른 EC2와 통신 할 수 있도록 보안 그룹에 IP 주소를 추가해야 할 필요가 있다는 것입니다.자동 확장 된 EC2 인스턴스를 보안 그룹에 자동으로 추가하는 방법은 무엇입니까?

  1. AWS가 자동 조절 기능을 통해 자동으로 처리 할 수있는 방법이 있습니까? (가장 가까운 IAM 역할을 새 인스턴스에 할당하는 것이지만 IAM 역할을 보안 그룹에 추가 할 수는 없으며 IP 주소 만 추가 할 수 있습니다. IP 주소 만 추가 할 수 있습니다.)

  2. 내가 현재 상태입니다. 현재 AWS CLI (명령 줄)를 시작 스크립트로 사용합니다.

    ec2-authorize mySecurityGroup -p 1433 -s xx.xx.xx.xx/32 
    

하지만 어떻게 내가 현재 인스턴스의 공용 IP를받을 수 있나요? AWS CLI 명령을 사용하여이 작업을 수행 할 수 있습니까? 차라리 "curl echoip.com"과 같은 외부 웹 사이트에 의존하지 않을 것입니다. ec2 메타 데이터에 대해 들었지만 Windows 용으로는 적합하지 않다고 생각합니다. 다른 타사 소프트웨어를 사용하지 않기를 바랍니다.

+2

규칙을 추가하여 주어진 보안 그룹의 모든 인스턴스를 인증 할 수없는 이유는 무엇입니까? 지역간에 액세스를 설정하려고하십니까? – datasage

+0

나는 그 옵션에 개방적이다. 나는 같은 지역에 머물고있다. 나는 그것을 수행하는 방법을 모른다 (나는 AWS EC2를 처음 사용함). 보안 그룹에 IP 주소 만 추가 할 수 있다고 생각했습니다. – wisbucky

+1

이것은 ip를 추가하는 것과 비슷하게 보안 그룹 ID를 지정합니다 (sg-XXXXXX로 시작). – datasage

답변

4

web이라는 보안 그룹을 만듭니다. 예를 들어, 해당 그룹의 ID는 다음과 같습니다. sg-7aa91911

db라는 보안 그룹을 만듭니다. 소스가 sg-7aa91911 인 db 1433의 db 보안 그룹에 새 규칙 추가

자동 확장 실행 구성을 만들고 SecurityGroups를 sg-7aa91911 및 필요한 기타 구성으로 설정하십시오.

해당 실행 구성으로 자동 조절 그룹을 만듭니다.

이 작업을 수행하기 위해 빠른 CloudFormation 템플릿을 작성했습니다. 이를 실행할 수 있어야하며 연결된 보안 그룹이있는 자동 조절 그룹이 만들어집니다. 또한 db를 저장할 수있는 빈 인스턴스를 만듭니다.

CloudFormation 템플릿을 사용하지 않으려면 보안 그룹이 정의 된 위치를 확인하십시오. 2 개의 보안 그룹이 연결되는 방법을 보여줍니다.

{ 
    "AWSTemplateFormatVersion" : "2010-09-09", 

    "Description" : "test tempalte", 

    "Parameters" : { 
    "KeyName" : { 
     "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance", 
     "Type" : "String" 
    } 
    }, 

    "Mappings" : { 
    "RegionMap" : { 
     "us-east-1"  : { "AMI" : "ami-7f418316" }, 
     "us-west-1"  : { "AMI" : "ami-951945d0" }, 
     "us-west-2"  : { "AMI" : "ami-16fd7026" }, 
     "eu-west-1"  : { "AMI" : "ami-24506250" }, 
     "sa-east-1"  : { "AMI" : "ami-3e3be423" }, 
     "ap-southeast-1" : { "AMI" : "ami-74dda626" }, 
     "ap-northeast-1" : { "AMI" : "ami-dcfa4edd" } 
    } 
    }, 

    "Resources" : { 
    "WebServerGroup" : { 
     "Type" : "AWS::AutoScaling::AutoScalingGroup", 
     "Properties" : { 
     "AvailabilityZones" : { "Fn::GetAZs" : "" }, 
     "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, 
     "MinSize" : "1", 
     "MaxSize" : "10", 
     "DesiredCapacity" : "1" 
     } 
    }, 

    "LaunchConfig" : { 
     "Type" : "AWS::AutoScaling::LaunchConfiguration", 
     "Properties" : { 
     "InstanceType" : "m1.small", 
     "KeyName" : { "Ref" : "KeyName" }, 
     "SecurityGroups" : [ {"Ref" : "websg"} ], 
     "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]} 
     } 
    }, 
    "Ec2Instance" : { 
     "Type" : "AWS::EC2::Instance", 
     "Properties" : { 
     "KeyName" : { "Ref" : "KeyName" }, 
     "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, 
     "UserData" : { "Fn::Base64" : "80" } 
     } 
    }, 

    "websg" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "GroupDescription" : "Enable SSH and access, 8080, and 80", 
     "SecurityGroupIngress" : [ 
      {"IpProtocol" : "tcp", "FromPort" : "8080", "ToPort" : "8080", "CidrIp" : "0.0.0.0/0"}, 
      {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0"}, 
      {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0"} 
     ] 
     } 
    }, 
    "dbsg" : { 
     "Type" : "AWS::EC2::SecurityGroup", 
     "Properties" : { 
     "GroupDescription" : "Port opened only to security group", 
     "SecurityGroupIngress" : [ 
      {"IpProtocol" : "tcp", "FromPort" : "1433", "ToPort" : "1433", "SourceSecurityGroupName" : {"Ref" : "websg"} 
      } 
     ] 
     } 
    } 
    } 
} 
+1

자세한 예를 들어 주셔서 감사합니다. 결국 가장 큰 문제는 공용 IP를 사용하여 "DB"에 연결하려고했습니다. 마지막으로 보안 그룹 규칙을 사용할 때 공개 키 또는 개인 DNS/IP를 사용해야한다는 점을 알고 있습니다. – wisbucky

관련 문제