11

Có cách nào để chỉ định nhóm nhật ký CloudWatch mà nhật ký AWS lambda ghi vào không? Nó dường như được tạo ra trực tiếp từ tên lambda; tuy nhiên, nó sẽ đặc biệt thuận tiện, ví dụ, tổng hợp nhiều lambdas cho một nhóm log duy nhất. Chúng tôi đặc biệt quan tâm đến việc chỉ định nhóm nhật ký khi lambda được tạo bởi mẫu CloudFormation.Chỉ định nhóm nhật ký cho một lambda AWS?

Trả lời

10

Tôi không nghĩ điều đó là có thể.

Thậm chí nếu nó có thể, mỗi phiên bản AWS Lambda vẫn sẽ ghi vào luồng nhật ký của riêng mình. Và mặc dù các invocations khác nhau của cùng một lambda có thể ghi vào cùng một log-stream (khi cá thể lambda được tái sử dụng), điều này chắc chắn sẽ không phải là trường hợp cho các lambdas khác nhau (vì chúng phải sử dụng các cá thể lambda khác nhau).

Kết quả là bạn phải có một công cụ tổng hợp nhiều luồng đăng nhập. Nếu vậy, có vấn đề gì với việc làm cho nó chung chung hơn một chút, để nó có thể tổng hợp các luồng đăng nhập từ các nhóm nhật ký khác nhau?

+2

Bạn đã chính xác. Tôi đã yêu cầu AWS hỗ trợ cho cùng một điều và được cho biết rằng điều đó là không thể và có lẽ sẽ không bao giờ có thể. Tuy nhiên, lý do nhiều trường hợp của một hàm Lambda không đăng nhập vào cùng luồng nhật ký là vì có [giới hạn 5 yêu cầu/giây/luồng nhật ký] (https://docs.aws.amazon.com/AmazonCloudWatch/latest /logs/cloudwatch_limits_cwl.html). Vì vậy, ngay cả khi bạn cố gắng ghi thủ công vào một luồng đăng nhập duy nhất từ ​​nhiều phiên bản Lambda, bạn sẽ sớm chạy vào giới hạn đó. – idbehold

11

Thực ra, có thể ít nhất bạn cũng có thể. Tôi cũng đang tìm kiếm câu trả lời và đã thử. Đây là một đoạn của hai tài nguyên; hàm lambda và nhóm nhật ký:

"MyLambdaFunction": { 
    "Type": "AWS::Lambda::Function", 
    "DependsOn": "ReadWriteRole", 
    "Properties": { 
     //snip 
    } 
}, 

"MyLambdaFunctionLogGroup": { 
    "Type": "AWS::Logs::LogGroup", 
    "DependsOn": "MyLambdaFunction", 
    "Properties": { 
     "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]}, 
     "RetentionInDays": 14 
    } 
}, 

Tôi nhận thấy nhóm nhật ký được tạo với thời gian lưu giữ là 14 ngày như được chỉ định. Khi hàm lambda chạy, nó tạo luồng nhật ký trong nhóm này. Tuy nhiên, khi tôi xóa ngăn xếp, có vẻ như các nhóm nhật ký là không bị xóa và giờ lưu giữ được đặt thành không bao giờ hết hạn. Có lẽ điều đó đủ tốt để các luồng không bị mất quá nhiều ...

+1

giải pháp tốt để đặt hết hạn nhật ký! –

+1

Tôi đã rất lạc quan về câu trả lời này nhưng chạy vào vấn đề của LogGroup thất bại vì LogGroupName đã tồn tại – Purefan

+0

@Purefan Nó có thể đã tồn tại, và do đó không thể được tạo ra một lần nữa. –

2

Tạo nhóm nhật ký được đề cập đến như một trong các câu trả lời hoạt động. Để giữ chính sách lưu giữ sau khi ngăn xếp bị xóa, chỉ cần thêm một DeletionPolicy.

"MyLambdaFunctionLogGroup": { 
    "Type": "AWS::Logs::LogGroup", 
    "DependsOn": "MyLambdaFunction", 
    "DeletionPolicy": "Retain", 
    "Properties": { 
    "LogGroupName": {"Fn::Join": ["", ["/aws/lambda/", {"Ref": "MyLambdaFunction"}]]}, 
    "RetentionInDays": 14 
    } 
} 
0

Thú vị. . . khi tôi thử điều này, nhóm nhật ký được tạo nhưng không có luồng nào được ghi vào đó. Lambda của tôi tiếp tục ghi vào luồng nhật ký mặc định. . . quyền của Lambda sẽ cho phép truy cập vào nhóm mới.

Các vấn đề liên quan