如何为在 Cloudformation 中创建的 Lambda 设置 Cloudwatch 日志
How to setup Cloudwatch log for a Lambda created in Cloudformation
在 Cloudformation 中创建 Lambda 函数后,我希望能够在同一个 Cloudformation 脚本中设置 Cloudwatch 日志过期时间。
例如:
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 不允许 modify/update 为 AWS 保留的日志:"Log groups starting with AWS/ are reserved for AWS."
有解决办法吗?由于无法在 Lambda resource creation 中设置日志名称,也许有一些方法可以在我找不到的角色定义中指定它。
使用 AWS 无服务器应用程序模型,负责部署、角色和日志发件箱,您始终可以添加自定义 cloudformation 代码 https://github.com/awslabs/serverless-application-model
他们已经准备好了很多例子。
不,没有。正如您所写,它是 AWS 拥有的一个日志组,您不能为自己授予比 AWS 允许的更多的角色权限。因此,你不能允许自己修改他们的日志组。
试试这个并使用 RetentionInDays
属性更改日志在 time
后过期
LogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Join ['/', ['/aws/lambda', !Ref MyLambda]]
RetentionInDays: 7 # days
注意:如果日志组名已经存在(如果MyLambda已经存在就会存在),会出现创建LogGroup失败的问题。解决方法是删除并创建堆栈。
在 Cloudformation 中创建 Lambda 函数后,我希望能够在同一个 Cloudformation 脚本中设置 Cloudwatch 日志过期时间。
例如:
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 不允许 modify/update 为 AWS 保留的日志:"Log groups starting with AWS/ are reserved for AWS."
有解决办法吗?由于无法在 Lambda resource creation 中设置日志名称,也许有一些方法可以在我找不到的角色定义中指定它。
使用 AWS 无服务器应用程序模型,负责部署、角色和日志发件箱,您始终可以添加自定义 cloudformation 代码 https://github.com/awslabs/serverless-application-model 他们已经准备好了很多例子。
不,没有。正如您所写,它是 AWS 拥有的一个日志组,您不能为自己授予比 AWS 允许的更多的角色权限。因此,你不能允许自己修改他们的日志组。
试试这个并使用 RetentionInDays
属性更改日志在 time
LogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Join ['/', ['/aws/lambda', !Ref MyLambda]]
RetentionInDays: 7 # days
注意:如果日志组名已经存在(如果MyLambda已经存在就会存在),会出现创建LogGroup失败的问题。解决方法是删除并创建堆栈。