Sử dụng sự kiện CloudFormation để xây dựng các quy trình tùy chỉnh cho quản lý sau khi triển khai

Hàng tuần, có hơn một triệu khách hàng hoạt động sử dụng AWS CloudFormation để quản lý tài nguyên ứng dụng của họ. CloudFormation là một dịch vụ giúp bạn mô hình hóa, triển khai và quản lý các tài nguyên đám mây của bạn bằng cách coi Xây dựng Hạ tầng như Mã (Infrastructure as Code – IaC). Nó có thể đơn giản hóa quản lý hạ tầng, sao chép nhanh chóng môi trường của bạn đến nhiều khu vực AWS khác nhau với một giải pháp duy nhất và cho phép bạn dễ dàng kiểm soát và theo dõi các thay đổi trong hạ tầng của bạn.

Bạn có thể tạo ra các tài nguyên AWS khác nhau bằng cách sử dụng CloudFormation để thiết lập một môi trường cho các khối công việc của bạn. Bạn tiếp tục tương tác và quản lý các tài nguyên đó trong suốt vòng đời của khối công việc để đảm bảo rằng cấu hình tài nguyên phù hợp với các mục tiêu kinh doanh như tuân thủ các tiêu chuẩn an ninh, đáp ứng các mục tiêu đáng tin cậy được yêu cầu và phù hợp với yêu cầu ngân sách. Không khả năng thực hiện việc chuyển giao giữa các hành động triển khai tài nguyên trong CloudFormation và các hành động quản lý tài nguyên trong các dịch vụ AWS và không phải AWS có thể đặt ra một thách thức. Ví dụ, sau khi triển khai tài nguyên, khách hàng có thể cần thực hiện các nhiệm vụ bổ sung để quản lý tài nguyên này như thêm thẻ phân phối chi phí, điền cơ sở dữ liệu hàng tồn kho tài nguyên hoặc kích hoạt các quy trình liên kết.

Mặc dù họ có thể có được việc gom nhóm tài nguyên logic liên quan đến một khối công việc hoặc một thành phần khối công việc với một stack CloudFormation, nhưng ngữ cảnh đó không kéo dài ra ngoài CloudFormation khi họ sử dụng các dịch vụ AWS và không phải AWS khác nhau để thực hiện quản lý tài nguyên sau khi triển khai. Các dịch vụ AWS và không phải AWS này thường cung cấp một cái nhìn về tài nguyên từng cấp độ, hoặc trong một số trường hợp cung cấp cái nhìn tổng hợp cơ bản như hỗ trợ một nhóm thẻ hoặc một trừu tượng cấp độ tài khoản để xem tất cả các tài nguyên trong một tài khoản cụ thể. Đối với một khách hàng sử dụng CloudFormation, khả năng không có ngữ cảnh của một stack ngoài việc triển khai tài nguyên cung cấp một trải nghiệm không liên thông, vì không có việc chuyển giao giữa các hành động triển khai tài nguyên trong CloudFormation và các hành động quản lý tài nguyên trong các dịch vụ AWS và không phải AWS có liên quan khác. Các hành động quản lý khác nhau mà khách hàng thực hiện với tài nguyên khối công việc của họ trong suốt vòng đời của chúng là

Các sự kiện CloudFormation cung cấp một cách mạnh mẽ để theo dõi trạng thái của các tài nguyên cụ thể trong suốt vòng đời của một stack. Bạn có thể gửi các sự kiện CloudFormation đến Amazon EventBridge mỗi khi có hành động tạo, cập nhật hoặc phát hiện sai sót được thực hiện trên stack của bạn. Sau đó, bạn có thể thiết lập các quy trình làm việc bổ sung dựa trên các sự kiện đó từ EventBridge. Ví dụ, bằng cách đánh dấu tài nguyên một cách tự động, bạn có thể tham khảo nhóm thẻ đó khi sử dụng AWS Trusted Advisor và tiếp tục trải nghiệm quản lý tài nguyên của bạn sau khi triển khai. CloudFormation tự động gửi các sự kiện này đến EventBridge để bạn không cần phải làm gì cả. Một trường hợp sử dụng thực tế là sử dụng các sự kiện này để tạo các nhiệm vụ thực thi cho đội của bạn để khắc phục sự cố. Các sự kiện CloudFormation được xuất bản đến EventBridge có thể được sử dụng để tạo các OpsItems trong AWS Systems Manager OpsCenter. OpsItems là các mục công việc được tạo trong OpsCenter để các kỹ sư xem, điều tra và giải quyết các nhiệm vụ/vấn đề. Điều này giúp các nhóm phản hồi và giải quyết bất kỳ vấn đề nào một cách hiệu quả hơn.

Hướng dẫn

Để thiết lập rule EventBridge, hãy vào bảng điều khiển AWS và điều hướng đến EventBridge. Chọn Create Rule để bắt đầu. Nhập Tên, mô tả và chọn Tiếp theo:

Trên màn hình tiếp theo, chọn các sự kiện AWS trong phần Event source.

Sự kiện mẫu này là cho sự kiện CREATE_COMPLETE. Nó chứa nguồn, số tài khoản AWS, khu vực AWS, loại sự kiện, tài nguyên và thông tin chi tiết về sự kiện.

Trên cùng một trang trong phần Event pattern:

Chọn Custom patterns (JSON editor) và nhập mẫu sự kiện sau đây. Điều này sẽ phù hợp với bất kỳ sự kiện nào khi một tài nguyên không thể tạo, cập nhật hoặc xóa. Tìm hiểu thêm về event patterns EventBridge.

JSON

{

    “source”: [

        “aws.cloudformation”

    ],

    “detail-type”: [

        “CloudFormation Resource Status Change”

    ],

    “detail”: {

        “status-details”: {

            “status”: [

                “CREATE_FAILED”,

                “UPDATE_FAILED”,

                “DELETE_FAILED”

            ]

        }

    }

}

