我正在尝试创建一个在启动新实例时强制执行标记标准的策略
我在一些AWS白皮书中了解了这一点,现在看来确实可以实现。但是,我发现的唯一示例代码似乎是在为卷设置这些策略。我不确定是否可以不必使用lambda(目前不是我的选择)来完成此操作。我尝试使用以下代码创建策略。 “ *”仅表示必须在必填字段中允许任何值(不确定这是否是指定该值的正确方法)。
我尝试用“ 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"
}
}
}
]
}
答案 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函数。