我正在尝试创建一个策略,在启动新实例时强制执行标记标准
我在AWS的一些白皮书中读到了这一点,现在看来这确实是可能的。但是,我找到的唯一示例代码似乎是为卷设置这些策略。我不确定我是否可以在不使用lambda的情况下完成这项工作(现在对我来说不是一个选项)。我试图用下面的代码创建一个策略。"*"只是简单地说明在必填字段中应该允许任何值(不确定这是否是正确的指定方式)。
JSON-
我试着用"CreateInstance"one_answers"LaunchInstance"替换"RunInstance",但这也不起作用。我已经创建了此策略并将其绑定到一个组。然后,我将自己添加到该组中,以查看在尝试启动实例时该策略是否有效。没有快乐。我是使用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"
}
}
}
]
}
是的,这是可能的,您正在寻找的条件是这样的。
"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)": "*"
}
}
然后,您当然需要选择要应用此条件的操作和资源(必需的标记)。
AWS配置规则允许您通过使用名为required标记的AWS托管规则来强制执行此要求。因为它是一个托管规则,所以不需要创建lamdba函数。