Tengo una función Lambda escrita en Java I y quiero que acceda a S3 (putObject).
No quiero usar ni almacenar credenciales en mi función Lambda para acceder a S3. En su lugar, me gustaría usar roles de IAM.
¿Cómo puedo codificar un cliente AWS S3 dentro de mi código java (que sería ejecutado por Lambda) que no necesitará ninguna credencial y asumir que Lambda tiene el rol apropiado?
No necesita almacenar credenciales en sus funciones lambda. Todas las funciones se ejecutan con un rol: el rol que estableció cuando creó la función. Dado que la función lambda tiene una función, puede agregar o eliminar permisos de esta función según sea necesario, sin cambiar la función en sí.
Administrar permisos: uso de un rol de IAM (rol de ejecución)
Cada función de Lambda tiene un rol de IAM (rol de ejecución) asociado. Especifique el rol de IAM cuando cree su función de Lambda . Los permisos que otorga a este rol determinan qué puede hacer AWS Lambda cuando asume el rol. Hay dos tipos de permisos que otorga al rol de IAM:
Si su código de función de Lambda accede a otros recursos de AWS, como leer un objeto de un depósito de S3 o escribir registros en CloudWatch Logs, debe otorgar permisos para las acciones relevantes de Amazon S3 y CloudWatch para el rol. Si el origen del evento está basado en flujos (Amazon Kinesis Streams y DynamoDB streams), AWS Lambda sondea estos flujos en su nombre. AWS Lambda necesita permisos para sondear la transmisión y leer nuevos registros en la transmisión, por lo que debe otorgar los permisos pertinentes a este rol.
http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html