Hành động sau khi triển khai tùy chỉnh và viết kịch bản triển khai bằng cách sử dụng AWS Systems Manager và Amazon CodeWhisperer

bởi Dylan Martin và Mohan CV | vào ngày 04 THG 1 năm 2024 |

Ở Phần 1 của loạt bài này, bạn đã tìm hiểu về kiểm thử và triển khai Blue/Green trên AWS, một chiến lược quan trọng tăng khả năng khả dụng ứng dụng và giảm rủi ro triển khai bằng cách đơn giản hóa quá trình quay lại nếu triển khai thất bại. Chúng tôi đã khám phá sao chép trực tiếp sử dụng AWS Application Migration Service (AWS MGN) và giới thiệu các hành động sau khi triển khai được xây dựng trước với AWS Systems Manager (SSM Agent) để đơn giản hóa quy trình triển khai của bạn.

Ở Phần 2, bạn sẽ đào sâu hơn nữa, mang đến cơ hội tối đa hóa sự kiểm soát và hiệu suất của bạn. Chúng tôi giới thiệu các hành động Sau khi Triển khai được xây dựng tùy chỉnh và kịch bản kiểm thử và di chuyển do Amazon CodeWhisperer cung cấp năng lượng. CodeWhisperer đóng vai trò như đồng đồng hành mã hóa AI của bạn, cung cấp gợi ý mã nguồn thời gian thực, hiểu biết về ngữ cảnh trong Integrated Development Environment (IDE) của bạn. Những gợi ý này dựa trên các ý kiến về ngôn ngữ tự nhiên mô tả các nhiệm vụ lập trình cụ thể. Điều này không chỉ tối ưu hóa quy trình phát triển phần mềm của bạn mà còn trang bị bạn với đoạn mã sẵn có. Những đoạn mã này tương ứng với các ý kiến bằng tiếng Anh thông thường và có thể dễ dàng được chấp nhận, khám phá thêm hoặc điều chỉnh theo cần thiết để triển khai chính xác.

Điều gì làm cho khả năng này quan trọng? Nó trang bị bạn với khả năng kiểm soát lớn hơn về việc quản lý tài nguyên AWS trong khi duy trì tính linh hoạt. Nó cho phép bạn trao đổi sự thuận tiện của AWS Management Console để có khả năng điều chỉnh tốt của một phương pháp theo chương trình, đảm bảo rằng quá trình triển khai của bạn hiệu quả hơn, đáng tin cậy hơn và có thể thích ứng với nhu cầu đặc biệt của bạn. Trong một thế giới phát triển phần mềm nhanh chóng, khả năng này là vũ khí bí mật giúp bạn duy trì ưu thế.

Tiếp tục trong cùng môi trường như Phần 1, nếu các phiên bản kiểm thử của bạn trên AWS MGN đã được khởi chạy, xem xét việc tắt nguồn tài nguyên đó để tạo ra một bảng sạch trước khi thực hiện một việc khởi chạy mới để thực hiện các hành động tùy chỉnh sau khi triển khai.

Tổng quan về giải pháp

Sử dụng các Dịch vụ AWS, bao gồm AWS Application Migration Service (AWS MGN), Amazon CodeWhisperer, Amazon EC2 và AWS Command Line Interface (AWS CLI), bạn sẽ:

  1. Tạo một hành động Sau khi Triển khai AWS Systems Manager tùy chỉnh mới.
  2. Khi Hành động Sau khi Triển khai này được tạo, bạn sẽ khởi tạo một kết nối mới đến AWS MGN với phiên bản Blue Cũ của chúng tôi. Bước này là cần thiết vì các thay đổi đối với các hành động của chúng tôi chỉ áp dụng cho các máy chủ nguồn mới và được khởi chạy bằng phiên bản kiểm thử của chúng tôi.
  3. Với một phiên bản kiểm thử đã được tạo, bạn có thể thử nghiệm bằng cách thêm các dịch vụ và tính năng khác nhau vào Green Version Amazon EC2 instance.
  4. Bạn sẽ thực hiện điều này bằng cách sử dụng các tập lệnh được xây dựng với sự giúp đỡ của CodeWhisperer. Những đoạn mã này sẽ được viết trong AWS SDK cho Python (Boto3). Những đoạn mã này sẽ cho phép chúng ta tận dụng AWS CLI để tạo ra một công thức đơn giản, lặp lại để gắn kết các dịch vụ AWS vào các phiên bản kiểm thử của chúng tôi trên AWS MGN.
  5. Cuối cùng, bạn sẽ kết thúc bằng một số bước tiếp theo, có thể bao gồm việc tắt nguồn tài nguyên hoặc hoàn tất quá trình chuyển đổi sang Green Version instance, như bạn đã thấy ở Phần 1.

