在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中设置日志名称,可能有一些方法可以在我无法找到的角色定义中指定它。
答案 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允许的更多权限。因此,您无法修改其日志组。