This resource sets log retention time for already existing CloudWatch log groups.
Note: CloudFormation provider LogGroup resource which can also set retention policy. You should use lambda-cform-logretention only in case you can not control log group creation directly. An example can be a log group of Lambda function that is used directly in CloudFormation (eg. as a custom resource handler).
lambda-cform-logretention Lambda needs following permissions:
Additionally you may want to add following policies to it’s role:
List of log groups to apply policy to.
This resource type does not expose any attributes.
Note: Custom resource physical ID is set a random string and is maintained between deploys to avoid re-creation. It doesn’t carry any information.
RetentionManagerRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Statement:
-
Action: "sts:AssumeRole"
Effect: "Allow"
Principal:
Service:
- "lambda.amazonaws.com"
ManagedPolicyArns:
- "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
Policies:
-
PolicyName: "AllowManagingRetention"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Action:
- "logs:DeleteRetentionPolicy"
- "logs:PutRetentionPolicy"
Effect: "Allow"
Resource:
- "*"
RetentionManager:
Type: "AWS::Lambda::Function"
Properties:
Runtime: "java8"
Code:
# put your source bucket
S3Bucket: "your-bucket"
S3Key: "lambda-cform-logretention-1.0.29-standalone.jar"
Handler: "pl.wrzasq.lambda.cform.logretention.Handler::handle"
MemorySize: 256
Description: "AWS CloudWatch Logs retention deployment."
Timeout: 300
TracingConfig:
Mode: "Active"
Role: !GetAtt "RetentionManagerRole.Arn"
ShortRetention:
Type: "AWS::CloudFormation::CustomResource"
Properties:
# reference to deploy function
ServiceToken: !GetAtt "RetentionManager.Arn"
retentionDays: 7
logGroups:
- "/aws/lambda/yourlambda-1"
- "/aws/lambda/yourlambda-2"
LongRetention:
Type: "AWS::CloudFormation::CustomResource"
Properties:
# reference to deploy function
ServiceToken: !GetAtt "RetentionManager.Arn"
retentionDays: 30
logGroups:
- "/aws/codebuild/BuildProject-123"