Kiến trúc mục tiêu

Sơ đồ sau mô tả kiến trúc giải pháp của chúng tôi:

Hình 1: Kiến trúc giải pháp đề xuất cho kiểm thử Blue/Green của AWS MGN sử dụng Amazon CodeWhisperer và Custom Post-Launch Actions.

  1. Thiết lập các Custom Post Launch Actions trong AWS MGN
  2. Cài đặt bộ nhân mã nhân bản AWS MGN cho Phiên bản Blue
  3. Viết kịch bản đính kèm Dịch vụ AWS vào Phiên bản Green bằng AWS SDK cho Python (Boto3) được hỗ trợ bởi Amazon CodeWhisperer
  4. Thực thi kịch bản qua CLI
  5. Hoàn tất quy trình chuyển đổi trong AWS MGN
  6. Bước Tiếp Theo – Cập nhật Định tuyến DNS với Amazon Route 53

Hướng dẫn

Sau khi đã giới thiệu và kiến trúc hiển thị giải pháp mục tiêu, bạn có thể bắt đầu phần Hướng dẫn.

Thiết lập Các Custom Post Launch Actions trong AWS MGN

Phần đầu tiên này sẽ liên quan đến quy trình thiết lập ban đầu để tạo một tác vụ tùy chỉnh mới Sau Triển khai trong AWS MGN.

Figure 2: AWS Console, AWS Application Migration Service Console, Post-Launch Template Section

Bạn sẽ tạo các Custom Post Launch Actions mới thông qua tab Post-launch template trong trang dịch vụ AWS MGN. Như đã ghi chú trong ảnh chụp màn hình, tất cả các thay đổi được thực hiện trên các mẫu chỉ được áp dụng cho các máy chủ nguồn mới thêm vào.

Figure 3: AWS MGN Post-launch Template, Add Action feature

Bạn sẽ chọn nút Create Action và hoàn tất các thao tác. Có nhiều tài liệu SSM để chọn, bao gồm nhiều trường hợp sử dụng mà Post-launch templates được xác định trước không cung cấp.

Lưu ý: Bạn có thể tạo nội dung tài liệu SSM của riêng mình nếu tài liệu mong muốn của bạn không được liệt kê.

Hình 4: Tính năng tài liệu AWS SSM hiển thị một tài liệu để tạo Load Balancer và Auto Scaling Group

Bạn sẽ giữ nguyên chủ đề từ kiến trúc và chọn tài liệu AWS Migration – CreateLoadBalanceAutoScaleGroup. Để biết thêm thông tin về tài liệu, chọn biểu tượng Xem trong Systems Manager bên cạnh tài liệu bạn đã chọn.

Lưu ý: Systems Manager cho phép bạn tìm kiếm qua các tài liệu dịch vụ và đánh dấu tài liệu thường xuyên sử dụng để truy cập dễ dàng hơn.

Hình 5: Post-launch Action khi Triển khai của AWS MGN, tài liệu SSM sẽ yêu cầu các phụ thuộc khác nhau tùy thuộc vào tài liệu được chọn.

Một khi bạn đã chọn tài liệu SSM ưa thích của mình, bạn sẽ cần hoàn thành các đầu vào cần thiết để hoàn tất quá trình thiết lập Action. Những bước này sẽ thay đổi tùy theo tài liệu SSM được chọn. AWS MGN bao gồm các tính năng tiêu chuẩn như tính năng Order để xác định khi nào mỗi Hành động diễn ra và sự ưu tiên.

