Этот шаблон формирования облака соответствует моим ожиданиям. Но когда я включаю параметр частного 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"
}
},
}
]
}
}
}
}
}