使用boto3 request_spot_fleet调用启动模板时如何为Spot Fleet添加专属标签
问题结论
使用启动模板创建Spot Fleet时,完全支持在创建阶段添加专属自定义标签,你的配置未生效主要是以下两个常见原因导致,可逐一排查修复:
原因1:IAM Fleet Role缺少打标签权限
你配置的FLEET_ROLE必须额外添加ec2:CreateTags的权限,才有权限在创建Spot Fleet请求的时候写入自定义标签,参考权限示例:
{ "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:spot-fleet-request/*" }
如果还需要把自定义标签同步到该队列启动的EC2实例、卷等资源,需要对应添加对应资源类型的CreateTags权限。
原因2:boto3版本过低
2020年之前的旧版本boto3对Spot Fleet创建阶段传TagSpecifications的兼容性有问题,你可以升级boto3到最新版本验证:
pip install --upgrade boto3 botocore
兜底方案
如果排查后还是无法在创建阶段写入标签,可以在调用request_spot_fleet拿到返回的SpotFleetRequestId后,立刻调用create_tags接口手动打标签,示例代码:
response = client.request_spot_fleet(SpotFleetRequestConfig=your_config) spot_fleet_id = response['SpotFleetRequestId'] client.create_tags( Resources=[spot_fleet_id], Tags=[ { 'Key': 'UNIQUE_TO_THIS_SPOT_FLEET', 'Value': UNIQUE_TO_THIS_SPOT_FLEET } ] )
该方案不会和启动模板预设的标签冲突,两类标签会合并保留。
内容的提问来源于stack exchange,提问作者paulj
相关产品推荐
相关产品推荐

