实用指南:aws(学习笔记第五十二课) s3-eventbridge-ecs使用ecs并监视s3 event
文章目录
- aws(学习笔记第五十二课) s3-eventbridge-ecs使用ecs并监视s3 event
- 学习内容:
- 1. 代码连接
- 2. 代码解析
- 3. 代码执行
aws(学习笔记第五十二课) s3-eventbridge-ecs使用ecs并监视s3 event
- 深入练习
s3和ecs的event传递 - 使用本地的
python flask文件夹作为docker image的设定
学习内容:
- 练习
s3和ecs的event传递 - 使用本地的
python flask文件夹作为docker image的设定
1. 代码连接
1.1 代码链接
1.2 代码整体架构

这里演示的是,
- 创建
S3和ECS service,这里采用fargate service。 - 创建
Simple Queue Service(SQS)队列。 - 创建一个
S3 bucket。 - 之后
EventBridge规则进行设定,如果S3 bucket发生了event,那么就会将这个event放入SQS。 fargate service的web页面每个5秒刷新一次,如果这个期间有S3 bucket有event发生,就会在画面上表示出来。
1.3 CDK整体架构

2. 代码解析
2.1 创建S3 bucket
# Explicitly create asset bucket
asset_bucket = s3.Bucket(
self, "AssetBucket",
removal_policy=RemovalPolicy.DESTROY,
auto_delete_objects=True, # 改为True以便清理
lifecycle_rules=[s3.LifecycleRule(
expiration=Duration.days(1)
)],
# 启用 EventBridge 通知
event_bridge_enabled=True
)

2.2 创建VPC以及cluster(fargate service)
# Create VPC and Fargate Cluster
vpc = ec2.Vpc(
self, "MyVpc",
max_azs=2
)
cluster = ecs.Cluster(
self, 'Ec2Cluster',
vpc=vpc
)

2.3 创建SQS以便用于接受S3 bucket event
# 创建SQS队列用于接收S3事件
queue = sqs.Queue(
self, "S3EventsQueue",
visibility_timeout=Duration.seconds(300),
retention_period=Duration.days(1)
)

2.4 创建fargate service以便用于接受S3 bucket event
# 创建自定义任务定义
task_definition = ecs.FargateTaskDefinition(
self, "TaskDef",
memory_limit_mib=512,
cpu=256
)
# 使用ECR镜像
container = task_definition.add_container(
"web",
image=ecs.ContainerImage.from_asset(
directory="../s3-eventbridge-ecs/app"
),
port_mappings=[ecs.PortMapping(container_port=80)],
environment={
浙公网安备 33010602011771号