Saltar al contenido

AccessDeniedException: el usuario no está autorizado para realizar: lambda: InvokeFunction

Solución:

los AWSLambdaExecute y AWSLambdaBasicExecutionRole no proporcione los permisos que se expresan en el error. Ambas políticas administradas están diseñadas para adjuntarse a su propia función Lambda, por lo que corre con estas políticas.

El error es decir que el usuario bajo el cual se ejecuta el programa nodejs no tiene derechos para iniciar la función Lambda.

Debe darle a su usuario de IAM la lambda:InvokeFunction permiso:

  1. Busque su usuario en la Consola de administración de IAM y haga clic en él.
  2. En la pestaña “Permisos”, expanda la sección “Políticas integradas” y haga clic en el enlace “haga clic aquí” para agregar una política “.
  3. Seleccione una “Política personalizada”.
  4. Dale un nombre a tu póliza. Puede ser cualquier cosa.
  5. Coloque esta política en el campo Documento de política.

Política de muestra:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1464440182000",
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeAsync",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

En esta política, he incluido ambos métodos para invocar métodos lambda.

Actualizar:

Ahora también hay una política administrada de IAM denominada AWSLambdaRole que puede asignar a su usuario de IAM o rol de IAM. Esto debería darle los permisos que necesita.

Estoy usando el marco sin servidor, y también tuve que agregar arn:aws:lambda como recurso en mi serverless.yml para usar lambda.invoke.

 iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
        - lambda:InvokeFunction # Added this like mentioned above
      Resource:
        - arn:aws:dynamodb:us-east-1:*:*
        - arn:aws:lambda:us-east-1:*:* # Had to add this too

Esta solución funcionó para mí:

  1. Adjuntando AWSKeyManagementServicePowerUser política de la lista de políticas (sin eso, recibí un error en “iam: listRole”)

  2. Añadiendo lambda: ListFunctions a la política personalizada definida por @Matt Houser

    {“Versión”: “2012-10-17”, “Declaración”: [
    {
    “Sid”: “Stmt1464440182000”,
    “Effect”: “Allow”,
    “Action”: [
    “lambda:InvokeAsync”,
    “lambda:InvokeFunction”,
    “lambda:ListFunctions”
    ], “Recurso”: [
    “*”
    ]
    }]}

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *