Por que a regra de CloudWatch Events que eu criei usando modelos do CloudFormation ou a CLI da AWS não consegue invocar o AWS Lambda?
Eu criei uma regra do Amazon CloudWatch Events (CloudWatch Events) usando modelos do AWS CloudFormation (CloudFormation) ou a AWS Command Line Interface (AWS CLI). Eu tentei invocar um destino do AWS Lambda, mas o destino não invocou.
Breve descrição
A regra do CloudWatch Events criada usando modelos do CloudFormation ou a CLI da AWS deve conceder explicitamente as permissões da regra do CloudWatch Events para invocar o destino do Lambda.
Resolução
Você pode adicionar as permissões de regra do CloudWatch Events necessárias para invocar seu destino Lambda no modelo do CloudFormation ou na CLI da AWS.
Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.
Opção 1: adicionar permissões no modelo do CloudFormation
Use o recurso AWS::Lambda::Permission para adicionar uma declaração de política à política de acesso da sua função do Lambda.
Importante: no modelo do CloudFormation, certifique-se de:
- Substituir MyLambdaFunction pelo nome lógico da função do Lambda.
- Substituir MyEventRule pelo nome lógico da regra do evento.
JSON
"LambdaInvokePermission": { "Type": "AWS::Lambda::Permission", "Properties": { "FunctionName": { "Fn::GetAtt": [ "MyLambdaFunction", "Arn" ] }, "Action": "lambda:InvokeFunction", "Principal": "events.amazonaws.com", "SourceArn": { "Fn::GetAtt": [ "EventRule", "Arn" ] } } }
YAML
LambdaInvokePermission: Type: AWS::Lambda::Permission Properties: FunctionName: Fn::GetAtt: - MyLambdaFunction - Arn Action: "lambda:InvokeFunction" Principal: "evevnts.amazonaws.com" SourceArn: Fn::GetAtt: - "EventRule" - "Arn"
Opção 2: adicionar permissões usando a AWS CLI
Em um prompt de comando, digite o comando a seguir.
aws lambda add-permission --statement-id "TrustCloudWatchToInvokeMyLambdaFunction" \ --action "lambda:InvokeFunction" \ --principal "events.amazonaws.com" \ --function-name "arn:aws:lambda:<region>:<account-id>:function:<function-name>" \ --source-arn "arn:aws:events:<region>:<account-id>:rule/<rule-name>"
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há 2 anos