community.aws.application_autoscaling_policy 模块 – 管理应用程序自动扩展策略

注意

此模块是 community.aws 集合(版本 9.0.0)的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.aws。您需要更多要求才能使用此模块,有关详细信息,请参阅要求

要在 playbook 中使用它,请指定:community.aws.application_autoscaling_policy

community.aws 1.0.0 中的新增功能

概要

  • 创建、更新或删除扩展策略。

  • 在 5.0.0 版本之前,此模块名为 community.aws.aws_application_scaling_policy。用法没有改变。

别名:aws_application_scaling_policy

要求

执行此模块的主机需要满足以下要求。

  • python >= 3.6

  • boto3 >= 1.28.0

  • botocore >= 1.31.0

参数

参数

注释

access_key

别名:aws_access_key_id、aws_access_key、ec2_access_key

字符串

AWS 访问密钥 ID。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

还可以按优先级递减的顺序使用 AWS_ACCESS_KEY_IDAWS_ACCESS_KEYEC2_ACCESS_KEY 环境变量。

aws_access_keyprofile 选项是互斥的。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_access_key_id 别名。

ec2_access_key 别名已被弃用,将在 2024-12-01 之后的版本中删除。

EC2_ACCESS_KEY 环境变量的支持已被弃用,将在 2024-12-01 之后的版本中删除。

aws_ca_bundle

路径

用于验证 SSL 证书的 CA 捆绑包的位置。

还可以使用 AWS_CA_BUNDLE 环境变量。

aws_config

字典

用于修改 botocore 配置的字典。

参数可以在 AWS 文档 https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config 中找到。

debug_botocore_endpoint_logs

布尔值

使用 botocore.endpoint 记录器来解析任务期间进行的唯一(而不是总计) "resource:action" API 调用,并将集合输出到任务结果中的 resource_actions 键。使用 aws_resource_action 回调输出到 playbook 期间制作的总列表。

还可以使用 ANSIBLE_DEBUG_BOTOCORE_LOGS 环境变量。

选项

  • false ←(默认)

  • true

endpoint_url

别名:ec2_url、aws_endpoint_url、s3_url

字符串

要连接的 URL,而不是默认的 AWS 终端节点。虽然这可以用于连接到其他与 AWS 兼容的服务,但 amazon.aws 和 community.aws 集合仅针对 AWS 进行了测试。

还可以按优先级递减的顺序使用 AWS_URLEC2_URL 环境变量。

ec2_urls3_url 别名已被弃用,将在 2024-12-01 之后的版本中删除。

EC2_URL 环境变量的支持已被弃用,将在 2024-12-01 之后的版本中删除。

maximum_tasks

整数

为响应扩展事件而扩展到的最大值。如果要为指定服务创建第一个新策略,则此参数是必需的。

minimum_tasks

整数

为响应缩减事件而缩减到的最小值。如果要为指定服务创建第一个新策略,则此参数是必需的。

override_task_capacity

布尔值

是否覆盖已经设置的最小和/或最大任务值。

默认为 false

选项

  • false

  • true

policy_name

字符串 / 必需

扩展策略的名称。

policy_type

字符串 / 必需

策略类型。

选项

  • "StepScaling"

  • "TargetTrackingScaling"

profile

别名:aws_profile

字符串

用于身份验证的命名 AWS 配置文件。

有关命名配置文件的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

还可以使用 AWS_PROFILE 环境变量。

profile 选项与 aws_access_keyaws_secret_keysecurity_token 选项互斥。

region

别名: aws_region, ec2_region

字符串

要使用的 AWS 区域。

对于 IAM、Route53 和 CloudFront 等全局服务,region 将被忽略。

也可以使用 AWS_REGIONEC2_REGION 环境变量。

有关更多信息,请参阅 Amazon AWS 文档 http://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region

ec2_region 别名已弃用,将在 2024-12-01 之后的版本中删除

EC2_REGION 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

resource_id

字符串 / 必需

与可扩展目标关联的资源的标识符。

scalable_dimension

字符串 / 必需

与可扩展目标关联的可扩展维度。

选项

  • "ecs:service:DesiredCount"

  • "ec2:spot-fleet-request:TargetCapacity"

  • "elasticmapreduce:instancegroup:InstanceCount"

  • "appstream:fleet:DesiredCapacity"

  • "dynamodb:table:ReadCapacityUnits"

  • "dynamodb:table:WriteCapacityUnits"

  • "dynamodb:index:ReadCapacityUnits"

  • "dynamodb:index:WriteCapacityUnits"

