¿Cómo puedo usar políticas basadas en recursos con AWS Lambda para conceder permisos a los servicios de AWS?

Última actualización: 27-09-2021

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.


¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?