Chức năng AWS Lambda để bắt đầu và dừng một phiên bản EC2

theanh

Administrator
Nhân viên
Lambda thuộc dịch vụ "Tính toán" trong AWS (Amazon Web Services). Sử dụng Lambda, chúng ta có thể viết mã mà không cần cung cấp hoặc quản lý máy chủ. Lambda tự động chạy mã của chúng ta mà không yêu cầu chúng ta cung cấp hoặc quản lý máy chủ. Chúng ta chỉ cần viết mã và tải lên Hàm Lambda.

Lambda chỉ thực thi mã khi cần thiết. Nó tự động phát triển hỗ trợ từ một vài yêu cầu đến hàng nghìn yêu cầu.

Chúng tôi bị tính phí cho mỗi 100ms mã của chúng tôi thực thi và số lần mã đó được kích hoạt. Chúng tôi chỉ bị tính phí cho thời gian tính toán mà mã của chúng tôi sử dụng và không bị tính phí khi mã không được thực thi. Để hiểu thêm về thanh toán, nhấp vào đây.

Những gì chúng tôi cần cung cấp chỉ là mã và AWS Lambda sẽ đảm nhiệm việc bảo trì, tự động mở rộng quy mô, tính khả dụng cao. Mã này cũng có thể được thực thi để phản hồi các sự kiện. Để sử dụng Lambda, chúng ta cần viết mã bằng một trong các ngôn ngữ mà nó cung cấp.

Trong bài viết này, chúng ta sẽ xem cách tạo một hàm Lambda đơn giản có thể khởi động/dừng một phiên bản EC2.

Điều kiện tiên quyết​

  1. Tài khoản AWS (Tạo nếu bạn không có)
  2. Cơ bản về EC2Service (Nhấp vào đây để tìm hiểu về EC2).

Những gì chúng tôi sẽ làm​

  1. Đăng nhập vào AWS.
  2. Tạo Hàm Lambda.
  3. Sửa đổi Vai trò IAM
  4. Thực hiện Vai trò

Đăng nhập vào AWS​

  1. Nhấp vào đâyđể đến Trang đăng nhập AWS.
Khi chúng ta nhấp vào liên kết trên, chúng ta sẽ thấy một trang web như sau, tại đó chúng ta được yêu cầu đăng nhập bằng thông tin đăng nhập của mình.



Sau khi đăng nhập thành công vào AWS, chúng ta sẽ thấy bảng điều khiển chính với tất cả các dịch vụ được liệt kê như sau.


Tạo hàm Lambda​

Trước khi tiến hành tạo hàm Lambda, hãy chọn vùng mong muốn và gần nhất.

Nhấp vào mũi tên gần vùng mặc định (Đây là Paris) và bạn sẽ thấy danh sách các vùng khả dụng và chọn vùng mong muốn. Ở đây, tôi đã chọn "Paris", giữ nguyên. Bạn có thể chọn theo ý muốn hoặc yêu cầu của mình.





Nhấp vào "Dịch vụ" ở góc trên bên trái và bạn sẽ thấy màn hình sau với tất cả các dịch vụ khả dụng trên AWS. Nhấp vào "Lambda" có trong "Tính toán"



Bạn sẽ thấy màn hình nơi bạn có thể tạo Hàm Lambda. Nhấp vào "Tạo Hàm"



Bạn có thể tự tạo hàm, sử dụng bản thiết kế hiện có hoặc duyệt kho lưu trữ nơi chúng ta có thể tìm kiếm hàm cần thiết để xem hàm đó có tồn tại hay không. Ở đây, chúng ta sẽ tạo Hàm Lambda đơn giản của riêng mình bằng Python.

Nhấp vào "Author from Scratch" để viết Hàm Lambda của riêng mình.

Đặt tên cho Hàm.

Chọn "Python 3.6" từ danh sách thả xuống của Runtime.



Hàm Lambda cần có đủ quyền để thực thi. Chọn "Tạo vai trò mới với Quyền Lambda cơ bản". Thao tác này sẽ tạo một Vai trò mới có cùng tên với tên của Tên hàm với một số khóa ngẫu nhiên làm hậu tố.



Các quyền mặc định ở trên là không đủ. Chúng ta sẽ hiểu rõ hơn về điều này ở bước tiếp theo. Bây giờ, chúng ta sẽ tạo một hàm và xem những lỗi có thể phát sinh.

Thêm mã sau vào hàm và nhấp vào nút "Lưu" để lưu hàm.

Thay đổi giá trị của "vùng và các trường hợp".
Mã:
import boto3
region = 'eu-west-3'
instances = ['i-05be5c0c4039881ed']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
ec2.stop_instances(InstanceIds=instances)
print('stopped your instances: ' + str(instances))




