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

时间:2018-05-17 01:24:41

标签: amazon-web-services amazon-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 ]

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

有解决方法吗?由于无法在Lambda resource creation中设置日志名称,可能有一些方法可以在我无法找到的角色定义中指定它。

3 个答案:

答案 0 :(得分:3)

尝试此操作,并使用RetentionInDays属性更改日志在时间后过期

LogGroup:
  Type: AWS::Logs::LogGroup
  Properties:
    LogGroupName: !Join ['/', ['/aws/lambda', !Ref MyLambda]]
    RetentionInDays: 7 # days

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

答案 1 :(得分:0)

使用AWS无服务器应用程序模型,负责部署,角色和日志发件箱,您始终可以添加自定义云信息代码https://github.com/awslabs/serverless-application-model 他们已经准备好了很多例子。

答案 2 :(得分:0)

不,没有。正如您所写,它是AWS拥有的日志组,您无法在角色中为自己提供比AWS允许的更多权限。因此,您无法修改其日志组。