{"id":17464503,"url":"https://github.com/overbryd/s3_wait","last_synced_at":"2025-06-29T18:03:09.750Z","repository":{"id":66704093,"uuid":"88027352","full_name":"Overbryd/s3_wait","owner":"Overbryd","description":"Wait for S3 keys, then issue a redirect to a presigned url if they exist","archived":false,"fork":false,"pushed_at":"2017-04-12T08:37:36.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-28T07:27:27.704Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Overbryd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2017-04-12T08:18:48.000Z","updated_at":"2017-04-12T08:19:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"15559192-d8a7-412b-9ece-c88bd8e7e7d6","html_url":"https://github.com/Overbryd/s3_wait","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Overbryd/s3_wait","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overbryd%2Fs3_wait","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overbryd%2Fs3_wait/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overbryd%2Fs3_wait/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overbryd%2Fs3_wait/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Overbryd","download_url":"https://codeload.github.com/Overbryd/s3_wait/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Overbryd%2Fs3_wait/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262642965,"owners_count":23341816,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-18T10:46:04.345Z","updated_at":"2025-06-29T18:03:09.688Z","avatar_url":"https://github.com/Overbryd.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# s3_wait\n\nWait for S3 keys, then issue a redirect to a presigned url if they exist.\n\n![](https://cdn.shutterstock.com/shutterstock/videos/955447/thumb/1.jpg?i10c=img.resize(height:160))\n\n## Pattern\n\nIn your application you create S3 objects in the **background** instead of the request-cycle.\nA request triggers a **background job** and issues an S3 URL pointed to **s3_wait**.\n\n**s3_wait** will then take the request, and wait until the S3 object becomes available.\nGranted things go allright, **s3_wait** will eventually issue a redirect to the S3 object.\n\nIn addition to that, it will respect max redirect and response wait timeout settings of common browsers.\n\nIf the max redirect setting is reached, it will eventually respond with **504 Gateway Timeout**.\n\n## Usage\n\n    $ ruby server.rb\n\n#### Settings available as environment variables\n\n    AWS_ACCESS_KEY_ID=\n    AWS_SECRET_ACCESS_KEY=\n    AWS_S3_BUCKET=\n    MAX_REDIRECTS=10\n    WAIT_TIMEOUT=30\n    PATH_PATTERN=.*\n\n#### Endpoints\n\n    GET /healthcheck  Healthcheck endpoint\n    GET /*            the key to the S3 Object\n\n## Implementation details\n\nThe server is designed to serve multiple requests at once, leveraging Celluiods actor pattern.\nWaiting for S3 keys happens in the background.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverbryd%2Fs3_wait","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foverbryd%2Fs3_wait","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foverbryd%2Fs3_wait/lists"}