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