Назад | Перейти на главную страницу

Назначьте публичный IP-адрес экземпляру через формирование облака

Этот шаблон формирования облака соответствует моим ожиданиям. Но когда я включаю параметр частного IP-адреса, я получаю сообщение об ошибке.

{
   "Resources":{
      "MySpotFleet":{
         "Type":"AWS::EC2::SpotFleet",
         "Properties":{
            "SpotFleetRequestConfigData":{
               "IamFleetRole": "arn:aws:iam::513469704633:role/aws-ec2-spot-fleet-tagging-role",
               "SpotPrice":"1",
               "TargetCapacity":"1",
               "LaunchSpecifications":[
                  {
                     "InstanceType":"t2.small",
                     "ImageId":"ami-009d6802948d06e52",
                     #"PrivateIpAddress": "18.208.241.12"
                  }
               ]
            }
         }
      }
   }
}

Как назначить конкретный эластичный IP-адрес только что созданному спотовому экземпляру?

Если ответ через UserData, то как указать строку пользовательских данных в этом шаблоне? (У меня есть несколько других команд в файле пользовательских данных)


Обновить:

Я попытался установить IP-адрес, используя пользовательские данные. Спотовый экземпляр был создан с использованием этого сценария, но без общедоступного IP-адреса.

{
   "Resources":{
      "MySpotFleet":{
         "Type":"AWS::EC2::SpotFleet",
         "Properties":{
            "SpotFleetRequestConfigData":{
               "IamFleetRole": "arn:aws:iam::513469704633:role/aws-ec2-spot-fleet-tagging-role",
               "SpotPrice":"1",
               "TargetCapacity":"1",
               "LaunchSpecifications":[
                  {
                     "InstanceType":"t2.small",
                     "ImageId":"ami-009d6802948d06e52",
                     #"PrivateIpAddress": "18.208.241.12"
        "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
          "#!/bin/bash -xe\n",
"pip install aws-ec2-assign-elastic-ip\n",
"aws-ec2-assign-elastic-ip --access-key xxx --secret-key xxx --valid-ips 18.208.241.12\n"
        ]]}}
                  }
               ]
            }
         }
      }
   }
}

Мне удалось добавить параметр пользовательских данных, и окончательный код выглядит так:

{
   "Resources":{
      "MySpotFleet":{
         "Type":"AWS::EC2::SpotFleet",
         "Properties":{
            "SpotFleetRequestConfigData":{
               "IamFleetRole":"arn:aws:iam::513469704633:role/aws-ec2-spot-fleet-tagging-role",
               "SpotPrice":"1",
               "TargetCapacity":"1",
               "LaunchSpecifications":[
                  {
                     "InstanceType":"t2.small",
                     "ImageId":"ami-009d6802948d06e52",
                     "KeyName":"dec15a",
                     "BlockDeviceMappings":[
                        {
                           "DeviceName":"/dev/xvda",
                           "Ebs":{
                              "VolumeSize":100,
                              "VolumeType":"gp2"
                           }
                        }
                     ],

                   "UserData": {
 "Fn::Base64": {
 "Fn::Sub": 
          "#!/bin/bash -xe\n
           yum install -y docker mysql git python-pip\n  
           pip install aws-ec2-assign-elastic-ip\n 
           sudo amazon-linux-extras install -y docker\n
           aws-ec2-assign-elastic-ip --access-key xxx --secret-key xxx --valid-ips 18.208.241.12\n
           service docker start\n"
                    }
 },

                  }
               ]
            }
         }
      }
   }
}