如何为在Cloudformation中创建的Lambda设置Cloudwatch日志

Efr*_*ren 4 amazon-web-services aws-cloudformation amazon-cloudwatchlogs

在Cloudformation中创建Lambda函数之后,我希望能够在同一Cloudformation脚本中设置Cloudwatch Logs到期。

例如:

MyLambdaRole:
  Type: AWS::Iam::Role
    ...
    Properties:
      ...
      Policies:
        -
          PolicyName: "myPolicy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              -
                Effect: "Allow"
                Action:
                  - "logs:CreateLogGroup"
                  - "logs:CreateLogStream"
                  - "logs:PutLogEvents"
                Resource: "arn:aws:logs:*:*:*"

MyLambda:
  Type: AWS::Lambda::Function
  Properties:
    ...
    Role: !GetAtt [ MyLambdaRole, Arn ]
Run Code Online (Sandbox Code Playgroud)

但是,CloudFormation不允许修改/更新为AWS保留的日志:“以AWS /开头的日志组为AWS保留。”

有没有解决方法?由于无法在Lambda资源创建中设置日志名称,因此也许有某种方法可以在我找不到的角色定义中进行指定。

rox*_*xxy 5

尝试使用此RetentionInDays属性并使用属性更改日志,该日志将在时间到期后

LogGroup:
  Type: AWS::Logs::LogGroup
  Properties:
    LogGroupName: !Join ['/', ['/aws/lambda', !Ref MyLambda]]
    RetentionInDays: 7 # days
Run Code Online (Sandbox Code Playgroud)

注意:如果日志组名称已经存在,将出现LogGroup创建失败的问题(如果MyLambda已经存在,则将存在)。解决方法是删除并创建堆栈。