{"id":22352285,"url":"https://github.com/mariusz96/aws-files","last_synced_at":"2025-03-26T12:11:24.230Z","repository":{"id":266053733,"uuid":"897229882","full_name":"mariusz96/aws-files","owner":"mariusz96","description":"A serverless API in C# and AWS","archived":false,"fork":false,"pushed_at":"2024-12-17T06:56:22.000Z","size":1261,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-31T13:15:57.611Z","etag":null,"topics":["aws","aws-dynamodb","aws-lambda","aws-s3","csharp","serverless"],"latest_commit_sha":null,"homepage":"","language":"C#","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/mariusz96.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":"2024-12-02T09:15:10.000Z","updated_at":"2024-12-17T20:25:30.000Z","dependencies_parsed_at":"2024-12-17T07:49:10.692Z","dependency_job_id":"dbd76e5d-3be0-4811-8a6c-3b25fc429828","html_url":"https://github.com/mariusz96/aws-files","commit_stats":null,"previous_names":["mariusz96/aws-files"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariusz96%2Faws-files","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariusz96%2Faws-files/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariusz96%2Faws-files/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mariusz96%2Faws-files/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mariusz96","download_url":"https://codeload.github.com/mariusz96/aws-files/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245650496,"owners_count":20650105,"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":["aws","aws-dynamodb","aws-lambda","aws-s3","csharp","serverless"],"created_at":"2024-12-04T12:18:01.038Z","updated_at":"2025-03-26T12:11:24.202Z","avatar_url":"https://github.com/mariusz96.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AWS Files\nA serverless API in C# and AWS:\n```JavaScript\nInvoke GetUploadUrl\n{\n    \"Name\": \"photo.jpg\"\n}\n```\n```JavaScript\n{\n    \"Id\": \"a3ccf8ac-fed4-458c-a0b3-9d552f634403\",\n    \"Url\": \"https://mariusz96-aws-files.s3.amazonaws.com/a3ccf8ac-fed4-458c-a0b3-9d552f634403.jpg?X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGQaCXVzLWVhc3QtMSJHMEUCIQCRQm7txHpdiGHS0YeZRNyvBw8F%2BlcRcnmI8UoPdH4M0wIgF9zp8i%2BbSyN8lOyzCAbhok%2FtVfTJoVMKHgjpZNOgUgwq7AIIHRAAGgwzMzk3MTMxMTI2NDgiDHtUo0twQERh4aQ7%2ByrJAmtQ%2BTG0%2FbyScd13h9q3GiEMpzKktpDo15eag8Sdqth974ATBVXZVfN19IoH4JPn%2FGsspnk6EBFrGExdOH9pZJ7NmH%2FRQ2DbTFDoRkRYky0dMP04m46NOwYg238GWYarw26SEv8%2FFaf%2B7sZsCAhEffVY7wdGshy4AO0xxPgz%2BnVunA6ttOreNIhmrh2jCXLPBEahG3sHgaiIfTNTWPnWNeFpXvqupJjM9PFDINLJMXE7cJNiyNQc2mUL68FfljHTchL%2BaBX1BTlD8NizO78PHQO7DbiYyEU23Q0%2Bh2s2sg1weMlkzdHHbU6j6Aj7Z%2F8KkR9pcnoudMP9weHWZpcqc%2Fr8KxYgP4dmdJTupqhuxeM%2FQeaJnC5UJh3UdYFvkqDaVwtn8hYqNmXA1Mwfq%2Fnw4V4bkIIzhPmt3a0EfQFccmzBM1OVY2TXbB4pMIyOyLoGOp4BUdZ3X9SriAXwz7NS4yv0ktYhG5XhHno5N85wOS%2B78GJIp3XEHh8Hwb1rEMXmW8zDf9c%2FNptc6%2FaxEn%2ByaWTHO60frSEsu1%2BhrKRVJTLLKYptHpLtlrCaM8l23823KqMYu9rkYe3ZcmzfFEX9Ta3kP8hYAyoUA5wA4m5oCDhdy9bt8zQvhALYDYr5GlHc8BICtSFFoMDe7ytPVdme6vw%3D\u0026X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=ASIAU6GD2XJEGZXCTQUL%2F20241205%2Fus-east-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20241205T200325Z\u0026X-Amz-SignedHeaders=content-type%3Bhost\u0026X-Amz-Signature=918ddced2be9ae93c85398f48ec71242a49d75d81a371f6f35f7e1526013a8f1\"\n}\n```\n```JavaScript\nPUT https://mariusz96-aws-files.s3.amazonaws.com/a3ccf8ac-fed4-458c-a0b3-9d552f634403.jpg?X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGQaCXVzLWVhc3QtMSJHMEUCIQCRQm7txHpdiGHS0YeZRNyvBw8F%2BlcRcnmI8UoPdH4M0wIgF9zp8i%2BbSyN8lOyzCAbhok%2FtVfTJoVMKHgjpZNOgUgwq7AIIHRAAGgwzMzk3MTMxMTI2NDgiDHtUo0twQERh4aQ7%2ByrJAmtQ%2BTG0%2FbyScd13h9q3GiEMpzKktpDo15eag8Sdqth974ATBVXZVfN19IoH4JPn%2FGsspnk6EBFrGExdOH9pZJ7NmH%2FRQ2DbTFDoRkRYky0dMP04m46NOwYg238GWYarw26SEv8%2FFaf%2B7sZsCAhEffVY7wdGshy4AO0xxPgz%2BnVunA6ttOreNIhmrh2jCXLPBEahG3sHgaiIfTNTWPnWNeFpXvqupJjM9PFDINLJMXE7cJNiyNQc2mUL68FfljHTchL%2BaBX1BTlD8NizO78PHQO7DbiYyEU23Q0%2Bh2s2sg1weMlkzdHHbU6j6Aj7Z%2F8KkR9pcnoudMP9weHWZpcqc%2Fr8KxYgP4dmdJTupqhuxeM%2FQeaJnC5UJh3UdYFvkqDaVwtn8hYqNmXA1Mwfq%2Fnw4V4bkIIzhPmt3a0EfQFccmzBM1OVY2TXbB4pMIyOyLoGOp4BUdZ3X9SriAXwz7NS4yv0ktYhG5XhHno5N85wOS%2B78GJIp3XEHh8Hwb1rEMXmW8zDf9c%2FNptc6%2FaxEn%2ByaWTHO60frSEsu1%2BhrKRVJTLLKYptHpLtlrCaM8l23823KqMYu9rkYe3ZcmzfFEX9Ta3kP8hYAyoUA5wA4m5oCDhdy9bt8zQvhALYDYr5GlHc8BICtSFFoMDe7ytPVdme6vw%3D\u0026X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=ASIAU6GD2XJEGZXCTQUL%2F20241205%2Fus-east-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20241205T200325Z\u0026X-Amz-SignedHeaders=content-type%3Bhost\u0026X-Amz-Signature=918ddced2be9ae93c85398f48ec71242a49d75d81a371f6f35f7e1526013a8f1\nContent-Type: image/jpeg\n(binary)\n```\n```JavaScript\n200 OK\n```\n```JavaScript\nInvoke GetDownloadUrl\n\"a3ccf8ac-fed4-458c-a0b3-9d552f634403\"\n```\n```JavaScript\n{\n    \"Url\": \"https://mariusz96-aws-files.s3.amazonaws.com/a3ccf8ac-fed4-458c-a0b3-9d552f634403.jpg?X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGUaCXVzLWVhc3QtMSJGMEQCIHnBXGolUBPxA%2BLulz5%2FqqW75u6hLImQMHOkD01%2FEoVWAiA36Z5KWtPfcPkmFQwmqFglAb2DH08dHJy4AI1%2Ffz0hASrwAggdEAAaDDMzOTcxMzExMjY0OCIMPFXNZiaOafaYCdLCKs0CabT8dK%2B3gpIUunlATL5MP0MqS9vc3Vt%2FIUCaY36d3q4uY7AVVtywAADCp8CEmlQRCgok1dmqDnRuAETEpH%2BrMFgy73HWO6V9eWST0659hmkagWlfyoW4iQmUJnOq%2FQ%2FytzlrKBJ6xV3yyxs8QIyF0yeRUzBoc8kcu1S0tYC2ihu8Sxd1neRml5PpuE1ORD91hveyBUfujI1tEtUPQDrOsfpisHT78GMdWmFULkF2w5PaL7CMhd14ogPrtpX%2BFp9TXX8fbPmy10%2BeWNkX3W3NwT2jlXC1ETQIBTxPRnT%2BO0gJGpHoJdh0%2Bc5cicwGkKDTYxDI1QsFVbIiFXcaqAhDNiE3yIK9YQmFVbR1attpGClK7GREiUx8PGqgvkA3RQprOqDdOs%2BITz3SZc%2Bp9lE9H7dDN5ZUe3mFnAVAm74%2F8RMzoYLFElGwzDbMfuh1MNSPyLoGOp8BjqP4HzrWPc9qviDAyJ9VZABQX2BipNGoYqiaBi2HX6FTVc90B2qSkrhrMEkM81rKGMm3kH5imFf5%2F7SI0hThq2k2X8Il1xte49knjYdJC%2Bi2L1igvNWjKyeeq4AyuvwLwchLsz8piOYwrn4vQHLB3g5zz%2BCF3ZMLOmh9T8dUx08zeSNBvoHVQKaQDi1Emy1VvdH%2Bw8wuj5aWaIVqmFQX\u0026X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=ASIAU6GD2XJEDX7HS46S%2F20241205%2Fus-east-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20241205T200752Z\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=5c66e03a072b247ace9f4eb493822e340cba27396208bd981b44a3496beb37b3\"\n}\n```\n```JavaScript\nGET https://mariusz96-aws-files.s3.amazonaws.com/a3ccf8ac-fed4-458c-a0b3-9d552f634403.jpg?X-Amz-Expires=3600\u0026X-Amz-Security-Token=IQoJb3JpZ2luX2VjEGUaCXVzLWVhc3QtMSJGMEQCIHnBXGolUBPxA%2BLulz5%2FqqW75u6hLImQMHOkD01%2FEoVWAiA36Z5KWtPfcPkmFQwmqFglAb2DH08dHJy4AI1%2Ffz0hASrwAggdEAAaDDMzOTcxMzExMjY0OCIMPFXNZiaOafaYCdLCKs0CabT8dK%2B3gpIUunlATL5MP0MqS9vc3Vt%2FIUCaY36d3q4uY7AVVtywAADCp8CEmlQRCgok1dmqDnRuAETEpH%2BrMFgy73HWO6V9eWST0659hmkagWlfyoW4iQmUJnOq%2FQ%2FytzlrKBJ6xV3yyxs8QIyF0yeRUzBoc8kcu1S0tYC2ihu8Sxd1neRml5PpuE1ORD91hveyBUfujI1tEtUPQDrOsfpisHT78GMdWmFULkF2w5PaL7CMhd14ogPrtpX%2BFp9TXX8fbPmy10%2BeWNkX3W3NwT2jlXC1ETQIBTxPRnT%2BO0gJGpHoJdh0%2Bc5cicwGkKDTYxDI1QsFVbIiFXcaqAhDNiE3yIK9YQmFVbR1attpGClK7GREiUx8PGqgvkA3RQprOqDdOs%2BITz3SZc%2Bp9lE9H7dDN5ZUe3mFnAVAm74%2F8RMzoYLFElGwzDbMfuh1MNSPyLoGOp8BjqP4HzrWPc9qviDAyJ9VZABQX2BipNGoYqiaBi2HX6FTVc90B2qSkrhrMEkM81rKGMm3kH5imFf5%2F7SI0hThq2k2X8Il1xte49knjYdJC%2Bi2L1igvNWjKyeeq4AyuvwLwchLsz8piOYwrn4vQHLB3g5zz%2BCF3ZMLOmh9T8dUx08zeSNBvoHVQKaQDi1Emy1VvdH%2Bw8wuj5aWaIVqmFQX\u0026X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=ASIAU6GD2XJEDX7HS46S%2F20241205%2Fus-east-1%2Fs3%2Faws4_request\u0026X-Amz-Date=20241205T200752Z\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=5c66e03a072b247ace9f4eb493822e340cba27396208bd981b44a3496beb37b3\n```\n```JavaScript\n(binary)\n```\n\n## Prerequisites:\n- .NET 8.0\n- Visual Studio 2022\n- AWS Toolkit with Amazon Q 1.60.0.1\n\n## Test:\n- `Test Explorer` \u003e `Run All Tests`\n\n## Deploy:\n- Create a new S3 bucket with unique name and cofigure `BucketName` environment variable in `aws-lambda-tools-defaults.json` files\n- Create a new DynamoDB table with `Files` table name and `Id` hash key name\n- Publish `GetUploadUrl`, `ProcessUpload` and `GetDownloadUrl` functions to Lambda\n- Add permisions to all functions to access other created resources\n- Add trigger to `ProcessUpload` function on `All object create events` in the created S3 bucket\n- Delete all created resources to prevent ongoing charges\n\n## AWS services used:\n- Lambda\n- DynamoDB\n- S3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariusz96%2Faws-files","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmariusz96%2Faws-files","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmariusz96%2Faws-files/lists"}