我想允许在我的EC2实例上运行的脚本指示它对自动缩放组是否健康。为此,我可以从我的脚本中运行以下命令:
aws --region $AWSREGION \
autoscaling \
set-instance-health \
--instance-id $(curl http://169.254.169.254/latest/meta-data/instance-id) \
--health-status Unhealthy
在授予IAM角色的任何特殊权限之前,我收到以下错误(正如我所期待的):
An error occurred (AccessDenied) when calling the SetInstanceHealth operation: User: arn:aws:sts::ACCOUNTID:assumed-role/ROLENAME/i-INSTANCEID is not authorized to perform: autoscaling:SetInstanceHealth
我可以将以下语句添加到我的IAM角色中来解决这个问题:
{
"Action": [
"autoscaling:SetInstanceHealth"
],
"Effect": "Allow",
"Resource": "*"
}
但不允许此角色的实例在所有实例上设置实例运行状况(假设他们知道实例ID)?我不希望一个受到破坏的实例能够将其他人从他们自己的ASG中带走。
答案 0 :(得分:0)
Supported Resource-Level Permissions文档列出资源ARN 列中的 Auto Scaling组,表示您可以autoscaling:SetInstanceHealth
Resource
限制{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"autoscaling:SetInstanceHealth"
],
"Resource": "arn:aws:autoscaling:REGION:ACCOUNT:autoScalingGroup:UUID:autoScalingGroupName/NAME"
},
{
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics"
],
"Resource": "*"
}
]
}
。
此操作不支持资源级权限
...但我已经验证以下IAM政策允许查找自动扩展组的成员,检查其CloudWatch指标,然后设置仅自动扩展组成员的实例运行状况:
{{1}}