4

EC2 インスタンス (Windows Server 2012) を自動スケーリングするように AWS をセットアップしたいと考えています。問題は、別の EC2 と通信できるように、IP アドレスをセキュリティ グループに追加する必要があることです。

  1. AWS が自動スケーリング機能を使用してこれを自動的に処理できる方法はありますか? (私が見つけた最も近い方法は、新しいインスタンスに IAM ロールを割り当てることでしたが、IAM ロールをセキュリティ グループに追加することはできません。IP アドレスしか追加できません。)

  2. 私が現在検討している方法は、AWS CLI (コマンドライン) を起動スクリプトとして使用することです。

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

しかし、現在のインスタンスのパブリック IP を取得するにはどうすればよいでしょうか? これを取得する AWS CLI コマンドはありますか? 「curl echoip.com」のような外部の Web サイトには依存したくありません。ec2-metadata について聞いたことがありますが、Windows では機能しないと思います。また、別のサードパーティ製ソフトウェアを使用したくありません。

4

1 に答える 1

7

web というセキュリティ グループを作成します。例として、そのグループの ID を sg-7aa91911 とします。

db というセキュリティ グループを作成します。ソースが sg-7aa91911 のポート 1433 の新しいルールを db セキュリティ グループに追加します。

Autoscaling 起動構成を作成し、SecurityGroups を sg-7aa91911 および必要なその他の構成に設定します。

その起動構成で Autoscaling グループを作成します。

このタスクを実行するための簡単な CloudFormation テンプレートを作成しました。実行するだけで、セキュリティ グループが接続された Autoscaling グループが作成されます。また、データベースを保存できる空のインスタンスも作成されます。

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"}
          }
        ]
      }
    }
  }
}
于 2013-08-03T00:57:26.973 に答える