Figure 6: Successfully completed Creating Action

Với hành động tùy chỉnh đã được tạo thành công, bạn có thể cài đặt Hành động Replication của AWS MGN cho phiên bản Blue của Amazon EC2 của chúng ta, khởi chạy một phiên bản kiểm tra và xác nhận rằng hành động tùy chỉnh của chúng ta đang hoạt động trên phiên bản Green.

Cài đặt AWS MGN replication agent cho phiên bản Blue

Bạn sẽ cài đặt agent AWS MGN như mô tả trong phần 5 của Phần 1 và bắt đầu quá trình di chuyển.

Figure 7: AWS MGN Lifecycle page featured in the AWS Console

Sau khi sao chép dữ liệu ban đầu, AWS MGN sẽ chuyển chúng ta đến Ready for Testing Stage. Bạn sẽ chọn Test and Cutover drop-down menu và khởi chạy Test Instances. AWS MGN sẽ cung cấp một máy chủ chuyển đổi Amazon EC2 để tạo ra Green Version Test Instance. Đây là một giai đoạn quan trọng. Trong Post-launch actions status, bạn sẽ có cái nhìn đầu tiên để xác định liệu bạn đã cấu hình thành công các hành động tùy chỉnh sau khi khởi chạy bạn đã chọn vài phút trước không. Nếu bạn gặp lỗi với AWS MGN Agent hoặc Systems Manager Post-Launch Actions, hãy xem các lỗi khắc phục để tìm sự trợ giúp.

Sau khi Test instance, bạn có thể tiếp tục kiểm thử theo cách cần thiết, xem xét các tài nguyên và tính năng được tận dụng trong các Post-launch Actions, hoặc di chuyển đến quy trình chuyển giao được mô tả ở cuối bài đăng này.

Trong trường hợp của bạn, bạn sẽ tiếp tục với Phần 2, bao gồm một phương pháp khác để kết nối các dịch vụ và tính năng vào Phiên bản Kiểm thử Phiên bản Green của bạn thông qua kịch bản.

Viết Kịch Bản Cho Việc Gắn Kết Dịch Vụ AWS vào Phiên Bản Green sử dụng AWS SDK cho Python (Boto3) được hỗ trợ bởi Amazon CodeWhisperer

Trong phần này, bạn sẽ tập trung vào việc xây dựng một quy trình đơn giản, lặp lại được để gắn kết dịch vụ vào Phiên bản Green của chúng ta bằng cách tận dụng Amazon’s AI Coding Companion, CodeWhisperer, để có được gợi ý mã hàm đầy đủ tính năng ngay trong môi trường phát triển tích hợp của chúng ta, cho phép người dùng bắt đầu viết kịch bản mà không gặp độ trễ tối thiểu.

Đối với Bước 1 của phần này, hãy mở IDE của chúng ta, trong trường hợp này là VS Code, và làm theo Hướng dẫn Người dùng CodeWhisperer: Cài đặt để hoàn thành việc thiết lập.

Figure 8: VSCode IDE with a new Python file

Bạn có thể bắt đầu viết kịch bản Python của chúng ta với boto3, kết hợp với AWS CLI, sẽ cho phép chúng ta tương tác với các tài nguyên trong AWS thông qua các kịch bản. Bạn có thể xác nhận ở bảng điều khiển Developer Tools bên trái rằng CodeWhisperer Auto-Suggestions đã được bật. CodeWhisperer đề xuất một số đoạn mã cho chúng ta, như thấy trong màu xám nhạt.

Figure 9: Amazon CodeWhisperer suggests code output in our IDE via the light gray color text

Amazon CodeWhisperer sẽ đề xuất các phần tự động hoàn chỉnh của mã của bạn khi người dùng viết kịch bản. Bạn có thể lựa chọn giữa các tùy chọn này bằng cách sử dụng các phím mũi tên của bạn và nhấn phím Tab để chọn một tùy chọn và dán mã.