Nhấp vào nút “Select a test Event” có sẵn bên cạnh nút “Test” và chọn “Configure test event”. Bạn sẽ nhận được màn hình sau. Không thực hiện bất kỳ thay đổi nào và chỉ cần đặt tên cho sự kiện, ở đây là “testStopEC2” và nhấp vào “Save”. Sự kiện này chỉ là một sự kiện mẫu và không liên quan gì đến hàm của chúng ta. Chúng ta có thể tạo một sự kiện khác theo yêu cầu của mình.



Lưu ý: Chúng ta có thể tạo sự kiện Cloudwatch để kích hoạt Hàm Lambda này dựa trên sự kiện được kích hoạt trong Cloudwatch. Chúng ta sẽ không thảo luận về điều này ngay bây giờ vì cần phải hiểu rõ về Cloudwatch.Vì vậy, chúng ta sẽ tiến hành với một sự kiện đơn giản. Bạn có thể khám phá điều này khi đã quen với Lambda và Cloudwatch.

Bây giờ hãy nhấp vào "Kiểm tra". Lưu ý cẩn thận, hàm không thực thi được vì không đủ quyền. Đây là những gì tôi đã nói ở bước trước. Đừng hoảng sợ khi nhìn vào lỗi. Chúng tôi sẽ chỉ định các quyền cần thiết cho vai trò được tạo khi tạo hàm Lambda.


Sửa đổi vai trò IAM

Nhấp vào "Dịch vụ" ở góc trên bên phải màn hình và tìm kiếm IAM.



Bạn sẽ thấy màn hình như sau. Đây là màn hình chính của IAM. Chúng tôi sẽ không đi sâu vào IAM trong bài viết này.



Nhấp vào "Roles" từ bảng điều khiển bên trái và nhấp vào Role bắt đầu bằng cùng tên với tên Hàm Lambda và có một chuỗi ngẫu nhiên làm hậu tố.



Nhấp vào "Attach policies"



Tìm kiếm "ec2" trong hộp tìm kiếm và chọn "AmazonEC2FullAccess" từ danh sách và nhấp vào nút "Attach Policy". Bây giờ chúng ta đã sẵn sàng để thực thi hàm Lambda với các quyền cần thiết.


Thực thi Hàm Lambda

Quay lại hàm Lambda của chúng ta và bây giờ nhấp vào Nút "Test". Lần này, bạn có thể thấy trong nhật ký rằng hàm đã được thực thi thành công. Điều này có nghĩa là hàm Lambda đã kích hoạt yêu cầu dừng phiên bản.



Đi đến dịch vụ "EC2" và xem phiên bản có id phiên bản mà chúng ta cung cấp cho hàm Lambda đã bị dừng hay chưa. Tại đây, bạn có thể thấy Trạng thái phiên bản là "Dừng" có nghĩa là hàm Lambda đã xử lý thành công yêu cầu dừng phiên bản cần thiết của chúng ta.



Trong các bước trước, chúng ta đã thấy hàm Lambda dừng phiên bản EC2. Bây giờ chúng ta sẽ xem cách khởi động phiên bản EC2 bằng Lambda. Để thực hiện như vậy, bạn có thể chỉnh sửa cùng một hàm hoặc viết một hàm mới theo các bước trước đó.

Ở đây, chúng ta sẽ sử dụng cùng một hàm và chỉ cần thay đổi mã Python của mình.



Sử dụng mã sau để khởi động phiên bản EC2 bằng Lambda.

Thay đổi giá trị của "region and instances".
Mã:
import boto3
region = 'eu-west-3'
instances = ['i-05be5c0c4039881ed']
ec2 = boto3.client('ec2', region_name=region)
def lambda_handler(event, context):
# ec2.stop_instances(InstanceIds=instances)
ec2.start_instances(InstanceIds=instances)
print('đã dừng các phiên bản của bạn: ' + str(instances))
Lưu hàm

Lưu ý: Hãy cẩn thận khi viết mã Python, nó có thể gây ra lỗi nếu thụt lề không đúng cách.



Nhấp vào "Kiểm tra" để thực thi hàm.

Xem chi tiết về quá trình thực thi và bạn có thể thấy rõ rằng hàm đã được thực thi thành công.Điều này có nghĩa là hàm Lambda đã kích hoạt yêu cầu khởi động phiên bản.



Tại đây, bạn có thể thấy Trạng thái phiên bản là "Đang khởi tạo" có nghĩa là hàm Lambda đã xử lý thành công yêu cầu của chúng ta để khởi động phiên bản bắt buộc.


Kết luận:

Trong bài viết này, chúng ta đã thấy cách tạo một hàm Lambda đơn giản để dừng phiên bản ec2, gán các chính sách cần thiết cho các vai trò đang được Hàm Lambda sử dụng. Chúng ta cũng đã thấy cách khởi động phiên bản EC2 bằng hàm Lambda. Chúng ta đã chỉnh sửa cùng một hàm để thực hiện dừng/khởi động phiên bản EC2, bạn có thể tạo 2 hàm khác nhau cho việc này.
 
Back
Bên trên