Siguiendo esta documentación de AWS , pude crear un nuevo punto final en mi API Gateway que puede manipular archivos en un repositorio S3. El problema que tengo es el tamaño del archivo ( AWS tiene una limitación de carga útil de 10 MB ).
Me preguntaba, sin usar una solución lambda ( este enlace ayudaría con eso ), ¿sería posible cargar y obtener archivos de más de 10 MB (incluso como binarios si es necesario) ya que esto está usando un servicio S3 como proxy - o es el límite independientemente?
He intentado PUT ting y GET ting archivos de más de 10 MB, y cada respuesta es un "message": "Timeout waiting for endpoint response" .
Parece que Lambda es la única forma, solo me pregunto si alguien más resolvió esto, usando S3 como proxy.
Gracias
Puede crear una función de proxy de Lambda que devolverá un enlace de redirección con una URL prefirmada de S3.
Ejemplo de código JavaScript que genera una URL de S3 prefirmada:
var s3Params = { Bucket: test-bucket, Key: file_name, ContentType: 'application/octet-stream', Expires: 10000 }; s3.getSignedUrl('putObject', s3Params, function(err, data){ ... }Luego, su función Lambda devuelve una respuesta de redireccionamiento a su cliente, como,
{ "statusCode": 302, "headers": { "Location": "url" } }Es posible que pueda encontrar más información que necesite en esta documentación .
Si tiene archivos grandes, considere cargarlos directamente a S3 desde su cliente. Puede crear un punto final de API para devolver una URL firmada para que el cliente la use para cargar (para implementar el control de acceso) su contenido privado.
También puede considerar el uso de cargas devarias partes para archivos aún más grandes para acelerar la carga.