我正在处理一个设置问题,需要由于长时间未活动(即网页服务器访问日志中没有新内容)而终止AWS实例。这些实例是测试实例,并由CI/CD软件自动创建。
我希望这些实例能够识别它们已被遗弃并终止自身。我想为每个实例分配一个通用的IAM角色,该角色仅允许实例终止自身而不是同伴实例。
到目前为止,我已经做了以下工作:
我提出了几种角色策略的变化,但它们都不起作用:
我希望这些实例能够识别它们已被遗弃并终止自身。我想为每个实例分配一个通用的IAM角色,该角色仅允许实例终止自身而不是同伴实例。
到目前为止,我已经做了以下工作:
- https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html
- https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-wheretouse
- https://www.reddit.com/r/aws/comments/4gglxk/iam_policy_to_allow_ec2_instance_to_only_query/
- https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html
我已经发现策略中有两个可用变量:
ec2-instance-id
ec2:SourceInstanceARN
我提出了几种角色策略的变化,但它们都不起作用:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:TerminateInstances",
"Resource": "*",
"Condition": {
"ArnEquals": {
"ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/${ec2-instance-id}"
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:TerminateInstances",
"Resource": "arn:aws:ec2:*:*:instance/${ec2-instance-id}"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ec2:TerminateInstances",
"Resource": "${ec2:SourceInstanceARN}"
}
]
}
实际上是否可能实现所需的行为,即仅允许实例在自身上执行特定操作(例如终止)?
更新:
我知道我可以使用标签进行操作,这是我目前正在做的事情,但这意味着所有带标记的实例都可以终止其对等实例。这种限制有点过于松散,我想真正将其限制在实例上。
InstanceInitiatedShutdownBehavior
设置为Terminate
启动实例,并在机器上运行/sbin/poweroff
代码。当 EC2 基础设施看到实例试图关闭电源时,该实例将被终止,就像您发送 API 请求终止它一样。 - Michael - sqlbotsudo shutdown now -h
。 - John Rotenstein