用于 ec2 实例中的现场请求的 aws cloudformation 模板
Posted
技术标签:
【中文标题】用于 ec2 实例中的现场请求的 aws cloudformation 模板【英文标题】:aws cloudformation template for spot request in ec2 instance 【发布时间】:2021-12-08 08:16:45 【问题描述】:在 AWS 中预置 ec2 实例时,我需要一个示例云形成模板来添加现场请求。我曾尝试使用控制台来预置现场实例,但我找不到在 ec2 中添加现场请求的任何确切模板
【问题讨论】:
【参考方案1】:您需要创建 Spot-fleet 资源。
例子:
"SpotFleet":
"Type": "AWS::EC2::SpotFleet",
"Properties":
"SpotFleetRequestConfigData":
"IamFleetRole": "Fn::GetAtt": [ "IAMFleetRole", "Arn"] ,
"SpotPrice": "1000",
"TargetCapacity": "Ref": "TargetCapacity" ,
"LaunchSpecifications": [
"EbsOptimized": "false",
"InstanceType": "Ref": "InstanceType" ,
"ImageId": "Fn::FindInMap": [ "AWSRegionArch2AMI", "Ref": "AWS::Region" ,
"Fn::FindInMap": [ "AWSInstanceType2Arch", "Ref": "InstanceType" , "Arch" ]
],
"SubnetId": "Ref": "Subnet1" ,
"WeightedCapacity": "8"
,
"EbsOptimized": "true",
"InstanceType": "Ref": "InstanceType" ,
"ImageId": "Fn::FindInMap": [ "AWSRegionArch2AMI", "Ref": "AWS::Region" ,
"Fn::FindInMap": [ "AWSInstanceType2Arch", "Ref": "InstanceType" , "Arch" ]
],
"Monitoring": "Enabled": "true" ,
"SecurityGroups": [ "GroupId": "Fn::GetAtt": [ "SG0", "GroupId" ] ],
"SubnetId": "Ref": "Subnet0" ,
"IamInstanceProfile": "Arn": "Fn::GetAtt": [ "RootInstanceProfile", "Arn" ] ,
"WeightedCapacity": "8"
]
更多细节可以在这个链接中找到: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-spotfleet.html
【讨论】:
谢谢!但在 azure 中,我们可以使用 3 个参数制作现场实例,例如 "priority": "Spot", "evictionPolicy": "Deallocate", "billingProfile": "maxPrice": -1 docs.microsoft.com/en-us/azure/virtual-machines/linux/… 在aws中我们可以做到吗?跨度> 在 aws 中是否有 ec2 车队选项我可能知道优势docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/… @aryabraj,我猜这 3 个是可以添加的附加属性。完整的 json 示例格式在这 3 个参数下方的同一链接中给出(大一个!!)。我想您需要该示例格式才能在 azure 中创建现场实例。此外,这一切都取决于您使用的云平台。云平台的模板会与其他平台不同。 从这个请求中我得到了作为队列的 Spot 请求,我需要创建 Spot 实例意味着 Spot 请求类型作为实例,通过控制台我们可以在配置实例时启用 Spot 请求类型,同样的方式有任何cloudformation 模板中可用的参数【参考方案2】:您可以创建 SpotFleet 资源,这是一个示例
SpotFleet:
Type: AWS::EC2::SpotFleet
Properties:
SpotFleetRequestConfigData:
IamFleetRole: !GetAtt [IAMFleetRole, Arn]
SpotPrice: '1000'
TargetCapacity:
Ref: TargetCapacity
LaunchSpecifications:
- EbsOptimized: 'false'
InstanceType:
Ref: InstanceType
ImageId:
Fn::FindInMap:
- AWSRegionArch2AMI
- Ref: AWS::Region
- Fn::FindInMap:
- AWSInstanceType2Arch
- Ref: InstanceType
- Arch
SubnetId:
Ref: Subnet1
WeightedCapacity: '8'
- EbsOptimized: 'true'
InstanceType:
Ref: InstanceType
ImageId:
Fn::FindInMap:
- AWSRegionArch2AMI
- Ref: AWS::Region
- Fn::FindInMap:
- AWSInstanceType2Arch
- Ref: InstanceType
- Arch
Monitoring:
Enabled: 'true'
SecurityGroups:
- GroupId:
Fn::GetAtt:
- SG0
- GroupId
SubnetId:
Ref: Subnet0
IamInstanceProfile:
Arn:
Fn::GetAtt:
- RootInstanceProfile
- Arn
WeightedCapacity: '8'
【讨论】:
以上是关于用于 ec2 实例中的现场请求的 aws cloudformation 模板的主要内容,如果未能解决你的问题,请参考以下文章
如何处理我的 AWS EC2 实例上的多个 Python 请求?
AWS CloudFormation:Application Load Balancer 的目标组不适用于多个 EC2 实例