如何添加 cloudwatch 权限以在 serverless.yml 中调用 lambda?
How can I add cloudwatch permission to invoke lambda in serverless.yml?
我正在使用无服务器部署一个 lambda,我想从 cloudwatch 事件中调用这个 lambda。下面是我的配置。只要创建了新的日志组,就会调用 lambda。但是我在 lambda 上遇到错误,它需要授予 cloudwatch 权限才能调用 lambda。如何在 serverless.yml 中添加该权限?
logGroupListener:
handler: src/index.handler
name: ${self:provider.stackName}-cloudWatch-listener
environment:
DEST_ARN: "arn:aws:lambda:${self:provider.region}:${self:provider.accountId}:function:${self:provider.stackName}-cloudwatch-listener"
events:
- cloudwatchEvent:
event:
source:
- 'aws.logs'
detail-type:
- 'AWS API Call via CloudTrail'
detail:
eventSource:
- logs.amazonaws.com
eventName:
- CreateLogGroup
我知道我可以通过 运行 这个命令添加:
aws lambda add-permission --function-name $AGGREGATOR_NAME \
--statement-id $ID --action lambda:InvokeFunction \
--principal logs.ap-southeast-2.amazonaws.com
我知道如何在 serverless.yml 中创建 IAM 角色,但我不知道如何将角色附加到 cloudwatch。
请按以下方式尝试:
provider:
...
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:InvokeAsync
Resource: "arn:aws:logs:<region>:<accountId>:log-group:<Log group>:*"
我正在使用无服务器部署一个 lambda,我想从 cloudwatch 事件中调用这个 lambda。下面是我的配置。只要创建了新的日志组,就会调用 lambda。但是我在 lambda 上遇到错误,它需要授予 cloudwatch 权限才能调用 lambda。如何在 serverless.yml 中添加该权限?
logGroupListener:
handler: src/index.handler
name: ${self:provider.stackName}-cloudWatch-listener
environment:
DEST_ARN: "arn:aws:lambda:${self:provider.region}:${self:provider.accountId}:function:${self:provider.stackName}-cloudwatch-listener"
events:
- cloudwatchEvent:
event:
source:
- 'aws.logs'
detail-type:
- 'AWS API Call via CloudTrail'
detail:
eventSource:
- logs.amazonaws.com
eventName:
- CreateLogGroup
我知道我可以通过 运行 这个命令添加:
aws lambda add-permission --function-name $AGGREGATOR_NAME \
--statement-id $ID --action lambda:InvokeFunction \
--principal logs.ap-southeast-2.amazonaws.com
我知道如何在 serverless.yml 中创建 IAM 角色,但我不知道如何将角色附加到 cloudwatch。
请按以下方式尝试:
provider:
...
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:InvokeAsync
Resource: "arn:aws:logs:<region>:<accountId>:log-group:<Log group>:*"