创建自动缩放计划操作时出错
Error creating autoscaling scheduled action
我正在尝试在特定时间范围内停止和启动与 ASG 映射的 EC2 实例。即使在授予角色适当的权限后,我仍然收到访问被拒绝的错误。
resource "aws_autoscaling_group" "asg" {
availability_zones = "${var.availability_zones}"
name = "${var.environment}-airflow-asg"
launch_configuration = "${aws_launch_configuration.lc.name}"
target_group_arns = ["${aws_lb_target_group.lb_tg.arn}"]
max_size = "${var.asg_max_size}"
min_size = "${var.asg_min_size}"
desired_capacity = "${var.asg_desired_capacity}"
health_check_grace_period = "300"
health_check_type = "EC2"
vpc_zone_identifier = ["${data.aws_subnet.app_subnet_0.id}", "${data.aws_subnet.app_subnet_1.id}"]
force_delete = true
lifecycle {
create_before_destroy = true
}
tags = [merge(
var.common_tags,
map("Classification", "private"),
map("Name", "${var.environment}-airflow-asg"),
map("key", "Name", "value", "${var.environment}-airflow", "propagate_at_launch", true)
)]
}
# Stop instances each weekday at 6pm
resource "aws_autoscaling_schedule" "asg_stop" {
scheduled_action_name = "${var.environment}-asg_stop"
min_size = 0
max_size = 0
desired_capacity = 0
recurrence = "00 18 * * MON-FRI"
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
# Startup instance each weekday at 8am
resource "aws_autoscaling_schedule" "asg_start" {
scheduled_action_name = "${var.environment}-asg_start"
min_size = "${var.asg_min_size}"
max_size = "${var.asg_max_size}"
desired_capacity = "${var.asg_desired_capacity}"
recurrence = "00 08 * * MON-FRI"
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
执行后出错terraform apply
:
Error Creating Autoscaling Scheduled Action: AccessDenied: User: arn:aws:sts::12345678910:assumed-role/jenkins/AssumeRoleSessionOrchestration is not authorized to perform: autoscaling:PutScheduledUpdateGroupAction on resource: arn:aws:autoscaling:eu-central-1:12345678910:autoScalingGroup:bb231f2f-7336-471a-bba6-312969c65523:autoScalingGroupName/asg
status code: 403, request id: dbc1da6e-ad34-11e9-8c30-bd488dac5c78
on ../../modules/airflow/asg.tf line 51, in resource "aws_autoscaling_schedule" "asg_stop":
51: resource "aws_autoscaling_schedule" "asg_stop"
我的角色具有以下权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:*",
"application-autoscaling:DeleteScalingPolicy",
"application-autoscaling:DeleteScheduledAction",
"application-autoscaling:DeregisterScalableTarget",
"application-autoscaling:DescribeScalableTargets",
"application-autoscaling:DescribeScalingActivities",
"application-autoscaling:DescribeScalingPolicies",
"application-autoscaling:PutScheduledUpdateGroupAction",
"application-autoscaling:PutScalingPolicy",
"application-autoscaling:RegisterScalableTarget",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricAlarm",
"cloudwatch:DeleteAlarms",
"sns:ListSubscriptions",
"sns:ListTopics",
"sns:Publish",
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}
您混淆了名称相似的 application-autoscaling
and autoscaling
IAM 策略。
Application autoscaling 用于扩展 ECS 服务和 DynamoDB table read/write 容量等。
另一种类型 autoscaling
是更标准的 EC2 自动缩放,它可以扩展实例组,这正是您在那里拥有的自动缩放组所需要的。
因此,要解决此问题,只需将 application-autoscaling:*
操作更改为 autoscaling:*
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:*",
"autoscaling:DeleteScalingPolicy",
"autoscaling:DeleteScheduledAction",
"autoscaling:DeregisterScalableTarget",
"autoscaling:DescribeScalableTargets",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeScalingPolicies",
"autoscaling:PutScheduledUpdateGroupAction",
"autoscaling:PutScalingPolicy",
"autoscaling:RegisterScalableTarget",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricAlarm",
"cloudwatch:DeleteAlarms",
"sns:ListSubscriptions",
"sns:ListTopics",
"sns:Publish",
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}
我正在尝试在特定时间范围内停止和启动与 ASG 映射的 EC2 实例。即使在授予角色适当的权限后,我仍然收到访问被拒绝的错误。
resource "aws_autoscaling_group" "asg" {
availability_zones = "${var.availability_zones}"
name = "${var.environment}-airflow-asg"
launch_configuration = "${aws_launch_configuration.lc.name}"
target_group_arns = ["${aws_lb_target_group.lb_tg.arn}"]
max_size = "${var.asg_max_size}"
min_size = "${var.asg_min_size}"
desired_capacity = "${var.asg_desired_capacity}"
health_check_grace_period = "300"
health_check_type = "EC2"
vpc_zone_identifier = ["${data.aws_subnet.app_subnet_0.id}", "${data.aws_subnet.app_subnet_1.id}"]
force_delete = true
lifecycle {
create_before_destroy = true
}
tags = [merge(
var.common_tags,
map("Classification", "private"),
map("Name", "${var.environment}-airflow-asg"),
map("key", "Name", "value", "${var.environment}-airflow", "propagate_at_launch", true)
)]
}
# Stop instances each weekday at 6pm
resource "aws_autoscaling_schedule" "asg_stop" {
scheduled_action_name = "${var.environment}-asg_stop"
min_size = 0
max_size = 0
desired_capacity = 0
recurrence = "00 18 * * MON-FRI"
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
# Startup instance each weekday at 8am
resource "aws_autoscaling_schedule" "asg_start" {
scheduled_action_name = "${var.environment}-asg_start"
min_size = "${var.asg_min_size}"
max_size = "${var.asg_max_size}"
desired_capacity = "${var.asg_desired_capacity}"
recurrence = "00 08 * * MON-FRI"
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
执行后出错terraform apply
:
Error Creating Autoscaling Scheduled Action: AccessDenied: User: arn:aws:sts::12345678910:assumed-role/jenkins/AssumeRoleSessionOrchestration is not authorized to perform: autoscaling:PutScheduledUpdateGroupAction on resource: arn:aws:autoscaling:eu-central-1:12345678910:autoScalingGroup:bb231f2f-7336-471a-bba6-312969c65523:autoScalingGroupName/asg
status code: 403, request id: dbc1da6e-ad34-11e9-8c30-bd488dac5c78
on ../../modules/airflow/asg.tf line 51, in resource "aws_autoscaling_schedule" "asg_stop":
51: resource "aws_autoscaling_schedule" "asg_stop"
我的角色具有以下权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:*",
"application-autoscaling:DeleteScalingPolicy",
"application-autoscaling:DeleteScheduledAction",
"application-autoscaling:DeregisterScalableTarget",
"application-autoscaling:DescribeScalableTargets",
"application-autoscaling:DescribeScalingActivities",
"application-autoscaling:DescribeScalingPolicies",
"application-autoscaling:PutScheduledUpdateGroupAction",
"application-autoscaling:PutScalingPolicy",
"application-autoscaling:RegisterScalableTarget",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricAlarm",
"cloudwatch:DeleteAlarms",
"sns:ListSubscriptions",
"sns:ListTopics",
"sns:Publish",
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}
您混淆了名称相似的 application-autoscaling
and autoscaling
IAM 策略。
Application autoscaling 用于扩展 ECS 服务和 DynamoDB table read/write 容量等。
另一种类型 autoscaling
是更标准的 EC2 自动缩放,它可以扩展实例组,这正是您在那里拥有的自动缩放组所需要的。
因此,要解决此问题,只需将 application-autoscaling:*
操作更改为 autoscaling:*
:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:*",
"autoscaling:DeleteScalingPolicy",
"autoscaling:DeleteScheduledAction",
"autoscaling:DeregisterScalableTarget",
"autoscaling:DescribeScalableTargets",
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeScalingPolicies",
"autoscaling:PutScheduledUpdateGroupAction",
"autoscaling:PutScalingPolicy",
"autoscaling:RegisterScalableTarget",
"cloudwatch:DescribeAlarms",
"cloudwatch:GetMetricStatistics",
"cloudwatch:PutMetricAlarm",
"cloudwatch:DeleteAlarms",
"sns:ListSubscriptions",
"sns:ListTopics",
"sns:Publish",
"logs:DescribeLogStreams",
"logs:GetLogEvents"
],
"Resource": "*"
}
]
}