Wait for 2 minutes for the ECS cluster to be created.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
],
"Resource": "arn:aws:s3:::ai-challenge-2024/*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"logs:CreateLogGroup"
],
"Resource": "*"
}
]
}
{
{
"containerDefinitions": [
{
"name": "keyframes-container",
"image": "<aws account id>.dkr.ecr.ap-southeast-1.amazonaws.com/ai-challenge-2024:keyframes",
"cpu": 2048,
"memory": 6144,
"portMappings": [
{
"name": "80",
"containerPort": 80,
"hostPort": 80,
"protocol": "tcp",
"appProtocol": "http"
},
{
"name": "433",
"containerPort": 433,
"hostPort": 433,
"protocol": "tcp",
"appProtocol": "http"
}
],
"essential": true,
"environment": [
{
"name": "S3_BUCKET_NAME",
"value": "ai-challenge-2024"
},
{
"name": "S3_FOLDER_NAME",
"value": "keyframes"
},
{
"name": "URL_TO_DOWNLOAD",
"value": ""
}
],
"mountPoints": [],
"volumesFrom": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/keyframes-task",
"mode": "non-blocking",
"awslogs-create-group": "true",
"max-buffer-size": "25m",
"awslogs-region": "ap-southeast-1",
"awslogs-stream-prefix": "ecs"
}
},
"systemControls": []
}
],
"family": "keyframes-task",
"taskRoleArn": "arn:aws:iam::<aws account id>:role/TaskRole",
"executionRoleArn": "arn:aws:iam::<aws account id>:role/TaskRole",
"networkMode": "awsvpc",
"placementConstraints": [],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "2048",
"memory": "6144",
"ephemeralStorage": {
"sizeInGiB": 21
},
"runtimePlatform": {
"cpuArchitecture": "X86_64",
"operatingSystemFamily": "LINUX"
},
"tags": []
}
}
Định Nghĩa Container
name
: keyframes-container
– Tên của container.
image
: <aws account id>.dkr.ecr.ap-southeast-1.amazonaws.com/ai-challenge-2024:keyframes
– Docker image được lưu trữ trong Amazon ECR mà container sẽ sử dụng.
cpu
: 2048
– Phân bổ 2 vCPUs cho container.
memory
: 6144
– Phân bổ 6 GB bộ nhớ cho container.
portMappings
:
containerPort: 80
– Mở cổng 80 cho lưu lượng HTTP.containerPort: 433
– Mở cổng 433 cho lưu lượng (lưu ý: có thể cần chỉnh sửa thành 443
cho HTTPS).essential
: true
– Chỉ ra rằng container là quan trọng đối với tác vụ; nếu container này dừng lại, toàn bộ tác vụ sẽ dừng lại.
Biến Môi Trường Biến môi trường được truyền vào container để cấu hình hành vi:
S3_BUCKET_NAME
: "ai-challenge-2024"
– Xác định bucket S3 dùng để lưu trữ keyframes.S3_FOLDER_NAME
: "keyframes"
– Xác định thư mục trong bucket S3 nơi lưu trữ keyframes.URL_TO_DOWNLOAD
: ""
– Một placeholder cho URL mà container sẽ sử dụng để tải xuống.Cấu Hình Logging Thiết lập logging tới AWS CloudWatch Logs để theo dõi và gỡ lỗi:
logDriver
: awslogs
– Sử dụng driver AWS Logs để gửi logs tới CloudWatch.awslogs-group
: /ecs/keyframes-task
– Xác định nhóm CloudWatch Logs nơi lưu trữ logs.awslogs-create-group
: true
– Tự động tạo nhóm log nếu nó chưa tồn tại.max-buffer-size
: 25m
– Xác định kích thước bộ đệm tối đa cho logs.awslogs-region
: ap-southeast-1
– Đặt khu vực AWS cho logging.awslogs-stream-prefix
: ecs
– Thêm một tiền tố vào các luồng log để giúp nhận diện chúng dễ dàng.Cài Đặt Tác Vụ
family
: "keyframes-task"
– Tên gia đình của tác vụ, được sử dụng để xác định nó trong ECS.taskRoleArn
: arn:aws:iam::<aws account id>:role/TaskRole
– Xác định vai trò IAM mà tác vụ sử dụng để có quyền truy cập các dịch vụ AWS.executionRoleArn
: arn:aws:iam::<aws account id>:role/TaskRole
– Xác định vai trò IAM được sử dụng bởi tác nhân ECS để kéo images và xuất bản logs.Cấu Hình Mạng
networkMode
: awsvpc
– Sử dụng chế độ mạng AWS VPC, cho phép tác vụ có các giao diện mạng, nhóm bảo mật và giao diện mạng đàn hồi riêng.requiresCompatibilities
: ["FARGATE"]
– Xác định rằng tác vụ yêu cầu loại khởi chạy Fargate.Cấu Hình Tài Nguyên
cpu
: "2048"
– Phân bổ 2 vCPUs cho tác vụ.memory
: "6144"
– Phân bổ 6 GB bộ nhớ cho tác vụ.ephemeralStorage
:
sizeInGiB
: 21
– Cung cấp 21 GB lưu trữ tạm thời cho dữ liệu tạm thời do tác vụ tạo ra.Cấu Hình Nền Tảng
runtimePlatform
:
cpuArchitecture
: X86_64
– Xác định kiến trúc CPU.operatingSystemFamily
: LINUX
– Xác định hệ điều hành được sử dụng.Định nghĩa tác vụ này đảm bảo một môi trường linh hoạt, mở rộng và an toàn để xử lý keyframes trong AWS ECS sử dụng loại khởi chạy Fargate, cho phép bạn chạy các container một cách hiệu quả mà không cần quản lý máy chủ.