如何使实例具有特定标签成为必需条件?

时间:2019-01-19 19:20:49

标签: json amazon-web-services amazon-iam tagging aws-iam

我正在尝试创建一个在启动新实例时强制执行标记标准的策略

我在一些AWS白皮书中了解了这一点,现在看来确实可以实现。但是,我发现的唯一示例代码似乎是在为卷设置这些策略。我不确定是否可以不必使用lambda(目前不是我的选择)来完成此操作。我尝试使用以下代码创建策略。 “ *”仅表示必须在必填字段中允许任何值(不确定这是否是指定该值的正确方法)。

JSON

我尝试用“ CreateInstance”和“ LaunchInstance”替换“ RunInstances”,但这也不起作用。我已经创建了此策略并将其绑定到一个组。然后,我将自己添加到该组中,以查看尝试启动实例时该策略是否有效。不开心我是使用JSON的新手,不胜感激任何有用的信息。注意:JSON更易于在图片中阅读。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateTaggedInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-2:xxxxxxxxxxxx:instance:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Primary Owner": "*",
                    "aws:RequestTag/Project/Task": "*",
                    "aws:RequestTag/Environment (Dev/Test)": "*"
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Primary Owner",
                        "Project/Task",
                        "Environment (Dev/Test)"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-2:xxxxxxxxxxxx:instance:instance",
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": "RunInstances"
                }
            }
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

是的,有可能,您正在寻找的条件就是这个。

"Condition": {
    "ForAnyValue:StringEquals": {
        "aws:TagKeys": [
            "Environment (Dev/Test)",
            "Primary Owner",
            "Project/Task"
        ]
     },
     "ForAnyValue:StringNotEquals": {
         "aws:RequestTag/Primary Owner": "*",
         "aws:RequestTag/Project/Task": "*",
         "aws:RequestTag/Environment (Dev/Test)": "*"
     }
 }

然后,您当然需要选择要应用此条件的操作和资源(必需的标记)。

答案 1 :(得分:0)

AWS Config规则允许您通过使用称为required-tags的AWS托管规则来强制执行此要求。因为这是一个托管规则,所以您无需创建lamdba函数。