AWS批量标记EBS体积以进行成本分析



我目前正在开发一个带有CloudFormation的AWS批处理系统,该系统需要分析CFT的总成本,包括EC2实例和EBS卷的任何IOPS。我正在基于实例和批处理使用的任何资源上的标记执行此分析。但是,我的卷标记的标记与实例标记的标记不同。Batch是否有一种方法可以在创建时自动标记这些卷以进行成本分析?下面是创建计算实例的CFT中的JSON blob。

"ComputeSpot": {
"Type": "AWS::Batch::ComputeEnvironment",
"Properties": {
"Type": "Managed",
"ServiceRole": {
"Ref": "BatchServiceRole"
},
"ComputeResources": {
"MaxvCpus": 500,
"DesiredvCpus": 0,
"MinvCpus": 0,
"BidPercentage" : 50,
"SpotIamFleetRole": { "Ref": "SpotIamFleetRole" },
"SecurityGroupIds": [
{
"Ref": "SecurityGroup"
}
],
"Type": "SPOT",
"Subnets": [
{ "Fn::Join": [",", {"Ref": "Subnets"}]}
],
"ImageId": {
"Ref": "AMI"
},
"InstanceRole": {
"Ref": "IamInstanceProfile"
},
"InstanceTypes": [
"c3","c5","m5"
],
"Ec2KeyPair": {
"Ref": "Ec2KeyPair"
},
"Tags": {
"Project": { "Ref": "ProjectTag" },
"CostRun": { "Ref": "CostRunTag" },
"Name": {"Fn::Join": ["-", [ { "Ref": "AWS::StackName" }, "ComputeSpot" ] ] }
}
},
"State": "ENABLED"
},
"Metadata": {
"AWS::CloudFormation::Designer": {
"id": "ff02a948-912b-4906-9a71-21774f459e87"
}
}
}

您必须利用IAM来实现这一目标。如您所知,您正在执行的任何操作,无论是从控制台、CLI、CF脚本还是其他任何操作,都会在内部调用AWS API,如CreateInstance或CreateVolume等。这些API调用已登录Cloudwatch。现在你所要做的就是:

  • 配置新IAM以管理标记资源
  • 在CloudWatch中创建一个新规则,用事件内容调用一个新的Lambda AutoTag
  • 在这个lambda中,当您接收到事件对象时,您会在其中找到CloudFormation Stack创建的所有资源id,并用您要查找的内容对它们进行标记

有关详细步骤,请按照此URL中的步骤进行操作:AWS解决方案页面

最新更新