Giới thiệu

Chúng ta cùng bắt đầu với một bài toán thực tế. Giả sử, bạn đang đảm nhận vai trò quản lý tài khoản AWS của một công ty. Một ngày nào đó, sếp yêu cầu bạn thống kê chi phí theo từng dự án. Bạn sẽ làm thế nào? Dò lại toàn bộ tài nguyên, chia theo dự án và thống kê bằng excel? Bài viết này sẽ gợi ý cho bạn một giải pháp thông minh hơn cho việc quản lý chi phí theo dự án, theo các bộ phận hoặc theo các môi trường khác nhau.

AWS Resource Tag là gì?

Tags đơn giản là các cặp key-value được định nghĩa bởi người dùng nhằm gán nhãn cho một tài nguyên nào đó. Tags giúp bạn quản lý, tổ chức và theo dõi các tài nguyên AWS của mình một cách hiệu quả.

Ví dụ về tags gắn cho 2 EC2 Instances

Instance IDTag KeyTag Value
i-01234567abcdef89aProjectProjectA
StackTest
i-12345678abcdef90bProjectProjectB
StackProduction

Việc sử dụng Tags có thể mang lại những hiệu quả như sau:

  1. Quản lý tài nguyên dễ dàng: Tags giúp bạn phân loại và tìm kiếm tài nguyên dễ dàng. Bạn có thể gắn thẻ tài nguyên theo dự án, môi trường (development, staging, production), đội ngũ, ứng dụng hoặc bất kỳ tiêu chí nào khác mà bạn chọn.
  2. Quản lý chi phí: Bằng cách gắn thẻ tài nguyên, bạn có thể theo dõi và phân tích chi phí AWS theo các thẻ. Điều này giúp bạn hiểu rõ hơn về việc chi tiêu cho từng dự án, ứng dụng hoặc bộ phận.
  3. Tăng cường bảo mật và tuân thủ: Bạn có thể sử dụng tags để quản lý và kiểm soát quyền truy cập vào tài nguyên. Ví dụ, bạn có thể thiết lập chính sách IAM (Identity and Access Management) để giới hạn quyền truy cập vào các tài nguyên có thẻ cụ thể.
  4. Tự động hóa: Tags có thể được sử dụng để tự động hóa quản lý tài nguyên bằng cách tích hợp với các dịch vụ khác của AWS như AWS Lambda, AWS CloudFormation và AWS Config.

Tuy nhiên cũng cần chú ý rằng, không phải tất cả các dịch vụ của AWS đề hỗ trợ cho phép gắn Tag. Các bạn có thể tham khào thêm thông tin tại đây.

Trong bài viết này, chúng ta sẽ tập trung vào việc sử dụng Tags để quản lý chi phí cho từng dự án.

Gắn Tags cho các tài nguyên đã tồn tại

Khi bắt đầu thực hiện việc quản lý chi phí cho từng dự với Tags, rất có thể các dự án đang chạy và có rất nhiều tài nguyên đã được tạo từ trước. Vậy làm thế nào để chúng ta gán Tags cho các tài nguyên này. AWS Tag Editor giúp chúng ta giải quyết vấn đề một cách hiệu quả bằng cách cho phép tìm kiếm và gán nhãn cho các tài nguyên tại chỗ.

Tag Editor 1

Tag Editor 2

Bắt buộc gắn Tags cho các tài nguyên tạo mới

Có nhiều giải pháp giúp chúng ta bắt buộc việc gắn Tags cho các tài nguyên, hay nói cách khách sẽ từ chối việc tạo tài nguyên mà không được gắn các Tags phù hợp được định nghĩa trước. Một trong số đó là sử dụng: Service control policies (SCPs) nếu bạn sử dụng AWS Organizations

Ví dụ như sau:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyCreateWithoutProjectTag",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "Null": {
                    "aws:RequestTag/Project": "true"
                }
            }
        },
        {
            "Sid": "DenyCreateWithoutValidProjectTagValue",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:RequestTag/Project": [
                        "ProjectA",
                        "ProjectB"
                    ]
                }
            }
        }
    ]
}

Trong ví dụ này, chúng ta tạo ra một policy nhằm từ chối tất cả các yêu cầu tạo mới Instance ec2:RunInstances nếu Tags Project không được khai báo. Ngoài ra, Tags Project chỉ chấp nhận 2 giá trị là ProjectAProjectB

Quản lý chi phí theo Tags

Sau khi đã gán Tags cho tất cả tài nguyên, bạn cần kích hoạt nó tại Billing and Cost Management console. Chú ý rằng, tất cả các Tags cần khoảng 24 giờ để xuất hiện tại Billing and Cost Management console.

Activated user define tags

Và sau đó bạn có thể theo dõi chi phí theo từng Tags trong màn Cost Explorer

Filter Cost by tags

Kết luận

AWS Resource Tags là một công cụ đơn giản nhưng sẽ tương đối hiệu quả giúp bạn quản lý và tổ chức các tài nguyên trên AWS một cách khoa học hơn.