
Compartir:
Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.
Cómo funcionan los permisos en AWS Lambda
Cuando se trabaja con AWS Lambda, muchos usuarios luchan con los permisos que utilizan otros servicios de AWS. Más concretamente, cómo acceder a servicios como S3, RDS, Transcribe u otros.
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Muchos crean un nuevo usuario IAMy establecen AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en variables de entorno. El SDK de AWS utiliza "automáticamente" esas claves o valores de un archivo de credenciales de AWS. (Véase la documentación sobre cómo el SDK utiliza esos valores). Sin embargo, añadir esas credenciales para un Lambda sería un error.
Identidad equivocada
El intento de .env impide que una aplicación acceda a los servicios de AWS desde Lambda. El fallo de conexión es independiente de cómo haya configurado el usuario IAM.
A medida que la función Lambda se despliega, las variables de entorno mostradas anteriormente son generadas por Lambda. Es decir, los valores del fichero .env no se establecen como se esperaba.
Para leer más sobre el despliegue con Serverless, echa un vistazo a AWS Lambda con PHP utilizando Bref y Serverless Framework o Python sin servidor con AWS Lambda.
Establecer permisos
Con las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY establecidas por Lambda, también es necesario establecer los permisos de la función durante la implementación. Todos los servicios de AWS también se gestionan directamente en la función de Lambda en lugar de un usuario de IAM.
A continuación se muestra un ejemplo yaml parcial que utiliza el marco Serverless para implementar una función AWS Lambda.
provider:
name: aws
region: us-east-1
runtime: provided
iamRoleStatements:
- Effect: Allow
Action:
- s3:PutObject
- s3:GetObject
- s3:DeleteObject
Resource: 'arn:aws:s3:::bucket-name/*'
- Effect: Allow
Action: transcribe:*
Resource: '*'Observe el bloque iamRoleStatements del ejemplo anterior. En él, se concede a la lambda s3:PutObject, s3:GetObjecty s3:DeleteObject al recurso bucket-name y a todo lo que contenga. Además, la función tiene acceso a transcribe:* servicios.
El ejemplo anterior es muy similar a cómo se establecen los permisos IAM en los ejemplos siguientes:
AWS IAM S3 Policy Example
AWS IAM Transcribe Policy Example
Examinar los permisos
Tras la implementación correcta en AWS Lambda, los permisos activos de la función se pueden ver en la consola de AWS. Para ello, vaya a la pestaña Permisos de la consola de la función.
AWS Lambda Function Permissions
Desde ahí, puedes hacer clic en los permisos de cada servicio para obtener un desglose más detallado de cómo los has configurado.
¿Qué sigue?
La documentación sobre los posibles permisos para varios servicios de AWS está disponible en la Documentación de AWS Identity and Access Management. Además, esté atento a futuras publicaciones con ejemplos de uso de estos permisos en acción.