secret_key

别名: aws_secret_access_key, aws_secret_key, ec2_secret_key

字符串

AWS 秘密访问密钥。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以使用 AWS_SECRET_ACCESS_KEYAWS_SECRET_KEYEC2_SECRET_KEY 环境变量,优先级依次递减。

secret_keyprofile 选项互斥。

为了与 AWS botocore SDK 保持一致,在 5.1.0 版本中添加了 aws_secret_access_key 别名。

ec2_secret_key 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEY 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

service_namespace

字符串 / 必需

AWS 服务的命名空间。

选项

  • "ecs"

  • "elasticmapreduce"

  • "ec2"

  • "appstream"

  • "dynamodb"

session_token

别名: aws_session_token, security_token, aws_security_token, access_token

字符串

用于临时凭证的 AWS STS 会话令牌。

有关访问令牌的更多信息,请参阅 AWS 文档 https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys

也可以使用 AWS_SESSION_TOKENAWS_SECURITY_TOKENEC2_SECURITY_TOKEN 环境变量,优先级依次递减。

security_tokenprofile 选项互斥。

别名 aws_session_tokensession_token 在 3.2.0 版本中添加,参数在 6.0.0 版本中从 security_token 重命名为 session_token

security_tokenaws_security_tokenaccess_token 别名已弃用,将在 2024-12-01 之后的版本中删除。

EC2_SECRET_KEYAWS_SECURITY_TOKEN 环境变量的支持已弃用,将在 2024-12-01 之后的版本中删除。

state

字符串 / 必需

策略应为 present 还是 absent

选项

  • "absent"

  • "present"

step_scaling_policy_configuration

字典

步进缩放策略。如果正在创建策略并且 policy_type=StepScaling,则此参数是必需的。

target_tracking_scaling_policy_configuration

字典

目标跟踪策略。如果正在创建新策略并且 policy_type=TargetTrackingScaling,则此参数是必需的。

子选项的完整文档可在 API 文档中找到

https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html

CustomizedMetricSpecification

字典

如果使用自定义指标,则要使用的指标。

DisableScaleIn

布尔值

是否应禁用缩减。

选项

  • false

  • true

PredefinedMetricSpecification

字典

如果使用预定义指标,则要使用的指标。

ScaleInCooldown

整数

缩减后等待多少时间(以秒为单位)才能执行另一次缩放操作。

ScaleOutCooldown

整数

扩容后等待多少时间(以秒为单位)才能执行另一次缩放操作。

TargetValue

float

指标的目标值。

validate_certs

布尔值

如果设置为 false,则与 AWS API 通信时将不验证 SSL 证书。

强烈建议不要设置 validate_certs=false,作为替代方案,请考虑设置 aws_ca_bundle

选项

  • false

  • true ← (默认)

注释

注意

示例

# Note: These examples do not set authentication details, see the AWS Guide for details.

# Create step scaling policy for ECS Service
- name: scaling_policy
  community.aws.application_autoscaling_policy:
    state: present
    policy_name: test_policy
    service_namespace: ecs
    resource_id: service/poc-pricing/test-as
    scalable_dimension: ecs:service:DesiredCount
    policy_type: StepScaling
    minimum_tasks: 1
    maximum_tasks: 6
    step_scaling_policy_configuration:
      AdjustmentType: ChangeInCapacity
      StepAdjustments:
        - MetricIntervalUpperBound: 123
          ScalingAdjustment: 2
        - MetricIntervalLowerBound: 123
          ScalingAdjustment: -2
      Cooldown: 123
      MetricAggregationType: Average

# Create target tracking scaling policy for ECS Service
- name: scaling_policy
  community.aws.application_autoscaling_policy:
    state: present
    policy_name: test_policy
    service_namespace: ecs
    resource_id: service/poc-pricing/test-as
    scalable_dimension: ecs:service:DesiredCount
    policy_type: TargetTrackingScaling
    minimum_tasks: 1
    maximum_tasks: 6
    target_tracking_scaling_policy_configuration:
      TargetValue: 60
      PredefinedMetricSpecification:
        PredefinedMetricType: ECSServiceAverageCPUUtilization
      ScaleOutCooldown: 60
      ScaleInCooldown: 60

