invalid aws amazon-web-services aws-lambda amazon-iam

amazon-web-services - invalid - aws lambda permissions



AccessDeniedException: el usuario no está autorizado a realizar: lambda: InvokeFunction (4)

Esta solución funcionó para mí:

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

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

    {"Versión": "2012-10-17", "Declaración": [{"Sid": "Stmt1464440182000", "Efecto": "Permitir", "Acción": ["lambda: InvokeAsync", "lambda: InvokeFunction"] ", " lambda: ListFunctions " ]," Recurso ": [" * "]}]}

Intento invocar una función lambda desde el nodo.

var aws = require(''aws-sdk''); var lambda = new aws.Lambda({ accessKeyId: ''id'', secretAccessKey: ''key'', region: ''us-west-2'' }); lambda.invoke({ FunctionName: ''test1'', Payload: JSON.stringify({ key1: ''Arjun'', key2: ''kom'', key3: ''ath'' }) }, function(err, data) { if (err) console.log(err, err.stack); else console.log(data); });

Las claves son para un usuario de IAM. El usuario tiene políticas AWSLambdaExecute y AWSLambdaBasicExecutionRole adjuntas.

Obtengo un error de permiso: AccessDeniedException: User: arn:aws:iam::1221321312:user/cli is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:1221321312:function:test1

Leí los documentos y varios blogs, pero no puedo autorizar a este usuario a invocar la función lambda. ¿Cómo hacer que este usuario invoque lambda?

Gracias.


Lo resolví agregando los permisos de AWSLambdaFullAccess al usuario.

  1. Dentro de los usuarios de IAM, haga clic en agregar permisos
  2. Seleccione "Adjuntar políticas existentes directamente"
  3. Busque AWSLambdaFullAccess , selecciónelo y haga clic en next:review en la parte inferior de la página.
  4. Haga clic en Add Permissions

Y eso debería hacerlo.


vaya a IAM, seleccione el usuario y haga clic en agregar permisos. En la lista de permisos, puede simplemente buscar con todas esas políticas con lambda y marcar las que desee para ejecutar la lambda desde la consola. enter image description here


AWSLambdaExecute y AWSLambdaBasicExecutionRole no proporcionan los permisos que se expresan en el error. Ambas políticas administradas están diseñadas para conectarse a su función Lambda, por lo que se ejecuta 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.

Debes otorgarle a tu usuario de IAM el permiso lambda:InvokeFunction :

  1. Encuentre 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 en línea" y haga clic en el enlace "hacer 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 llamada AWSLambdaRole que puede asignar a su usuario IAM o función IAM. Esto debería darle los permisos que necesita.