How to set CloudWatch logs retention policy for Lambda in AWS Serverless Application Model (SAM)?

0

Hi,

I am using the AWS Serverless Application Model (SAM) to create an API consisting of an API gateway and a lambda function. By default, my lambda function is attached with an AWS managed policy to send logs to CloudWatch with no expiry date. How can I perform the following:

  1. Replace the AWS managed policy with my own customer managed policy on sending logs to CloudWatch?
  2. Implement a log retention policy of 30 days?

I noticed that AWS SAM comes with some policy templates that I can use but I did not find how I can answer my two questions. https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html

Thanks.

1 Antwort
2
Akzeptierte Antwort

Hi, @learning

You can simply create a LogGroup with the function name as shown below. Then you can set the log retention freely.

Resources:
  TestFunc:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: test-func
      CodeUri: src/handlers/test_func
      Handler: index.handler
      Runtime: python3.6
      AutoPublishAlias: live
      Timeout: 10
      MemorySize: 128
      
  TestFuncLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: !Sub /aws/lambda/${TestFunc}
      RetentionInDays: 14

https://dev.classmethod.jp/articles/should-create-cloudwatch-logs-log-group-when-creating-lambda-with-aws-sam/

profile picture
EXPERTE
iwasa
beantwortet vor 2 Jahren
profile picture
EXPERTE
überprüft vor 5 Monaten
  • Hi @iwasa, this worked like a charm! I knew it was something like this though I had to fix my indentation to get it working properly. Thanks!

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen