{"id":22433180,"url":"https://github.com/andresweitzel/crud_amazon_s3_aws","last_synced_at":"2026-05-05T12:33:49.183Z","repository":{"id":142239803,"uuid":"612790615","full_name":"andresWeitzel/CRUD_Amazon_S3_AWS","owner":"andresWeitzel","description":"✅ CRUD model for object management with Amazon S3 from AWS implemented with Systems Manager Parameter Store, S3 Bucket, Api-Gateway, Serverless-Framework, Lambda, NodeJs, aws-sdk-v3, among others.","archived":false,"fork":false,"pushed_at":"2026-02-19T12:40:09.000Z","size":12616,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-19T16:50:56.573Z","etag":null,"topics":["amazon-lambda","amazon-s3","api-gateway","aws","aws-lambda","aws-sdk-v3","nodejs","parameter-store","serverless","serverless-framework","serverless-offline"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andresWeitzel.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":"2023-03-12T01:18:05.000Z","updated_at":"2026-02-19T12:40:12.000Z","dependencies_parsed_at":"2023-12-08T01:23:51.647Z","dependency_job_id":"15716ed0-a812-47a5-b2df-955645814ad0","html_url":"https://github.com/andresWeitzel/CRUD_Amazon_S3_AWS","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/andresWeitzel/CRUD_Amazon_S3_AWS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FCRUD_Amazon_S3_AWS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FCRUD_Amazon_S3_AWS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FCRUD_Amazon_S3_AWS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FCRUD_Amazon_S3_AWS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andresWeitzel","download_url":"https://codeload.github.com/andresWeitzel/CRUD_Amazon_S3_AWS/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andresWeitzel%2FCRUD_Amazon_S3_AWS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32649594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"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":["amazon-lambda","amazon-s3","api-gateway","aws","aws-lambda","aws-sdk-v3","nodejs","parameter-store","serverless","serverless-framework","serverless-offline"],"created_at":"2024-12-05T22:14:12.261Z","updated_at":"2026-05-05T12:33:49.171Z","avatar_url":"https://github.com/andresWeitzel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n \n![Index app](./doc/assets/CRUD_Bucket_s3.drawio.png)\n\n\u003c/div\u003e \n\n\u003cdiv align=\"right\"\u003e\n  \u003cimg width=\"25\" height=\"25\" src=\"./doc/assets/icons/devops/png/aws.png\" /\u003e\n  \u003cimg width=\"25\" height=\"25\" src=\"./doc/assets/icons/aws/png/lambda.png\" /\u003e\n  \u003cimg width=\"27\" height=\"27\" src=\"./doc/assets/icons/devops/png/postman.png\" /\u003e\n  \u003cimg width=\"29\" height=\"27\" src=\"./doc/assets/icons/devops/png/git.png\" /\u003e\n  \u003cimg width=\"25\" height=\"25\" src=\"./doc/assets/icons/aws/png/s3.png\" /\u003e\n  \u003cimg width=\"28\" height=\"27\" src=\"./doc/assets/icons/aws/png/api-gateway.png\" /\u003e\n  \u003cimg width=\"27\" height=\"25\" src=\"./doc/assets/icons/aws/png/parameter-store.png\" /\u003e\n  \u003cimg width=\"27\" height=\"27\" src=\"./doc/assets/icons/backend/javascript-typescript/png/nodejs.png\" /\u003e\n\n\u003c/div\u003e \n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\n\u003cdiv align=\"right\"\u003e\n \u003ca href=\"./translation/README.es.md\" target=\"_blank\"\u003e\n \u003cimg src=\"./doc/assets/translation/arg-flag.jpg\" width=\"65\" height=\"40\" /\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/andresWeitzel/CRUD_Amazon_S3_AWS\" target=\"_blank\"\u003e\n \u003cimg src=\"./doc/assets/translation/eeuu-flag.jpg\" width=\"65\" height=\"40\" /\u003e\n \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n\n# CRUD Bucket S3 AWS ![(status-completed)](./doc/assets/icons/badges/status-completed.svg)\n\n\u003c/div\u003e\n\n\u003cbr\u003e\n\nCRUD model for object handling implemented with Systems Manager Parameter Store, S3 Bucket, Api-Gateway, Serverless-Framework, Lambda, NodeJs, aws-sdk-v3, among others others. AWS services are deployed locally. The project code and documentation (except technical docs) have been developed in English.\n\n* [Postman Collection](./src/postman/collection/CRUD_Bucket_S3_AWS.postman_collection.json) \n* [Functionality test playlist](https://www.youtube.com/playlist?list=PLCl11UFjHurDPyOkEXOR6JO-vUnYqd1FW)\u003ca href=\"https://www.youtube.com/playlist?list=PLCl11UFjHurDPyOkEXOR6JO-vUnYqd1FW\" target=\"_blank\"\u003e \u003cimg src=\"./doc/assets/social-networks/yt.png\" width=\"25\" /\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n\u003c!------Start Index-----\u003e\n\n## Index 📜\n\n\u003cdetails\u003e\n \u003csummary\u003eView details\u003c/summary\u003e\n\n\u003cdiv align=\"right\"\u003e\n\n`Latest update: 19/02/26` \n\n\u003c/div\u003e\n\n### Section 1) Description, Configuration, and Technologies\n\n* [1.0) Project Description.](#10-description-)\n* [1.1) Project Execution .](#11-project-execution-)\n* [1.2) Project setup from scratch](#12-project-setup-from-scratch-)\n* [1.3) Technologies.](#13-technologies-)\n\n### Section 2) Endpoints and Examples\n\n* [2.0) Endpoints and resources.](#20-endpoints-and-resources-)\n\n### Section 3) Functionality Testing and References\n\n* [3.0) Functionality Testing.](#30-functionality-testing-) \n* [3.1) References.](#31-references-)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003c!------Stop Index-----\u003e\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## Section 1) Description, configuration and technologies\n\n### 1.0) Description [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n### 1.0.0) General Description\n\n* This app is divided into several functionalities/components. The first component or connection layer (/bucket) is the interaction with aws-sdk and the bucket. It is modularized in such a way that we have .js files for creating s3 clients, bucket reading, bucket writing, etc.\nThen for the application layer (/helpers) we have header validations, request body, date formats, authentication, etc.\nNext, the controller/view layer (/controllers) is defined by the CRUD operations possible in each of the defined lambdas.\n\n### 1.0.1) Architecture and Operation Description\n\n* The image of the aws architecture used describes the general flow of the app. Any request to the bucket starts from a client (Postman, server, etc.).\n* `Step 0` : This request is received by the api-gateway and will only be validated if the correct x-api-key is found within the headers of said request.\n* `Steps 1A, 1B, etc.` : All these steps correspond to an endpoint with its specific resource. For example, for uploadObject (1A) it is http://localhost:4000/dev/upload-object .... check these endpoints in [endpoints section](#section-2-endpoints-and-examples). Each lambda performs x-api-key and Bearer token verification, among others.\n* `Steps 2` : The lambdas perform the corresponding ssm validations with the System Manager Parameter Store.. they validate tokens, values ​​for the s3 bucket, etc.\n* `Steps 3` : The lambdas perform the necessary requests and operations against the s3 bucket (reading, updating, deleting and inserting objects).\n* `Clarifications` : This operation is emulated within the same network and in a local environment with the corresponding serverless plugins.\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.1) Project Execution [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n* Once a work environment has been created through an ide, we clone the project\n\n```git\ngit clone https://github.com/andresWeitzel/CRUD_Bucket_S3_AWS\n```\n\n* We position ourselves on the project\n\n```git\ncd 'projectName'\n```\n\n* We install the LTS version of [Nodejs(v18)](https://nodejs.org/en/download)\n* We install the Serverless Framework globally if we haven't already. I recommend version three since it's free and doesn't ask for credentials. The latest version (four) can be used without any problems, although it requires a paid version.\n```git\nnpm install -g serverless@3\n```\n* We check the installed version of Serverless\n\n```git\nsls -v\n```\n\n* We install all the necessary packages\n\n```git\nnpm i\n```\n\n* The ssm variables used in the project are kept to simplify the configuration process of the project. It is recommended to add the corresponding file (serverless\\_ssm.yml) to the .gitignore.\n* The following script configured in the package.json of the project is in charge of\n* Starting serverless-offline (serverless-offline)\n\n```git\n\"scripts\": {\n\"serverless-offline\": \"sls offline start\",\n\"start\": \"npm run serverless-offline\"\n},\n```\n\n* We run the app from the terminal.\n\n```git\nnpm start\n```\n\n* If we get a message indicating that port 9324 is already in use, we can terminate all dependent processes.\n```git\nnpx kill-port 9324\n```\n* We launch the app from terminal.\n```git\nnpm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.2) Setting up the project from scratch [🔝](#índice-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n* We create a work environment through an IDE, after creating a folder we position ourselves on it\n\n```git\ncd 'projectName'\n```\n\n* We install the LTS version of [Nodejs(v18)](https://nodejs.org/en/download)\n* We install the Serverless Framework globally if we haven't already. I recommend version three since it's free and doesn't ask for credentials. The latest version (four) can be used without any problems, although it requires a paid version.\n```git\nnpm install -g serverless@3\n```\n\n* Check the installed Serverless version\n\n```git\nsls -v\n```\n\n* Initialize a serverless template\n\n```git\nserverless create --template aws-nodejs\n```\n\n* Initialize an npm project\n\n```git\nnpm init -y\n```\n\n* Install local S3\n\n```git\nnpm install serverless-s3-local --save-dev\n```\n\n* Install the s3 Client\n\n```git\nnpm install @aws-sdk/client-s3\n```\n\n* Install serverless offline\n\n```git\nnpm i serverless-offline --save-dev\n```\n\n* Install serverless ssm\n\n```git\nnpm i serverless-offline-ssm --save-dev\n```\n\n* The ssm variables used in the project are kept to simplify the configuration process of the project. It is recommended to add the corresponding file (serverless\\_ssm.yml) to the .gitignore.\n* The following script configured in the package.json of the project is in charge of\n* Starting serverless-offline (serverless-offline)\n\n```git\n\"scripts\": {\n\"serverless-offline\": \"sls offline start\",\n\"start\": \"npm run serverless-offline\"\n},\n```\n\n* We run the app from the terminal.\n\n```git\nnpm start\n```\n\n* If we get a message indicating that port 9324 is already in use, we can terminate all dependent processes.\n```git\nnpx kill-port 9324\n```\n* We launch the app from terminal.\n```git\nnpm start\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n### 1.3) Technologies [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n| Technology | Version | Purpose |\n|------------|---------|---------|\n| [SDK](https://www.serverless.com/framework/docs/guides/sdk/) | 4.3.2 | Automatic Module Injection for Lambdas |\n| [Serverless Framework Core v3](https://www.serverless.com//blog/serverless-framework-v3-is-live) | 3.23.0 | AWS Core Services |\n| [Systems Manager Parameter Store (SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) | 3.0 | Management of Environment Variables |\n| [Amazon Api Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) | 2.0 | API Manager, Authentication, Control and Processing |\n| [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) | 3.0 | Object Container |\n| [NodeJS](https://nodejs.org/en/) | 14.18.1 | JS Library |\n| [VSC](https://code.visualstudio.com/docs) | 1.72.2 | IDE |\n| [Postman](https://www.postman.com/downloads/) | 10.11 | Http Client |\n| [CMD](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cmd) | 10 | Command Prompt |\n| [Git](https://git-scm.com/downloads) | 2.29.1 | Version Control |\n\n### Plugins\n\n| Plugin | Description |\n|--------|-------------|\n| [Serverless Plugin](https://www.serverless.com/plugins/) | Libraries for Modular Definition |\n| [serverless-offline](https://www.npmjs.com/package/serverless-offline) | This serverless plugin emulates AWS λ and API Gateway on-premises |\n| [serverless-offline-ssm](https://www.npmjs.com/package/serverless-offline-ssm) | Finds environment variables that match SSM parameters at build time and replaces them from a file |\n| [serverless-s3-local](https://www.serverless.com/plugins/serverless-s3-local) | Serverless plugin to run S3 clones locally |\n\n### Extensions\n\n| Extension |\n|-----------|\n| Prettier - Code formatter |\n| YAML - Autoformatter .yml (alt+shift+f) |\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 2) Endpoints and Examples.\n\n### 2.0) Endpoints and Resources [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n### 2.1.0) Variables in Postman\n\n| Variable | Initial Value | Current Value |\n|----------|---------------|---------------|\n| base_url | http://localhost:4000 | http://localhost:4000 |\n| x-api-key | f98d8cd98h73s204e3456998ecl9427j | f98d8cd98h73s204e3456998ecl9427j |\n| bearer_token | Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c | Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c |\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### 2.1.1) Upload an object to the s3 bucket\n\n#### Request | Code snippet\n\n```postman\ncurl --location 'http://localhost:4000/dev/upload-object' \\\n--header 'x-api-key: f98d8cd98h73s204e3456998ecl9427j' \\\n--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"type\":\"image\",\n    \"format\":\"png\",\n    \"description\":\"5000 × 3061 png\",\n    \"url\":\"https://www.bing.com/images/search?view=detailV2\u0026ccid=Tf4BFI68\u0026id=D66EF5BFB7DA0A645A70240C32CB8664E8F8BF09\u0026thid=OIP.Tf4BFI6846neirVSebC0vAHaEi\u0026mediaurl=https%3a%2f%2flogos-download.com%2fwp-content%2fuploads%2f2016%2f09%2fNode_logo_NodeJS.png\u0026cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.4dfe01148ebce3a9de8ab55279b0b4bc%3frik%3dCb%252f46GSGyzIMJA%26pid%3dImgRaw%26r%3d0\u0026exph=3061\u0026expw=5000\u0026q=jpg+nodejs\u0026simid=608055434302923247\u0026FORM=IRPRST\u0026ck=2FF3D39CAEF945F20B996CF6042F88A6\u0026selectedIndex=1\u0026ajaxhist=0\u0026ajaxserp=0\"\n}'\n```\n\n#### Response\n\n```postman\n{\n    \"message\": {\n        \"type\": \"image\",\n        \"format\": \"png\",\n        \"description\": \"5000 × 3061 png\",\n        \"url\": \"https://www.bing.com/images/search?view=detailV2\u0026ccid=Tf4BFI68\u0026id=D66EF5BFB7DA0A645A70240C32CB8664E8F8BF09\u0026thid=OIP.Tf4BFI6846neirVSebC0vAHaEi\u0026mediaurl=https%3a%2f%2flogos-download.com%2fwp-content%2fuploads%2f2016%2f09%2fNode_logo_NodeJS.png\u0026cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.4dfe01148ebce3a9de8ab55279b0b4bc%3frik%3dCb%252f46GSGyzIMJA%26pid%3dImgRaw%26r%3d0\u0026exph=3061\u0026expw=5000\u0026q=jpg+nodejs\u0026simid=608055434302923247\u0026FORM=IRPRST\u0026ck=2FF3D39CAEF945F20B996CF6042F88A6\u0026selectedIndex=1\u0026ajaxhist=0\u0026ajaxserp=0\",\n        \"uuid\": 104851112\n    }\n}\n```\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### 2.1.2) Get an object from the bucket based on its uuid\n\n#### Request | Code snippet\n\n```postman\ncurl --location 'http://localhost:4000/dev/get-object/103053674' \\\n--header 'x-api-key: f98d8cd98h73s204e3456998ecl9427j' \\\n--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \\\n--header 'Content-Type: application/json' \\\n--data ''\n```\n\n#### Response\n\n```postman\n{\n    \"message\": {\n        \"type\": \"image\",\n        \"format\": \"jpg\",\n        \"description\": \"1000 × 1261 png\",\n        \"url\": \"https://www.bing.com/images/search?view=detailV2\u0026ccid=Tf4BFI68\u0026id=D66EF5BFB7DA0A645A70240C32CB8664E8F8BF09\u0026thid=OIP.Tf4BFI6846neirVSebC0vAHaEi\u0026mediaurl=https%3a%2f%2flogos-download.com%2fwp-content%2fuploads%2f2016%2f09%2fNode_logo_NodeJS.png\u0026cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.4dfe01148ebce3a9de8ab55279b0b4bc%3frik%3dCb%252f46GSGyzIMJA%26pid%3dImgRaw%26r%3d0\u0026exph=3061\u0026expw=5000\u0026q=jpg+nodejs\u0026simid=608055434302923247\u0026FORM=IRPRST\u0026ck=2FF3D39CAEF945F20B996CF6042F88A6\u0026selectedIndex=1\u0026ajaxhist=0\u0026ajaxserp=0\",\n        \"uuid\": 103053674\n    }\n}\n```\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### 2.1.3) Update an object in the s3 bucket\n\n#### Request | Code snippet\n\n```postman\ncurl --location --request PUT 'http://localhost:4000/dev/edit-object/104851112' \\\n--header 'x-api-key: f98d8cd98h73s204e3456998ecl9427j' \\\n--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \\\n--header 'Content-Type: application/json' \\\n--data '{\n    \"type\":\"image\",\n    \"format\":\"jpg\",\n    \"description\":\"1200 × 1201 png\",\n    \"url\":\"https://www.bing.com/images/search?view=detailV2\u0026ccid=Tf4BFI68\u0026id=D66EF5BFB7DA0A645A70240C32CB8664E8F8BF09\u0026thid=OIP.Tf4BFI6846neirVSebC0vAHaEi\u0026mediaurl=https%3a%2f%2flogos-download.com%2fwp-content%2fuploads%2f2016%2f09%2fNode_logo_NodeJS.png\u0026cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.4dfe01148ebce3a9de8ab55279b0b4bc%3frik%3dCb%252f46GSGyzIMJA%26pid%3dImgRaw%26r%3d0\u0026exph=3061\u0026expw=5000\u0026q=jpg+nodejs\u0026simid=608055434302923247\u0026FORM=IRPRST\u0026ck=2FF3D39CAEF945F20B996CF6042F88A6\u0026selectedIndex=1\u0026ajaxhist=0\u0026ajaxserp=0\"\n}'\n```\n\n#### Response\n\n```postman\n{\n    \"message\": {\n        \"type\": \"image\",\n        \"format\": \"jpg\",\n        \"description\": \"1200 × 1201 png\",\n        \"url\": \"https://www.bing.com/images/search?view=detailV2\u0026ccid=Tf4BFI68\u0026id=D66EF5BFB7DA0A645A70240C32CB8664E8F8BF09\u0026thid=OIP.Tf4BFI6846neirVSebC0vAHaEi\u0026mediaurl=https%3a%2f%2flogos-download.com%2fwp-content%2fuploads%2f2016%2f09%2fNode_logo_NodeJS.png\u0026cdnurl=https%3a%2f%2fth.bing.com%2fth%2fid%2fR.4dfe01148ebce3a9de8ab55279b0b4bc%3frik%3dCb%252f46GSGyzIMJA%26pid%3dImgRaw%26r%3d0\u0026exph=3061\u0026expw=5000\u0026q=jpg+nodejs\u0026simid=608055434302923247\u0026FORM=IRPRST\u0026ck=2FF3D39CAEF945F20B996CF6042F88A6\u0026selectedIndex=1\u0026ajaxhist=0\u0026ajaxserp=0\",\n        \"uuid\": 104851112\n    }\n}\n```\n\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n### 2.1.4) Delete an object from the bucket\n\n#### Request | Code snippet\n\n```postman\ncurl --location --request DELETE 'http://localhost:4000/dev/delete-object/104851112' \\\n--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c' \\\n--header 'x-api-key: f98d8cd98h73s204e3456998ecl9427j' \\\n--header 'Content-Type: application/json'\n```\n\n#### Response\n\n```postman\n{\n    \"message\": \"Removed object with uuid 104851112 successfully.\"\n}\n```\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Section 3) Functionality Testing and References\n\n### 3.0) Functionality Testing [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n#### [Watch video](https://www.youtube.com/playlist?list=PLCl11UFjHurDPyOkEXOR6JO-vUnYqd1FW)\n\n  \u003ca href=\"https://www.youtube.com/playlist?list=PLCl11UFjHurDPyOkEXOR6JO-vUnYqd1FW\"\u003e\n    \u003cimg src=\"./doc/assets/pruebaFuncionalBucket.png\" /\u003e\n  \u003c/a\u003e \n\n\u003c/details\u003e\n\n### 3.1) References [🔝](#index-)\n\n\u003cdetails\u003e\n\u003csummary\u003eView details\u003c/summary\u003e\n\u003cbr\u003e\n\n#### Bucket Configuration\n\n* [s3-example](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-configuring-buckets.html)\n* [s3-examples official](https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-node-examples.html)\n\n#### Tools\n\n* [AWS Design Tool app.diagrams.net](https://app.diagrams.net/?splash=0\\\u0026libs=aws4)\n\n#### AWS-SDK\n\n* [Official Doc](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/index.html)\n\n#### API Gateway\n\n* [Best Api-Gateway Practices](https://docs.aws.amazon.com/whitepapers/latest/best-practices-api-gateway-private-apis-integration/rest-api.html)\n* [Api-key creation custom](https://towardsaws.com/protect-your-apis-by-creating-api-keys-using-serverless-framework-fe662ad37447)\n\n#### Libraries\n\n* [Field validation](https://www.npmjs.com/package/node-input-validator)\n\n\u003cbr\u003e\n\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fcrud_amazon_s3_aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandresweitzel%2Fcrud_amazon_s3_aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandresweitzel%2Fcrud_amazon_s3_aws/lists"}