Đối với kịch bản này, bạn sẽ tạo một Amazon Elastic Load Balancer và một nhóm mục tiêu để kết nối với máy chủ Amazon EC2 của bạn, cập nhật nhóm bảo vệ để cho phép truy cập vào Cổng 80 cho lưu lượng HTTP và thêm một địa chỉ IP đàn hồi và một nhóm tự động Auto Scaling của AWS. Những tài nguyên này sẽ cho phép bạn thử nghiệm việc gửi lưu lượng mạng đến máy chủ của bạn, thử nghiệm các tính năng tự động mở rộng và cân bằng tải của AWS. Tuy nhiên, bạn có thể thêm bất kỳ dịch vụ và tính năng nào bạn muốn.

Figure 10: Amazon CodeWhisperer assisted script to create a Target Group

Với sự giúp đỡ của CodeWhisperer, bạn đã tạo ra kịch bản này để tạo Target Group cho bộ cân bằng tải của chúng ta. Lưu ý rằng bạn có thể thêm các tài nguyên với những kịch bản này và cũng có thể tách các tài nguyên!

Thực thi kịch bản qua CLI

Khi kịch bản của bạn đã hoàn chỉnh, bạn có thể thực thi nó thông qua AWS CLI. Bạn có thể cấu hình CLI với các bước được tìm thấy trong tài liệu AWS.

Figure 11: Executing the Python script via the AWS CLI

Hãy xem kịch bản được xây dựng với sự giúp đỡ của Amazon CodeWhisperer. Lưu ý rằng đây có thể không phải là một kịch bản hoàn chỉnh cho trường hợp sử dụng của bạn, nhưng đây là một minh họa về cách Amazon CodeWhisperer có thể gia tăng quá trình phát triển của bạn thông qua các đề xuất tự động. Ví dụ, nếu bạn có yêu cầu về giao thông HTTPS, bạn có thể cấu hình điều này trong kịch bản hoặc thông qua các hành động sau triển khai bằng cách sử dụng một Tài liệu SSM như “AWSDocs-Configure-SSL-TLS-AL2”.

import boto3

# Enter your AWS credentials here.
# You can find these credentials in the AWS Management Console.

aws_access_key_id = input(“Enter the aws access key id: “)
aws_secret_access_key = input(“Enter the aws secret access key: “)
region_name = input(“Enter the region name: “)
# Start the session with your AWS credentials
# and the region you want to work with.

session = boto3.Session(aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key, region_name=region_name)

#Enter your Amazon EC2 instance id and subnet id here.
#You can find the instance id and subnet id in the AWS Management Console.

instance_id = input(“Enter the instance id: “)
subnet_id1 = ‘subnet-000000000000000’

subnet_id2 = ‘subnet-000000000000000’
ec2 = boto3.client(“ec2”)
sg_id = ‘sg-04cadfeb375c5a30e’

# Allocate a public IP address for the instance.

eip = ec2.allocate_address(Domain=”vpc”)

ec2.associate_address(InstanceId=instance_id, PublicIp=eip[“PublicIp”])

vpc_id = ec2.describe_instances (InstanceIds=[instance_id])[“Reservations”][0][“Instances”][0][“VpcId”]

#Here, you create a target group for the instance and a load balancer.
#The target group is used to route traffic to the instance.

elbv2 = boto3.client(“elbv2”)

target_group = elbv2.create_target_group(
Name=”target-group111″,
Protocol=”HTTP”,
Port=80,
VpcId=vpc_id,
HealthCheckProtocol=”HTTP”,
HealthCheckPort=”80″,
HealthCheckPath=”/”,
HealthCheckIntervalSeconds=30,
HealthCheckTimeoutSeconds=5,
HealthyThresholdCount=5,
UnhealthyThresholdCount=2,
Matcher={
“HttpCode”: “200”
}
)
response = elbv2.register_targets(
TargetGroupArn=target_group[“TargetGroups”][0][“TargetGroupArn”],
Targets=[
{
“Id”: instance_id
}])
response = elbv2.create_load_balancer(
Name=”load-balancer-xxxxxx”,
Subnets=[subnet_id1,subnet_id2],
SecurityGroups=[sg_id],
Scheme=”internet-facing”,
Tags=[
{
“Key”: “Name”,
“Value”: “load-balancer”
}])
#Lastly, you create a listener for the load balancer.
#The listener is used to route traffic to the target group.

