Ho creato una regola Eventi Amazon CloudWatch (CloudWatch Events) utilizzando modelli AWS CloudFormation (CloudFormation) o l'interfaccia della linea di comando AWS (AWS CLI). Ho provato a richiamare una destinazione AWS Lambda, ma la destinazione non ha richiamato.
Breve descrizione
La regola Eventi CloudWatch creata utilizzando modelli CloudFormation o l'interfaccia della linea di comando AWS (AWS CLI) deve concedere esplicitamente le autorizzazioni alla regola Eventi CloudWatch per richiamare la destinazione Lambda.
Risoluzione
Puoi aggiungere le autorizzazioni delle regole Eventi CloudWatch necessarie per richiamare la tua destinazione Lambda nel modello CloudFormation o nell'interfaccia della linea di comando AWS (AWS CLI).
**Nota:**se ricevi un messaggio di errore durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.
Opzione 1: aggiungere autorizzazioni nel modello CloudFormation
Utilizza la risorsa AWS::Lambda::Permission per aggiungere una dichiarazione di policy alla policy di accesso della tua funzione Lambda.
Importante: nel modello CloudFormation, assicurati di:
- Sostituire myLambdaFunction con il nome logico della funzione Lambda.
- Sostituire myEventRule con il nome logico della regola dell'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: "events.amazonaws.com"
SourceArn:
Fn::GetAtt:
- "EventRule"
- "Arn"
Opzione 2: aggiungere autorizzazioni utilizzando l'interfaccia della linea di comando AWS (AWS CLI)
Al prompt dei comandi, immettere il seguente 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>"
Informazioni correlate
Utilizzo di AWS Lambda con AWS CloudFormation