LoginSignup
6
4

More than 5 years have passed since last update.

スポットインスタンスでPrivateIPを指定

Posted at

ManagementConsoleからだとなぜか出来ない。

AWSCLIからだと作成できる

使いたいサブネットを調べる

aws ec2 describe-subnets --output json |jq '.Subnets[]|select(.State=="available")| {CIDR: .CidrBlock, SubnetID: .SubnetId}' 

一覧が表示されるので、使いたいCIDRのSubnetIDをメモ
JQを使ってない場合は、|jq以降を削除

ネットワークインターフェースを作る

aws ec2 create-network-interface --private-ip-address <割り振りたいIPアドレス> --subnet-id  <サブネットID>

NetworkInterfaceIdがレスポンスされるのでメモ

リクエストする

以下がAmazonLinux(HVM)でm3.largeのインスタンスを1台で
300GのSSDでリクエストする例です
同時にSecurityGroupを設定する事が出来ない為、インスタンス起動後に
別途設定する必要があります

aws ec2 request-spot-instances \                                                                                                     --spot-price "<払っていい時間あたりの金額($)>" \
--instance-count 1 \
--type "one-time" \
--launch-specification \
"{ \
\"ImageId\":\"ami-18869819\", \
\"KeyName\": \"<SSHの鍵の名前>\", \
\"InstanceType\":\"m3.large\", \
\"BlockDeviceMappings\": [{ \
\"DeviceName\": \"/dev/xvda\",
\"Ebs\": { \
\"VolumeSize\": 300, \
\"DeleteOnTermination\": false, \
\"VolumeType\": \"io1\", \
\"Iops\": 900,
\"Encrypted\": false } \
} \
], \
\"NetworkInterfaces\":[{\"NetworkInterfaceId\": \"<ネットワーク・インタフェースID>\", \"DeviceIndex\": 0}] \
}"

参考

--launch-specificationにセット出来るJsonのフォーマット


          {
            "ImageId": "string",
            "KeyName": "string",
            "SecurityGroups": ["string", ...],
            "UserData": "string",
            "AddressingType": "string",
            "InstanceType": "m3.medium"|"m3.large"|"m3.xlarge"|"m3.2xlarge"|"t2.micro"|"t2.small"|"t2
.medium"|"m2.xlarge"|"m2.2xlarge"|"m2.4xlarge"|"cr1.8xlarge"|"i2.xlarge"|"i2.2xlarge"|"i2.4xlarge"|"i2.8xlarge"|"hi1.4xlarge"|"hs1.8xlarge"|"c1.medium"|"c1.xl
arge"|"c3.large"|"c3.xlarge"|"c3.2xlarge"|"c3.4xlarge"|"c3.8xlarge"|"c4.large"|"c4.xlarge"|"c4.2xlarge"|"c4.4xlarge"|"c4.8xlarge"|"cc1.4xlarge"|"cc2.8xlarge"|
"g2.2xlarge"|"cg1.4xlarge"|"r3.large"|"r3.xlarge"|"r3.2xlarge"|"r3.4xlarge"|"r3.8xlarge",
            "Placement": {
              "AvailabilityZone": "string",
              "GroupName": "string"
            },
            "KernelId": "string",
            "RamdiskId": "string",
            "BlockDeviceMappings": [
              {
                "VirtualName": "string",
                "DeviceName": "string",
                "Ebs": {
                  "SnapshotId": "string",
                  "VolumeSize": integer,
                  "DeleteOnTermination": true|false,
                  "VolumeType": "standard"|"io1"|"gp2",
                  "Iops": integer,
                  "Encrypted": true|false
                },
                "NoDevice": "string"
              }
              ...
            ],
            "SubnetId": "string",
            "NetworkInterfaces": [
              {
                "NetworkInterfaceId": "string",
                "DeviceIndex": integer,
                "SubnetId": "string",
                "Description": "string",
                "PrivateIpAddress": "string",
                "Groups": ["string", ...],
                "DeleteOnTermination": true|false,
                "PrivateIpAddresses": [
                  {
                    "PrivateIpAddress": "string",
                    "Primary": true|false
                  }
                  ...
                ],
                "SecondaryPrivateIpAddressCount": integer,
                "AssociatePublicIpAddress": true|false
              }
              ...
            ],
            "IamInstanceProfile": {
              "Arn": "string",
              "Name": "string"
            },
            "EbsOptimized": true|false,
            "Monitoring": {
              "Enabled": true|false
            },
            "SecurityGroupIds": ["string", ...]
          }


6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4