Trong các bài blog trước, chúng ta đã tìm hiểu về cách AWS Service Catalog AppRegistry giúp nhóm các ứng dụng và tài nguyên ứng dụng trong một môi trường duy nhất. Bạn có thể định danh các ứng dụng trong AppRegistry bằng cách cung cấp tên, mô tả, liên kết với AWS CloudFormation stacks và dữ liệu ứng dụng.
Khách hàng thường triển khai các ứng dụng bằng CloudFormation trên nhiều tài khoản AWS. Sử dụng nhiều tài khoản trong môi trường AWS là một phương pháp tiên tiến để bảo mật, phân quyền truy cập và thanh toán cho các tài nguyên. Tuy nhiên, cô lập tài nguyên ở mức tài khoản có thể giới hạn rủi ro cấu hình sai, tuy nhiên cũng có thể gây khó khăn cho việc quản lý các ứng dụng trong một môi trường duy nhất.
Vào ngày 16 tháng 6 năm 2022, chúng tôi đã công bố hỗ trợ cho các nhóm thuộc tính và ứng dụng AppRegistry trên nhiều tài khoản. Điều này cho phép bạn chia sẻ ứng dụng AppRegistry giữa nhiều tài khoản trong tổ chức AWS của bạn, giúp cho các tài khoản nhận liên kết tài nguyên cục bộ với một ứng dụng chung.
Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn cách xem và quản lý một ứng dụng được triển khai trên nhiều tài khoản như một thực thể duy nhất. Điều này được thực hiện bằng cách sử dụng AWS Service Catalog AppRegistry và AWS Resource Access Manager (AWS RAM).
Điều kiện tiên quyết
Sau đây là các điều cần có nhằm để làm theo cùng với giải pháp này:
- Git client được cài đặt trên máy tính cá nhân của bạn
- AWS CLI được cài đặt trên máy tính cá nhân của bạn
- Truy cập vào hai tài khoản AWS mà chúng tôi sẽ gọi là “test” và “prod” trong cùng một tổ chức AWS
- AWS RAM được kích hoạt trong tài khoản quản lý tổ chức AWS
Tổng quan về giải pháp
Sử dụng CloudFormation, chúng tôi đã triển khai phiên bản test và production của một ứng dụng web cơ bản cho hai tài khoản AWS riêng biệt. Ứng dụng web sẽ sử dụng Amazon API Gateway và AWS Lambda để hiển thị trang web trả về địa chỉ IP của khách hàng. Mẫu CloudFormation sẽ tạo ra một ứng dụng AppRegistry duy nhất trong tài khoản test và chia sẻ nó với tài khoản production bằng AWS RAM. Cuối cùng, các nhóm thuộc tính AppRegistry sẽ được tạo trong từng tài khoản AWS với thông tin hữu ích dành riêng cho mỗi ứng dụng web. Sau khi triển khai giải pháp cho cả hai tài khoản, chúng tôi sẽ có một ứng dụng AppRegistry duy nhất, nhóm các tài nguyên và dữ liệu của nhiều ứng dụng web với nhau.