elbv2.create_listener(
LoadBalancerArn=response[“LoadBalancers”][0][“LoadBalancerArn”],
Protocol=”HTTP”,
Port=80,
DefaultActions=[
{
“Type”: “forward”,
“TargetGroupArn”: target_group[“TargetGroups”][0][“TargetGroupArn”]
}])
#You can view the output of your instance using the public IP address provided.
print(f’The public IP address of the instance is {eip[“PublicIp”]}. You may now test the instance.’)

Hoàn tất quá trình chuyển đổi (cutover) trong AWS MGN.

Sau khi quá trình kiểm thử của bạn hoàn tất, bạn có thể quay trở lại giai đoạn “Ready for Testing” của vòng đời AWS MGN hoặc đánh dấu nó là “Ready for Cutover”.

Figure 12: Cutover Traffic or Revert to Ready for Testing in the AWS MGN Service AWS Console

Bước Tiếp Theo – Cập Nhật Định Tuyến DNS bằng Amazon Route 53

Trong Phần 1 của loạt bài này, bạn đã biết về cách sử dụng định tuyến DNS với Amazon Route 53 cho các triển khai blue/green, cho phép chuyển đổi lưu lượng mạng giữa môi trường blue và green khi cần thiết. Điều này bao gồm cập nhật bản ghi alias trong Route 53 để chuyển hướng lưu lượng mạng từ môi trường blue sang môi trường green.

Dọn Dẹp

Để tránh phát sinh bất kỳ chi phí bổ sung nào liên quan đến bài viết này, hãy đảm bảo dọn dẹp các tài nguyên của bạn, bao gồm:

  • Các Instance Amazon EC2
  • Ngắt kết nối các Source Server của AWS MGN
  • Các Elastic IP
  • Các Elastic Load Balancer và Target Group
  • Bất kỳ khối, cơ sở dữ liệu và lưu trữ khác liên quan đến quá trình kiểm thử của bạn

Kết luận

Phần 2 của loạt bài này đã giới thiệu về Kiểm thử Blue/Green với sự hỗ trợ của tự động hóa sử dụng Amazon CodeWhisperer và AWS Systems Manager. Bạn đã xem xét cách sử dụng các Hành động Sau triển khai được xây dựng sẵn và tận dụng tài liệu SSM để tạo ra các hành động sau triển khai tùy chỉnh của riêng bạn.

Bạn cũng đã khám phá công cụ đồng hành mã nguồn mở của Amazon trong CodeWhisperer. Bạn đã thấy cách nó hỗ trợ bạn xây dựng các đoạn mã trong các ngôn ngữ khác nhau để gắn kết và tách rời dịch vụ và tính năng từ tài nguyên của bạn trong AWS để tạo ra một phương pháp kiểm thử có thể lặp lại.

Về tác giả

Dylan Martin

Dylan là Kiến trúc sư giải pháp thuộc nhóm AWS Industries, giúp khách hàng xây dựng và duy trì khối lượng công việc tối ưu trên AWS. Anh ấy có kiến thức chuyên môn về lĩnh vực Phát hiện mối đe dọa và Ứng phó sự cố. Ngoài công việc, anh ấy thích lái xe mô tô, vùng Riviera của Pháp và học ngành cấp cứu.

CV Mohan

Mohan là Kiến trúc sư giải pháp chính tại AWS có trụ sở tại Bắc Virginia. Với nền tảng vững chắc về di chuyển và hiện đại hóa doanh nghiệp quy mô lớn, anh ấy chuyên về Dữ liệu & Phân tích. Mohan đam mê tận dụng các công nghệ mới và tìm thấy niềm vui trong việc hỗ trợ khách hàng điều chỉnh những cải tiến này để đáp ứng nhu cầu kinh doanh riêng của họ.