AWS IAM:允许 EC2 实例自行停止
AWS IAM: Allow EC2 instance to stop itself
我试图让我们 AWS 账户中的所有 EC2 实例自行停止(使用使用 aws cli 的自动脚本)。我尝试通过使用适当的策略创建一个 AWS IAM 角色来做到这一点。但是,我找不到如何定义策略以仅允许实例停止自身(而不是其他实例)。
我尝试了以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StopInstances"
],
"Resource": [
"${ec2:SourceInstanceARN}"
]
}
]
}
但是在验证时,这给了我错误 This policy contains the following error: The following resources are invalid : ${ec2:SourceInstanceARN}
有没有办法让一个实例停止自己(并且只停止自己)?如果可以,我应该怎么做?
正如 Mark B 在评论中所建议的那样,我通过将脚本更改为使用 shutdown
而不是 aws ec2 stop-instances
来解决我的问题。这使得不需要使用任何策略,因为任何系统都可以对自身(并且只能对自身)执行关闭。
关闭行为解决了终止问题,但可能还有其他情况需要对 API 请求进行有限访问(即自我标记)。所以这里有一个带有 IAM 策略的解决方案:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DeleteTags",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:TerminateInstances",
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ARN": "${ec2:SourceInstanceARN}"
}
}
}
]
}
我试图让我们 AWS 账户中的所有 EC2 实例自行停止(使用使用 aws cli 的自动脚本)。我尝试通过使用适当的策略创建一个 AWS IAM 角色来做到这一点。但是,我找不到如何定义策略以仅允许实例停止自身(而不是其他实例)。
我尝试了以下策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StopInstances"
],
"Resource": [
"${ec2:SourceInstanceARN}"
]
}
]
}
但是在验证时,这给了我错误 This policy contains the following error: The following resources are invalid : ${ec2:SourceInstanceARN}
有没有办法让一个实例停止自己(并且只停止自己)?如果可以,我应该怎么做?
正如 Mark B 在评论中所建议的那样,我通过将脚本更改为使用 shutdown
而不是 aws ec2 stop-instances
来解决我的问题。这使得不需要使用任何策略,因为任何系统都可以对自身(并且只能对自身)执行关闭。
关闭行为解决了终止问题,但可能还有其他情况需要对 API 请求进行有限访问(即自我标记)。所以这里有一个带有 IAM 策略的解决方案:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DeleteTags",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:TerminateInstances",
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ARN": "${ec2:SourceInstanceARN}"
}
}
}
]
}