Creé una regla de Eventos de Amazon CloudWatch (Eventos de CloudWatch) mediante plantillas de AWS CloudFormation (CloudFormation) o la Interfaz de la línea de comandos de AWS (AWS CLI). Intenté invocar un destino de AWS Lambda, pero el destino no se invocó.
Descripción corta
La regla de Eventos de CloudWatch creada mediante plantillas de CloudFormation o AWS CLI debe conceder explícitamente permisos a la regla de Eventos de CloudWatch para invocar el destino de Lambda.
Resolución
Puede agregar los permisos de la regla de Eventos de CloudWatch necesarios para invocar su destino de Lambda en la plantilla de CloudFormation o en AWS CLI.
Nota: Si recibe errores mientras ejecuta los comandos de AWS CLI, asegúrese de que está utilizando la versión más reciente de dicha interfaz.
Opción 1: Agregar permisos en la plantilla de CloudFormation
Utilice el recurso AWS::Lambda::Permission para agregar una declaración de política a la política de acceso de su función de Lambda.
Importante: En la plantilla de CloudFormation, asegúrese de lo siguiente:
- Sustituir MyLambdaFunction por el nombre lógico de la función de Lambda.
- Sustituir MyEventRule por el nombre lógico de la regla de eventos.
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: "events.amazonaws.com"
SourceArn:
Fn::GetAtt:
- "EventRule"
- "Arn"
Opción 2: Agregar permisos mediante AWS CLI
En una ventana del símbolo del sistema, ingrese el siguiente comando.
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>"
Información relacionada
Uso de AWS Lambda con AWS CloudFormation