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


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

AWSCLIからだと作成できる

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

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

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


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

```bash
aws ec2 create-network-interface --private-ip-address <割り振りたいIPアドレス> --subnet-id  <サブネットID>
```
NetworkInterfaceIdがレスポンスされるのでメモ


#### リクエストする

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

```bash
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のフォーマット



```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", ...]
          }
          
          
```