Quiero usar políticas basadas en recursos para AWS Lambda para conceder permisos a los servicios de AWS.
Descripción breve
Puede utilizar AWS Command Line Interface (AWS CLI) con Lambda para conceder permisos a los servicios de AWS mediante políticas basadas en recursos. Para obtener más información, consulte Uso de políticas basadas en recursos para AWS Lambda.
Resolución
En el ejemplo siguiente se agrega un permiso para EventBridge y se valida que la función Lambda invoque la política basada en recursos.
Nota:
Confirmar que la función Lambda no tenga configurada una política de recursos
Algunos servicios de AWS, como EventBridge, crean una política basada en recursos para la función Lambda. Compruebe que la política basada en recursos no tenga permiso para EventBridge con el comando get-policy de AWS CLI, similar al siguiente:
aws lambda get-policy --region your-region --function-name your-function
An error occurred (ResourceNotFoundException) when calling the GetPolicy operation: The resource you requested does not exist.
Este error confirma que la función Lambda no tenga configurada una política basada en recursos.
Agregue permisos para EventBridge
Ejecute el comando add-permission de AWS CLI para invocar la función Lambda de forma similar a la siguiente:
aws lambda add-permission --region your-region --function-name your-function --statement-id "your-event-permission" --action "lambda:InvokeFunction" --principal "events.amazonaws.com" --source-arn "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
{
"Statement": "{\"Sid\":\"your-event-permission\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event\"}}}"
}
Verificar los permisos de la política basada en recursos de la función Lambda
Vuelva a ejecutar el comando get-policy de AWS CLI de forma similar a la siguiente:
aws lambda get-policy --region your-region --function-name your-function
{
"Version": "2012-10-17",
"Id": "default",
"Statement": [
{
"Sid": "your-event-permission",
"Effect": "Allow",
"Principal": {
"Service": "events.amazonaws.com"
},
"Action": "lambda:InvokeFunction",
"Resource": "arn:aws:lambda:your-region:xxxxxxxxxxxxx:function:your-function",
"Condition": {
"ArnLike": {
"AWS:SourceArn": "arn:aws:events:your-region:xxxxxxxxxxxxx:rule/your-event"
}
}
}
]
}
(Opcional) Quitar el permiso de una política basada en recursos de función Lambda
Si ya no necesita un servicio de AWS para desencadenar la función Lambda, puede ejecutar el comando remove-permission de AWS CLI de forma similar a la siguiente:
aws lambda remove-permission --region your-region --function-name your-function --statement-id "your-event-permission"
Nota: la cuota de políticas basadas en recursos de la función Lambda es de 20 KB. Para obtener más información, consulte Cuotas de Lambda.
Información relacionada
¿Cómo resuelvo el error de Lambda "El tamaño de la política final es más grande que el límite"?