在AWS CDK中,如果想要使用ApplicationLoadBalancedFargateService来创建Fargate服务,并在服务中设置容量提供程序策略,需要使用自定义构造函数来实现。
具体实现方法如下所示:
from aws_cdk import aws_ec2 as ec2
from aws_cdk import aws_ecs_patterns as ecs_patterns
from aws_cdk import core
class MyFargateService(ecs_patterns.ApplicationLoadBalancedFargateService):
def __init__(self, scope: core.Construct, id: str, *,
task_definition: ecs_patterns.FargateTaskDefinition,
desired_count: int = 1,
listener_port: int = 80,
vpc: ec2.IVpc,
capacity_provider_strategies=None,
task_subnets=None,
health_check_grace_period=None,
platform_version=None,
cpu=None,
memory_limit_mib=None,
memory_reservation_mib=None,
deployment_controller_type=None,
deployment_controller=None,
cloud_map_options=None,
assign_public_ip=None,
service_name=None,
target_group_name=None,
protocol=None,
domain_name=None,
domain_zone=None,
redirect_http=None) -> None:
super().__init__(scope, id, task_definition=task_definition, desired_count=desired_count,
listener_port=listener_port, vpc=vpc, task_subnets=task_subnets,
health_check_grace_period=health_check_grace_period, platform_version=platform_version,
cpu=cpu, memory_limit_mib=memory_limit_mib,
memory_reservation_mib=memory_reservation_mib,
deployment_controller_type=deployment_controller_type,
deployment_controller=deployment_controller,
cloud_map_options=cloud_map_options, assign_public_ip=assign_public_ip,
service_name=service_name, target_group_name=target_group_name, protocol=protocol,
domain_name=domain_name, domain_zone=domain_zone, redirect_http=redirect_http)
self.service.enable_scaling()
if capacity_provider_strategies is not None:
self.service.add_capacity_provider_strategy(*capacity_provider_strategies)