Chọn Tiếp theo. Trên màn hình Mục tiêu, chọn Dịch vụ AWS, sau đó chọn System Manager OpsItem làm mục tiêu cho rule này.

Thêm một mục tiêu thứ hai – Một Chủ đề Amazon Simple Notification Service (SNS) – để thông báo cho nhóm quản trị khi có sự cố xảy ra và một OpsItem đã được tạo.

Chọn Tiếp theo và tùy chọn thêm các thẻ.

Chọn tiếp theo để xem lại các lựa chọn và chọn Create Rule.

Bây giờ rule của bạn đã được tạo và mỗi khi có sự cố xảy ra với stack, sẽ có một OpsItem được tạo và một thông báo được gửi cho các nhà điều hành để khắc phục và sửa lỗi. OpsItem chứa dữ liệu vận hành, chẳng hạn như tài nguyên thất bại, nguyên nhân gây ra sự cố, cũng như stack mà nó thuộc về, điều này hữu ích cho việc khắc phục sự cố. Các nhà điều hành có thể thực hiện các hành động thủ công hoặc sử dụng runbooks được mã hóa dưới dạng Tài liệu Quản trị Hệ thống để thực hiện các hành động sửa lỗi. Từ Bảng điều khiển AWS, bạn có thể vào OpsCenter để xem các sự kiện:

Sau khi các vấn đề đã được giải quyết, các nhà điều hành có thể đánh dấu OpsItem đã được giải quyết và thử lại thao tác stack đã thất bại, từ đó giải quyết sự cố một cách nhanh chóng và ngăn chặn sự trùng lặp của công việc.

Hướng dẫn này dành cho Giao diện người dùng Console, nhưng bạn có thể sử dụng Giao diện dòng lệnh AWS (AWS CLI), SDK AWS hoặc thậm chí CloudFormation để thực hiện tất cả điều này. Tham khảo tài liệu AWS CLI để biết thêm thông tin về việc Create Rule EventBridge thông qua CLI. Hơn nữa, tham khảo tài liệu SDK AWS để Create Rule EventBridge thông qua SDK AWS. Bạn có thể sử dụng mẫu CloudFormation sau để triển khai các rule EventBridge ví dụ được sử dụng trong hướng dẫn này:

JSON

{

“Parameters”: {

“SNSTopicARN”: {

“Type”: “String”,

“Description”: “Nhập ARN của Chủ đề SNS nơi bạn muốn gửi thông báo khi xảy ra sự cố stack.”

}

},

“Resources”: {

“CFNEventsRule”: {

“Type”: “AWS::Events::Rule”,

“Properties”: {

“Description”: “rule sự kiện để bắt sự kiện sự cố CloudFormation”,

“EventPattern”: {

“source”: [

“aws.cloudformation”

],

“detail-type”: [

“CloudFormation Resource Status Change”

],

“detail”: {

“status-details”: {

“status”: [

“CREATE_FAILED”,

“UPDATE_FAILED”,

“DELETE_FAILED”

]

}

}

},

“Name”: “cfn-stack-failure-test”,

“State”: “ENABLED”,

“Targets”: [

{

“Arn”: {

“Fn::Sub”: “arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:opsitem”

},

“Id”: “opsitems”,

“RoleArn”: {

“Fn::GetAtt”: [

“TargetInvocationRole”,

“Arn”

]

}

},

{

“Arn”: {

“Ref”: “SNSTopicARN”

},

“Id”: “sns”

}

]

}

},

“TargetInvocationRole”: {

“Type”: “AWS::IAM::Role”,

“Properties”: {

“AssumeRolePolicyDocument”: {

“Version”: “2012-10-17”,

“Statement”: [

{

“Effect”: “Allow”,

“Principal”: {

“Service”: [

“events.amazonaws.com”

]

},

“Action”: [

“sts:AssumeRole”

]

}

]

},

“Path”: “/”,

“Policies”: [

{

“PolicyName”: “createopsitem”,

“PolicyDocument”: {

“Version”: “2012-10-17”,

“Statement”: [

{

“Effect”: “Allow”,

“Action”: [

“ssm:CreateOpsItem”

],

“Resource”: “*”

}

]

}

}

]

}

},

“AllowSNSPublish”: {

“Type”: “AWS::SNS::TopicPolicy”,

“Properties”: {

“PolicyDocument”: {

“Statement”: [

{

“Sid”: “grant-eventbridge-publish”,

“Effect”: “Allow”,

“Principal”: {

“Service”: “events.amazonaws.com”

},

“Action”: [

“sns:Publish”

],

“Resource”: {

“Ref”: “SNSTopicARN”

}

}

]

},

“Topics”: [

{

“Ref”: “SNSTopicARN”

}

]

}

}

}

}

Tóm lại

Việc phản hồi các sự kiện stack CloudFormation trở nên dễ dàng với sự tích hợp giữa CloudFormation và EventBridge. Các sự kiện CloudFormation có thể được sử dụng để thực hiện các hành động sau cấu hình trên tài nguyên công việc. Với sự đa dạng của các mục tiêu có sẵn cho các rule EventBridge, các hành động khác nhau như thêm thẻ và sửa lỗi có thể được thực hiện. Ví dụ trên sử dụng Systems Manager và Amazon SNS nhưng bạn có thể có nhiều mục tiêu khác nhau bao gồm, Amazon API gateway, AWS Lambda, Amazon Elastic Container Service (Amazon ECS) task, dịch vụ Amazon Kinesis, Amazon Redshift, đường ống Amazon SageMaker và nhiều hơn nữa. Các sự kiện này có sẵn miễn phí trên EventBridge.