实用指南:aws(学习笔记第五十二课) s3-eventbridge-ecs使用ecs并监视s3 event

aws(学习笔记第五十二课) s3-eventbridge-ecs使用ecs并监视s3 event

  • 深入练习s3ecsevent传递
  • 使用本地的python flask文件夹作为docker image的设定

学习内容:

  • 练习s3ecsevent传递
  • 使用本地的python flask文件夹作为docker image的设定

1. 代码连接

1.1 代码链接

cdk的示例代码链接

1.2 代码整体架构

在这里插入图片描述
这里演示的是,

  • 创建S3ECS service,这里采用fargate service
  • 创建Simple Queue Service(SQS)队列。
  • 创建一个S3 bucket
  • 之后EventBridge规则进行设定,如果S3 bucket发生了event,那么就会将这个event放入SQS
  • fargate serviceweb页面每个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={
posted @ 2026-01-06 19:17  clnchanpin  阅读(16)  评论(0)    收藏  举报