Hình 1 – Thiết kế giải pháp
Các bước triển khai
- Sao chép kho lưu trữ GitHub vào máy trạm cục bộ của bạn.
- Thay đổi thư mục thư mục làm việc của bạn thành kho lưu trữ mà bạn đã sao chép.
cd aws-appregistry-ram
- Sử dụng trình chỉnh sửa yêu thích của bạn, chỉnh sửa tệp có tên test-acct-params.json và cập nhật ParameterValue cho TestAccountID và ProdAccountID. Các tham số khác nên giữ nguyên.
[
{
“ParameterKey”:”apiGatewayStageName”,
“ParameterValue”:”test”
},
{
“ParameterKey”:”TestAccountID”,
“ParameterValue”:”<input_your_test_account_id>”
},
{
“ParameterKey”:”ProdAccountID”,
“ParameterValue”:”<input_your_prod_account_id>”
},
{
“ParameterKey”: “IsTestAccountFlag”,
“ParameterValue”: “Yes”
}
]
- Tiếp theo, đưa ra lệnh AWS CLI với thông tin xác thực được xác thực cho tài khoản AWS test của bạn để triển khai test web stack.
Bash
aws cloudformation create-stack \
–stack-name appreg-app-test \
–template-body file://template.yaml \
–capabilities CAPABILITY_IAM \
–parameters file://test-acct-params.json
Output sẽ giống như sau:
{
“StackId”: “arn:aws:cloudformation:us-east-1:111111111111:stack/appreg-app-test/76d7acd0-427b-11ed-aef7-0e59547d11e5”
}
- Sử dụng trình chỉnh sửa yêu thích của bạn, chỉnh sửa tệp có tên prod-acct-params.json và cập nhật ParameterValue cho TestAccountID và ProdAccountID. Các tham số khác nên giữ nguyên.
[
{
“ParameterKey”:”apiGatewayStageName”,
“ParameterValue”:”prod”
},
{
“ParameterKey”:”TestAccountID”,
“ParameterValue”:”<input_your_test_account_id>”
},
{
“ParameterKey”: “ProdAccountID”,
“ParameterValue”: “<input_your_prod_account_id>”
},
{
“ParameterKey”: “IsTestAccountFlag”,
“ParameterValue”: “No”
}
]
- Tiếp theo, hãy đưa ra lệnh AWS CLI bên dưới với thông tin xác thực được xác thực cho tài khoản AWS prod của bạn để triển khai prod web stack:
Bash
aws cloudformation create-stack \
–stack-name appreg-app-prod \
–template-body file://template.yaml \
–capabilities CAPABILITY_IAM \
–parameters file://prod-acct-params.json
Output của anh ta sẽ giống như sau:
{
“StackId”: “arn:aws:cloudformation:us-east-1:111111111111:stack/appreg-app-prod/300671a0-427c-11ed-8f08-120ed9d998f7”
}
Bây giờ, hãy xem cách AppRegistry cung cấp cho chúng ta một cái nhìn đặc biệt về cấu hình ứng dụng nhiều tài khoản này.
Hãy xem ứng dụng AppRegistry được tạo ra bởi bài viết này
- Mở bảng điều khiển AWS Service Catalog trong tài khoản test.
- Trong ngăn điều hướng, bên dưới AppRegistry, chọn Applications.
- Trong bảng ứng dụng, chọn ứng dụng có tên “AppRegistrySampleApp”.

Hình 2 – Các ứng dụng AppRegistry
- Bạn sẽ thấy thông tin chi tiết cho ứng dụng AppRegistry, bao gồm hai tab có tiêu đề “Resource collections” và “Attribute groups”. Hãy khám phá lần lượt từng thứ trong số đó. Để kiểm tra thông tin thu thập tài nguyên trên cả hai tài khoản AWS, hãy chọn tab Resource collections. Tab Resource collections hiển thị hai stack CloudFormation đã được triển khai cho hai tài khoản AWS khác nhau.

Hình 3 – AppRegistry Resource collections
- Để kiểm tra thông tin nhóm thuộc tính trên cả hai tài khoản AWS, hãy chọn tab Attribute groups. Bạn sẽ có thể xem các nhóm thuộc tính được liên kết với mỗi stack

Hình 4 – AppRegistry Attribute groups
- Bây giờ hãy chọn một trong các nhóm thuộc tính để kiểm tra tài liệu JSON được liên kết. Nó cung cấp siêu dữ liệu hữu ích về web stack, bao gồm URL cho ứng dụng web mẫu của chúng tôi. Sao chép và dán URL vào trình duyệt của bạn để truy xuất địa chỉ client IP của bạn.
Cleanup
Giải pháp được triển khai như một phần của bài đăng này là dành cho mục đích trình diễn và sẽ phát sinh chi phí. Bạn có thể xóa stack CloudFormation trong tài khoản AWS test và prod mà bạn đã tạo trong phần các bước triển khai.
- Đưa ra lệnh AWS CLI bên dưới với thông tin xác thực được xác thực cho tài khoản AWS prod của bạn để xóa phiên bản prod của ứng dụng web mẫu.
Bash
aws cloudformation delete-stack –stack-name appreg-app-prod
- Tiếp theo, đưa ra lệnh AWS CLI bên dưới với thông tin xác thực được xác thực cho tài khoản AWS test của bạn để xóa phiên bản test của ứng dụng web mẫu.
Bash
aws cloudformation delete-stack –stack-name appreg-app-test
Kết luận
Bài viết này sẽ hướng dẫn bạn cách tạo một ứng dụng AppRegistry bằng cách sử dụng CloudFormation trên hai tài khoản AWS khác nhau. Nó cũng sẽ cho bạn biết cách kết nối dữ liệu siêu thông minh dưới dạng các nhóm thuộc tính. Khách hàng có thể dễ dàng mở rộng giải pháp này bằng cách bổ sung thêm tài khoản và tùy chỉnh cấu trúc siêu dữ liệu của nhóm thuộc tính để phù hợp với nhu cầu kinh doanh của họ.
Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.