#amazon-web-services #aws-lambda #serverless-framework
#amazon-web-services #aws-lambda #serverless-framework
Вопрос:
Я использую serverless для развертывания lambda, и я хотел бы вызвать эту лямбду из события cloudwatch. Ниже приведена моя конфигурация. Лямбда-выражение должно вызываться всякий раз, когда создается новая группа журналов. Но я получил сообщение об ошибке в лямбде, что для вызова лямбды необходимо предоставить разрешение cloudwatch. Как я могу добавить это разрешение в 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
Я знаю, как создать роль IAM в serverless.yml, но я не знаю, как прикрепить эту роль к cloudwatch.
Комментарии:
1. serverless.com/framework/docs/providers/aws/guide/iam — эта документация предоставляет эту информацию
2. Я знаю, как создать роль. Но я не знаю, как подключить его к cloudwatch.
Ответ №1:
Пожалуйста, попробуйте сделать это следующим образом:
provider:
...
iamRoleStatements:
- Effect: Allow
Action:
- lambda:InvokeFunction
- lambda:InvokeAsync
Resource: "arn:aws:logs:<region>:<accountId>:log-group:<Log group>:*"