Đặt lịch trình cho luồng công việc phi máy chủ

với AWS Step Functions và Amazon CloudWatch

Việc tự động hóa cách bạn phản hồi sự kiện hoạt động cho các tài nguyên trong tài khoản AWS có thể giúp giảm thiểu chi phí phát sinh khi vận hành cơ sở hạ tầng Đám mây AWS. Ví dụ trong thực tế, nếu bạn là kỹ sư DevOps hoặc quản lý CNTT, bạn sẽ muốn tự động hóa tác vụ ETL, hoạt động đồng bộ hóa dữ liệu hoặc bảo mật.

Để giải quyết thách thức này, bạn có thể chạy luồng công việc phi máy chủ với lịch trình theo thời gian. Amazon CloudWatch Events cung cấp luồng sự kiện hệ thống theo thời gian thực để mô tả các thay đổi và thông báo cho tài nguyên AWS. Từ luồng sự kiện này, bạn có thể tạo quy tắc để định tuyến sự kiện cụ thể đến AWS Step Functions và gọi máy trạng thái để thực hiện thêm hoạt động xử lý. AWS Step Functions cho phép bạn điều phối nhiều dịch vụ thành luồng công việc phi máy chủ để bạn có thể xây dựng và cập nhật quy trình được tự động hóa một cách nhanh chóng.

Trong hướng dẫn này, bạn sẽ sử dụng Step Functions để điều phối luồng công việc phi máy chủ nhằm phản hồi sự kiện CloudWatch. Trước tiên, bạn sẽ tạo máy chủ trạng thái rất đơn giản bằng AWS Step Functions. Sau đó, bạn sẽ sử dụng Amazon CloudWatch Events để thiết lập vai trò sẽ chạy máy trạng thái mỗi phút. Mặc dù hướng dẫn này gọi một luồng công việc với lịch trình theo thời gian, bạn có thể khái quát hóa để tích hợp luồng công việc với các dịch vụ AWS tạo sự kiện khác.

Bạn sẽ sử dụng AWS Step FunctionsAmazon CloudWatch trong hướng dẫn này. Cả hai dịch vụ đều nằm trong Bậc miễn phí của AWS.

Bạn cần có tài khoản AWS để thực hành hướng dẫn này

Step Functions hoặc CloudWatch sẽ không mất thêm khoản phí nào. Các tài nguyên mà bạn tạo trong hướng dẫn này đều trong phạm vi Bậc miễn phí. 

Thông tin thêm về Bậc miễn phí >>


Bước 1. Tạo vai trò AWS Identity and Access Management (IAM)

AWS Step Functions có thể thực thi mã và truy cập vào các tài nguyên AWS khác (chẳng hạn như dữ liệu được lưu trữ trong vùng lưu trữ Amazon S3). Để duy trì bảo mật, bạn phải cấp cho Step Functions quyền truy cập vào các tài nguyên này bằng AWS Identity and Access Management (IAM).


a. Mở Bảng điều khiển quản lý AWS trong cửa sổ trình duyệt khác để bạn vẫn có thể tham khảo hướng dẫn từng bước này trong khi thực hành. Khi màn hình tải xong, nhập tên người dùng và mật khẩu để bắt đầu. Sau đó, nhập IAM vào thanh tìm kiếm rồi chọn IAM để mở bảng điều khiển dịch vụ.

01a
01a

(nhấp vào để phóng to)


b.  Nhấp vào Vai trò, rồi chọn Tạo vai trò.

01b
01b

( nhấp vào để phóng to )


c. Trên trang Chọn loại thực thể đáng tin cậy, trong phần Dịch vụ AWS, chọn Step Functions từ danh sách rồi chọn Tiếp theo: Quyền.

01c
01c

(nhấp vào để phóng to)


d. Trên trang Đính kèm chính sách về quyền, chọn Tiếp theo: Xem lại.

01d
01d

( nhấp vào để phóng to )


e. Trên trang Xem lại , nhập step_functions_basic_execution cho Tên vai trò, rồi nhấp vào Tạo vai trò.

01e
01e

( nhấp vào để phóng to )


f. Vai trò IAM đã được tạo.

01f
01f

(nhấp vào để phóng to)


Bước 2. Tạo máy trạng thái AWS Step Functions

Trong bước này, bạn sẽ tạo một máy trạng thái đơn giản và hoạt động độc lập bằng trạng thái Chuyển. Trạng thái Chuyển chỉ đơn giản chuyển dữ liệu đầu vào thành kết quả và không thực sự thực hiện bất kỳ công việc nào.

Trong tình huống thực tế, luồng công việc phi máy chủ có thể thực hiện bất cứ công việc nào bạn yêu cầu. Bạn có thể điều phối nhiều hàm Lambda để thực hiện tác vụ, đưa ra quyết định, v.v. Tuy nhiên, với hướng dẫn này, chúng ta sẽ đơn giản hóa luồng công việc.


a. Mở bảng điều khiển AWS Step Functions. Step Functions cung cấp nhiều máy trạng thái được định sẵn dưới dạng mẫu. Với hướng dẫn này, bạn sẽ tạo máy trạng thái bằng mẫu Hello World. Trên trang Tạo máy trạng thái, chọn Mẫu rồi chọn Hello world.

02c
02c

(nhấp vào để phóng to)


b. Trong phần Chi tiết, nhập Tên của máy trạng thái là ScheduledWorkflow rồi chọn Tôi sẽ sử dụng vai trò sẵn có trong phầnVai trò IAM. Trong phần Vai trò IAM sẵn có, chọn vai trò IAM step_functions_basic_execution mà bạn đã tạo.

02d
02d

(nhấp vào để phóng to)


c. Step Functions sẽ tự động điền tên của máy trạng thái. Dịch vụ này cũng sẽ điền ngăn Định nghĩa máy trạng thái bằng phần mô tả trong ngôn ngữ Amazon States Language của máy trạng thái. Để biết thêm thông tin về cách định nghĩa máy trạng thái, hãy xem Cấu trúc máy trạng thái.

Hãy cùng sửa đổi đôi chút máy trạng thái của bạn:

Trên dòng 2 và dòng 5, thay thế “HelloWorld” bằng “Do Something”
Trên dòng 7, thay thế “Hello World!” bằng “Work complete!”

Sau đó, nhấp vào nút làm mới bên cạnh luồng công việc bằng hình ảnh để cập nhật sơ đồ máy trạng thái và hiển thị thay đổi của bạn.

02e
02e

(nhấp vào để phóng to)


d. Chọn Tạo máy trạng thái. Máy trạng thái của bạn hiện đã sẵn sàng để thực thi.

02f
02f

(nhấp vào để phóng to)


Bước 3. Tạo vai trò Amazon CloudWatch Events

Bây giờ, khi đã tạo máy trạng thái, bạn có thể tạo vai trò Amazon CloudWatch Events để chạy máy trạng thái theo lịch trình. Amazon CloudWatch Events cung cấp luồng sự kiện hệ thống gần như theo thời gian thực để mô tả các thay đổi trong tài nguyên Amazon Web Services (AWS). Với vai trò đơn giản có thể nhanh chóng được thiết lập, bạn có thể khớp và định tuyến các sự kiện đến một hay nhiều hàm hoặc luồng đối tượng.


a. Mở tab khác trên trình duyệt. Chuyển đến bảng điều khiển CloudWatch Events bằng cách nhập CloudWatch trong thanh tìm kiếm.

03a
03a

(nhấp vào để phóng to)


b. Chọn Sự kiện rồi chọn Tạo vai trò.  

03b
03b

(nhấp vào để phóng to)


c. Trang Bước 1: Tạo vai trò sẽ xuất hiện. Trong phần Nguồn sự kiện, chọn Lịch trình. Trong phần Tốc độ cố định, nhập 1 và giữ nguyên đơn vị “Phút”.

03c
03c

(nhấp vào để phóng to)


d. Trong phần Đối tượng, chọn Thêm đối tượng. Chọn Máy trạng thái Step Functions từ danh sách rồi chọn máy trạng thái ScheduledWorkflow .

Chọn Đặt cấu hình đầu vào rồi chọn Sự kiện trùng khớp. Thao tác này sẽ chuyển chi tiết của CloudWatch Events dưới dạng thông tin đầu vào đến Step Functions mỗi lần phiên bản của máy trạng thái được thực thi.

Chọn Tạo vai trò mới cho tài nguyên cụ thể này rồi nhấp vào Đặt cấu hình chi tiết.

03d
03d

(nhấp vào để phóng to)


e. Trang Bước 2: Đặt cấu hình chi tiết vai trò sẽ xuất hiện. Nhập execute_state_machineTên cho vai trò, vẫn chọn Trạng thái là Bật rồi chọn Tạo vai trò.

Vai trò được tạo và trang Vai trò sẽ xuất hiện. Trang này liệt kê tất cả vai trò của CloudWatch Events.

Quy trình thực thi của máy trạng thái hiện sẽ thực thi mỗi phút.

03e
03e

(nhấp vào để phóng to)


Bước 4. Tùy chỉnh cách máy trạng thái xử lý đầu vào và kết quả

Tiếp theo, bạn sẽ tùy chỉnh cách máy trạng thái xử lý đầu vào và kết quả. Việc hiểu rõ cách thông tin di chuyển qua các trạng thái và tìm hiểu cách lọc và điều khiển dữ liệu này sẽ giúp bạn thiết kế và triển khai luồng công việc trong AWS Step Functions một cách hiệu quả.


a. Quay lại bảng điều khiển Step Functions, máy trạng thái ScheduledWorkflow vẫn sẽ hiển thị. Nhấp vào Chỉnh sửa.

04a
04a

(nhấp vào để phóng to)


b. Trong cửa sổ Định nghĩa máy trạng thái, chú ý tới dòng 7 của máy trạng thái. Trường Result trong trạng thái Chuyển chỉ định kết quả sẽ được chuyển sang trạng thái tiếp theo. Vì máy trạng thái của bạn chỉ có 1 trạng thái, thông báo “Work complete!” sẽ được chuyển sang trạng thái kết thúc của luồng công việc.

Bạn có thể nhớ lại rằng trạng thái Chuyển của Step Functions chỉ đơn giản chuyển thông tin đầu vào thành kết quả. Bạn có thể sử dụng trường ResultPath để sửa đổi kết quả của một trạng thái. Ví dụ: bạn có thể thay thế thông tin đầu vào của trạng thái bằng kết quả trạng thái đó tạo ra (ví dụ: kết quả từ hàm Lambda của một trạng thái Tác vụ).

Để kết hợp thông tin đầu vào và kết quả của trạng thái, hãy thêm một dòng sau dòng 7 và nhập:

"ResultPath": "$.taskresult",

Đoạn mã này sẽ kết hợp chi tiết của sự kiện CloudWatch đã gọi quá trình thực thi máy trạng thái với kết quả của trạng thái Chuyển. Trong trường hợp này, đó là “Work complete!”. Để biết thêm thông tin, hãy xem Xử lý thông tin đầu vào và kết quả trong Step Functions.

04b
04b

(nhấp vào để phóng to)


c. Nhấp vào Lưu.

04c
04c

(nhấp vào để phóng to)


Bước 5. Xác nhận luồng công việc hoạt động như mong đợi

Bây giờ, khi bạn đã bật vai trò CloudWatch Events, CloudWatch đang kích hoạt một quy trình thực thi của luồng công việc máy trạng thái mỗi phút. Trong bước này, bạn sẽ quan sát các quy trình thực thi này và xác minh rằng chi tiết của sự kiện CloudWatch đang được Step Functions ghi lại.


a. Quay lại bảng điều khiển Step Functions, nhấp vào ScheduledWorkflow trong phần đánh dấu đường dẫn ở đầu trang.

05a
05a

(nhấp vào để phóng to)


