Amazon web services 如何允许具有IAM角色的EC2实例仅为其自身设置实例运行状况?

Amazon web services 如何允许具有IAM角色的EC2实例仅为其自身设置实例运行状况?,amazon-web-services,amazon-iam,autoscaling,Amazon Web Services,Amazon Iam,Autoscaling,我希望允许在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角色授予任何特殊权限之前,我会出现以下错误(如

我希望允许在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角色授予任何特殊权限之前,我会出现以下错误(如我所料):

我可以在我的IAM角色中添加以下语句来解决此问题:

{
  "Action": [
    "autoscaling:SetInstanceHealth"
  ],
  "Effect": "Allow",
  "Resource": "*"
}
但这难道不允许此角色中的实例在所有实例上设置实例运行状况(假设它们知道实例id)?我不希望一个受损实例能够将其他实例从自己的ASG中删除。

文档在资源ARN列中列出了自动缩放组,表明您可以通过
资源
限制
自动缩放:SetInstanceHealth

委员会不同意:

此操作不支持资源级别权限

。。。但我已经验证了以下IAM策略允许查找自动缩放组的成员,检查他们的CloudWatch指标,然后只设置一个自动缩放组成员的实例运行状况:

{
  "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": "*"
      }
  ]
}
此方法可能有效:。它还有一个使用实例ID的方法。但是,它是硬编码的,而不是变量。
{
  "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": "*"
      }
  ]
}