{"id":17651755,"url":"https://github.com/diegovictor/storage-gateway","last_synced_at":"2026-03-01T17:32:24.724Z","repository":{"id":41362666,"uuid":"506807196","full_name":"DiegoVictor/storage-gateway","owner":"DiegoVictor","description":"API Gateway Proxy for S3 Bucket Files","archived":false,"fork":false,"pushed_at":"2026-02-24T12:14:56.000Z","size":1268,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-24T17:24:49.443Z","etag":null,"topics":["apigateway","aws","bucket","image","javascript","js","node","nodejs","s3","serverless","serverless-framework","storage","ts","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiegoVictor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-06-23T22:19:13.000Z","updated_at":"2026-02-24T12:15:00.000Z","dependencies_parsed_at":"2024-01-10T20:38:42.544Z","dependency_job_id":"cc4fa52a-4413-4e75-998f-ce61961086c7","html_url":"https://github.com/DiegoVictor/storage-gateway","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DiegoVictor/storage-gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiegoVictor%2Fstorage-gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiegoVictor%2Fstorage-gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiegoVictor%2Fstorage-gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiegoVictor%2Fstorage-gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiegoVictor","download_url":"https://codeload.github.com/DiegoVictor/storage-gateway/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiegoVictor%2Fstorage-gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29976279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T16:35:47.903Z","status":"ssl_error","status_checked_at":"2026-03-01T16:35:44.899Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apigateway","aws","bucket","image","javascript","js","node","nodejs","s3","serverless","serverless-framework","storage","ts","typescript"],"created_at":"2024-10-23T11:43:29.797Z","updated_at":"2026-03-01T17:32:24.680Z","avatar_url":"https://github.com/DiegoVictor.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Storage Gateway\n[![serverless](https://img.shields.io/badge/serverless-3.38.0-FD5750?style=flat-square\u0026logo=serverless)](https://www.serverless.com/)\n[![typescript](https://img.shields.io/badge/typescript-5.4.5-3178c6?style=flat-square\u0026logo=typescript)](https://www.typescriptlang.org/)\n[![MIT License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](https://raw.githubusercontent.com/DiegoVictor/storage-gateway/main/LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\u003cbr\u003e\n[![Run in Insomnia](https://insomnia.rest/images/run.svg)](https://insomnia.rest/run/?label=Storage%20Gateway\u0026uri=https%3A%2F%2Fraw.githubusercontent.com%2FDiegoVictor%2Fstorage-gateway%2Fmain%2FInsomnia_2022-06-19.json)\n\nThis project creates a Api Gateway Rest Api that serves as a proxy for S3, allowing you to download/view S3 files without the necessity of a download feature, in other words, is not necessary a Lambda to be able to download a file, the whole process will be handled by AWS infrastructure.\n\n![Infrastructure Diagram](https://raw.githubusercontent.com/DiegoVictor/storage-gateway/main/Storage%20Gateway.png)\n\n## Table of Contents\n* [Requirements](#requirements)\n* [Installing](#installing)\n  * [Configure](#configure)\n    * [Binary Mime Types](#binary-mime-types)\n* [Usage](#usage)\n  * [Routes](#routes)\n* [References](#references)\n\n# Requirements\n* Node.js ^14.15.0\n* AWS Account \n  * [API Gateway](https://aws.amazon.com/api-gateway/)\n  * [S3](https://aws.amazon.com/s3/)\n\n# Installing\nEasy peasy lemon squeezy:\n```\n$ yarn\n```\nOr:\n```\n$ npm install\n```\n\n## Configure\nIf you need change the bucket name for any reason remember to update the `custom.bucketName` in the `serverless.ts` file.\n\n### Binary Mime Types\nIf necessary more binary types add it in the `StorageGatewayApi.Properties.BinaryMediaTypes` array in the `serverless.ts`.\n\n# Usage\nDeploy the project running the following command:\n```\n$ sls deploy --stage dev\n```\nNow run the `scripts/main.js` script to upload some sample files:\n```\n$ node scripts/main.js\n```\nThen [get the application Rest API URL](https://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/how-to-call-api.html#apigateway-how-to-call-rest-api).\n\n## Routes\n|route|HTTP Method\n|:---|:---:\n|`/images/blown.gif`|GET\n|`/images/programming.jpg`|GET\n|`/images/works.png`|GET\n\nBelow you can see the path structure:\n```\n/{folder}/{filename}\n```\n* `/images` is the name of the folder where the samples were uploaded.\n* The second part (`/blown.gif`, `/programming.jpg` and `/works.png`) is the name of the files.\n\n# References\n* [Tutorial: Create a REST API as an Amazon S3 proxy in API Gateway\nPDF\nRSS](https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiegovictor%2Fstorage-gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiegovictor%2Fstorage-gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiegovictor%2Fstorage-gateway/lists"}