# Remove scalable target for ECS Service
- name: scaling_policy
  community.aws.application_autoscaling_policy:
    state: absent
    policy_name: test_policy
    policy_type: StepScaling
    service_namespace: ecs
    resource_id: service/cluster-name/service-name
    scalable_dimension: ecs:service:DesiredCount

返回值

常见的返回值已在此处记录 这里,以下是此模块特有的字段

描述

alarms

complex

与缩放策略关联的 CloudWatch 警报列表

Returned: 当 state 为 present 时返回

alarm_arn

字符串

警报的 Amazon 资源名称 (ARN)

Returned: 当 state 为 present 时返回

alarm_name

字符串

警报的名称

Returned: 当 state 为 present 时返回

creation_time

字符串

创建可扩展目标时的 Unix 时间戳。

Returned: 当 state 为 present 时返回

Sample: "2017-09-28T08:22:51.881000-03:00"

max_capacity

整数

为响应扩容事件而缩放到的最大值。如果 statepresent,则为必填项。

Returned: 当 state 为 present 时返回

Sample: 2

min_capacity

整数

为响应缩减事件而缩放到的最小值。如果 statepresent,则为必填项。

Returned: 当 state 为 present 时返回

Sample: 1

policy_arn

字符串

缩放策略的 Amazon 资源名称 (ARN)。

Returned: 当 state 为 present 时返回

policy_name

字符串

扩展策略的名称。

Returned: 当 state 为 present 时返回

policy_type

字符串

策略类型。

Returned: 当 state 为 present 时返回

resource_id

字符串

与可扩展目标关联的资源的标识符。

Returned: 当 state 为 present 时返回

Sample: "service/cluster-name/service-name"

role_arn

字符串

一个 IAM 角色的 ARN,该角色允许应用程序自动缩放代表您修改可扩展目标。如果 statepresent,则为必填项。

Returned: 当 state 为 present 时返回

Sample: "arn:aws:iam::123456789012:role/roleName"

scalable_dimension

字符串

与可扩展目标关联的可扩展维度。

Returned: 当 state 为 present 时返回

Sample: "ecs:service:DesiredCount"

service_namespace

字符串

AWS 服务的命名空间。

Returned: 当 state 为 present 时返回

Sample: "ecs"

step_scaling_policy_configuration

complex

步进缩放策略。

Returned: 当 state 为 present 并且策略类型为 StepScaling 时返回

adjustment_type

字符串

调整类型

Returned: 当 state 为 present 并且策略类型为 StepScaling 时返回

Sample: "ChangeInCapacity, PercentChangeInCapacity, ExactCapacity"

cooldown

整数

缩放活动完成后,之前与触发相关的缩放活动可以影响未来缩放事件的时间量(以秒为单位)

Returned: 当 state 为 present 并且策略类型为 StepScaling 时返回

Sample: 60

metric_aggregation_type

字符串

CloudWatch 指标的聚合类型

Returned: 当 state 为 present 并且策略类型为 StepScaling 时返回

Sample: "Average, Minimum, Maximum"

step_adjustments

list / elements=dictionary

一组调整,使您能够根据警报违规的大小进行缩放

Returned: 当 state 为 present 并且策略类型为 StepScaling 时返回

target_tracking_scaling_policy_configuration

complex

目标跟踪策略。

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

predefined_metric_specification

complex

一个预定义的指标

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

predefined_metric_type

字符串

指标类型

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

Sample: "ECSServiceAverageCPUUtilization, ECSServiceAverageMemoryUtilization"

resource_label

字符串

标识与指标类型关联的资源

Returned: 当指标类型为 ALBRequestCountPerTarget 时返回

scale_in_cooldown

整数

缩减活动完成后,在可以开始另一次缩减活动之前的时间量(以秒为单位)

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

Sample: 60

scale_out_cooldown

整数

扩容活动完成后,在可以开始另一次扩容活动之前的时间量(以秒为单位)

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

Sample: 60

target_value

整数

指标的目标值

Returned: 当 state 为 present 并且策略类型为 TargetTrackingScaling 时返回

Sample: 70

作者

  • Gustavo Maia (@gurumaia)

  • Chen Leibovich (@chenl87)