0

我目前正在使用 CloudFormation 开发一个 AWS Batch 处理系统,需要分析 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"
    }
    }
}
4

1 回答 1

0

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

  • 配置新的 IAM 以管理标记资源
  • 在 CloudWatch 中创建新规则以使用事件内容调用新的 Lambda AutoTag
  • 在这个 lambda 中,当您收到事件对象时,您会在其中找到由 CloudFormation 堆栈创建的所有资源 ID,并用您要查找的任何内容标记它们。

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

如果需要,我可以进一步解释,请告诉我

于 2018-07-24T04:53:29.870 回答