AWS ECS的CDK结构
aws-cdk.aws-ecs-patterns的Python项目详细描述
用于高级ECS构造的CDK构造库
This is a developer preview (public beta) module. Releases might lack important features and might have future breaking changes.
This API is still under active development and subject to non-backward compatible changes or removal in any future version. Use of the API is not recommended in production environments. Experimental APIs are not subject to the Semantic Versioning model.
这个库提供了遵循通用架构模式的高级Amazon ECS结构它包含:
- 负载平衡服务
- 队列处理服务
- 计划任务(cron作业)
负载平衡服务
要定义位于负载均衡器后面的amazon ecs服务,请实例化以下之一:
LoadBalancedEc2Service
constloadBalancedEcsService=newecsPatterns.LoadBalancedEc2Service(stack,'Service',{cluster,memoryLimitMiB: 1024,image: ecs.ContainerImage.fromRegistry('test'),desiredCount: 2,environment:{TEST_ENVIRONMENT_VARIABLE1:"test environment variable 1 value",TEST_ENVIRONMENT_VARIABLE2:"test environment variable 2 value"}});
LoadBalancedFargateService
constloadBalancedFargateService=newecsPatterns.LoadBalancedFargateService(stack,'Service',{cluster,memoryLimitMiB: 1024,cpu: 512,image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),});
如果指定vpc并省略cluster
,cdk将创建一个新的amazon ecs集群。如果部署多个服务,cdk将只为每个vpc创建一个集群。
如果省略cluster
和vpc
,cdk将创建一个新的vpc,其子网位于两个可用区域中,集群位于该vpc内。
队列处理服务
要定义创建队列并从该队列读取数据的服务,请实例化以下服务之一:
QueueProcessingEc2Service
constqueueProcessingEc2Service=newQueueProcessingEc2Service(stack,'Service',{cluster,memoryLimitMiB: 1024,image: ecs.ContainerImage.fromRegistry('test'),command:["-c","4","amazon.com"],enableLogging: false,desiredTaskCount: 2,environment:{TEST_ENVIRONMENT_VARIABLE1:"test environment variable 1 value",TEST_ENVIRONMENT_VARIABLE2:"test environment variable 2 value"},queue,maxScalingCapacity: 5});
QueueProcessingFargateService
constqueueProcessingFargateService=newQueueProcessingFargateService(stack,'Service',{cluster,memoryLimitMiB: 512,image: ecs.ContainerImage.fromRegistry('test'),command:["-c","4","amazon.com"],enableLogging: false,desiredTaskCount: 2,environment:{TEST_ENVIRONMENT_VARIABLE1:"test environment variable 1 value",TEST_ENVIRONMENT_VARIABLE2:"test environment variable 2 value"},queue,maxScalingCapacity: 5});
计划任务
要定义定期运行的任务,请实例化一个ScheduledEc2Task
:
// Instantiate an Amazon EC2 Task to run at a scheduled intervalconstecsScheduledTask=newScheduledEc2Task(this,'ScheduledTask',{cluster,image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),scheduleExpression:'rate(1 minute)',environment:[{name:'TRIGGER',value:'CloudWatch Events'}],memoryLimitMiB: 256});