b. Trong phần Thực thi, bạn có thể quan sát các quy trình thực thi được thực hiện bởi CloudWatch Events. Bạn có thể nhấp vào nút làm mới để cập nhật cửa sổ và quan sát quy trình thực thi mới của máy trạng thái xuất hiện. Đợi vài phút để kích hoạt ít nhất 2 phiên bản của luồng công việc.

05b
05b

(nhấp vào để phóng to)


c. Nhấp chuột phải vào một quy trình thực thi và mở liên kết trong tab mới trên trình duyệt. Lặp lại thao tác với quy trình thực thi khác của máy trạng thái.

Trên từng tab, nhấp vào trạng thái “Do Something” trong ngăn Luồng công việc bằng hình ảnh để điền ngăn Chi tiết bước ở bên phải.

Khi nhấp vào Thông tin đầu vào, bạn có thể thấy chi tiết của sự kiện trùng khớp từ CloudWatch. Lưu ý sự khác nhau giữa các sự kiện, chẳng hạn như trường “ID” và “thời gian”.

05c
05c

(nhấp vào để phóng to)


d. Trên từng tab, mở rộng phần Kết quả bên dưới ngăn Chi tiết bước. Bạn có thể thấy thông tin đầu vào đã được kết hợp với kết quả của trạng thái “Do Something”.

05d
05d

(nhấp vào để phóng to)


Bước 6. Chấm dứt tài nguyên

Ở bước này, bạn sẽ chấm dứt các tài nguyên của AWS Step Functions và Amazon CloudWatch.

Quan trọng: Việc chấm dứt các tài nguyên hiện không dùng sẽ giúp giảm chi phí và là biện pháp tốt nhất. Nếu bạn không chấm dứt tài nguyên, thì sẽ phát sinh thêm phí.


a. Đóng các tab của từng quy trình thực thi máy trạng thái. Ở trên đầu cửa sổ Step Functions, nhấp vào Máy trạng thái.

06a
06a

(nhấp vào để phóng to)


b. Trong cửa sổ Máy trạng thái, nhấp vào máy trạng thái bạn đã tạo cho hướng dẫn này và chọn Xóa. Xác nhận hành động bằng cách chọn Xóa máy trạng thái trong hộp hội thoại. Máy trạng thái của bạn sẽ bị xóa sau một hoặc hai phút khi Step Functions đã xác nhận rằng mọi quy trình thực thi đang tiến hành đều đã hoàn tất.

06b
06b

( nhấp vào để phóng to )


c. Tiếp theo, bạn sẽ xóa vai trò Amazon CloudWatch Events. Trong bảng điều khiển CloudWatch, chọn Hành động rồi nhấp vào Xóa. Xác nhận xóa bằng cách nhấp vào Xóa một lần nữa.

06c
06c

(nhấp vào để phóng to)


d. Nhấp vào Dịch vụ rồi nhập IAM trong thanh tìm kiếm để chuyển đến bảng điều khiển IAM.

06d

(nhấp vào để phóng to)


e. Nhấp vào Vai trò.

06e
06e

(nhấp vào để phóng to)


f. Chọn cả hai vai trò IAM mà bạn đã tạo cho phần hướng dẫn này, rồi nhấp vào Xóa vai trò. Xác nhận xóa bằng cách nhấp vào Có, xóa trên hộp thoại.

Giờ bạn có thể đăng xuất khỏi Bảng điều khiển quản lý AWS.

06f
06f

(nhấp để phóng to)


Xin chúc mừng!

Bạn đã đặt lịch trình thành công cho luồng công việc phi máy chủ để chạy mỗi phút.
AWS Step Functions cho phép bạn kiểm tra quy trình thực thi tác vụ định kỳ để xác nhận rằng các tác vụ này được thực thi một cách nhất quán. Bằng cách kết hợp AWS Step Functions với Amazon CloudWatch Events, bạn có thể tự động hóa các tác vụ hàng ngày, hàng tuần và hàng tháng hoặc kích hoạt quy trình thực thi cho luồng công việc Step Functions khi đáp ứng một số điều kiện cụ thể.