{"id":50168958,"url":"https://github.com/nadav96/rocketsam","last_synced_at":"2026-06-10T14:00:41.308Z","repository":{"id":37269776,"uuid":"181720964","full_name":"nadav96/rocketsam","owner":"nadav96","description":"AWS Cloudformation interpreter CLI  made to build and deploy microservices in AWS quickly and neatly","archived":false,"fork":false,"pushed_at":"2026-04-15T12:39:31.000Z","size":1596,"stargazers_count":41,"open_issues_count":4,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-18T20:08:24.120Z","etag":null,"topics":["aws","cli","cloudformation","javascript","microservice","sam","serverless"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/nadav96.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}},"created_at":"2019-04-16T15:50:27.000Z","updated_at":"2026-04-15T12:39:35.000Z","dependencies_parsed_at":"2024-03-21T13:58:48.046Z","dependency_job_id":null,"html_url":"https://github.com/nadav96/rocketsam","commit_stats":{"total_commits":127,"total_committers":5,"mean_commits":25.4,"dds":"0.17322834645669294","last_synced_commit":"5ecf279032f70d734a1cf8f47924935c5ef3b4b2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nadav96/rocketsam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nadav96%2Frocketsam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nadav96%2Frocketsam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nadav96%2Frocketsam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nadav96%2Frocketsam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nadav96","download_url":"https://codeload.github.com/nadav96/rocketsam/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nadav96%2Frocketsam/sbom","scorecard":{"id":672636,"data":{"date":"2025-08-11","repo":{"name":"github.com/nadav96/rocketsam","commit":"9201c815d23d1ab306b4f14b215b06d023438611"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/18 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: src/actions/build/Dockerfile:1: pin your Docker image by updating ubuntu:latest to ubuntu:latest@sha256:7c06e91f61fa88c08cc74f7e1b7c69ae24910d745357e0dfe1d2c0322aaf20f9","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pfrx-2q88-qq97","Warn: Project is vulnerable to: GHSA-rc47-6667-2j5j","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-776f-qx25-q3cc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T20:40:52.326Z","repository_id":37269776,"created_at":"2025-08-21T20:40:52.326Z","updated_at":"2025-08-21T20:40:52.326Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34155422,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["aws","cli","cloudformation","javascript","microservice","sam","serverless"],"created_at":"2026-05-24T22:05:36.882Z","updated_at":"2026-06-10T14:00:41.301Z","avatar_url":"https://github.com/nadav96.png","language":"JavaScript","funding_links":[],"categories":["Open Source Repos"],"sub_categories":["CLI"],"readme":"# Rocketsam\n\n![Title](./img/rocketsam.png)\n\n[![npm version](https://badge.fury.io/js/rocketsam.svg)](https://badge.fury.io/js/rocketsam)\n\nA CLI made to build and deploy microservices in AWS.\n\nCurrently the project supports lambda written in python 3.6/3.7 or node 8.1, but can easily be extended to support more languages in the future.\n\n## Whats new\n\n### 1.0.38 +\ntemplate params default value changes will update the template accordingly\n\n## Why Rocketsam?\nGood question, even though there are many third party solutions for deploying and building microservices on AWS, I found that they all lack some basic features.\n\n## Advantages of Rocketsam\n* Template per function instead of gigantic template file (the CLI will append to the app skeleton each of the functions template)\n* Caching per function, this CLI will upload only functions that their build output has changed (using hash validation).\n* The build command support python/node dependencies (it will be installed using docker and cached in the build folder).\n* Seamless deployment of the microservice using Cloud Formation.\n* Easy access to API url's and logs of each function using **logs** and **outputs** commands.\n* Running a local version of the server using SAM local.\n\nFor more info, run rocketsam help\n\n## Getting Started\n\n```\nnpm install -g rocketsam\n```\n\n```bash\n# create the project\nrocketsam init\n# add function to the project\nrocketsam create hello\n# append api event to the project '/hello' (visible in the function yaml)\nrocketsam add event api hello -e /hello\n# build all of the functions and creates a SAM template\nrocketsam build all\n\n# Run the function in docker\nrocketsam invoke hello\n\n# deploy the stack to AWS\nrocketsam deploy\n\n# Get the api url's\nrocketsam outputs\n\n# view the logs of hello function as they arrive\nrocketsam logs hello\n```\n\n### Prerequisites\n\nIn order to use the CLI, one must install [AWS SAM](https://aws.amazon.com/serverless/sam/), as well as [Docker](https://www.docker.com/) (in order to spin a local server and to install dependencies)\n\n## sample projects\n* [hello-world](sample/hello-world)\n\n* [cognito-auth](sample/cognito-auth)\n\n* [cloudfront](sample/cloudfront)\n\n### App structure\n\n```\n├── app\n│   ├── common\n│   │   └── service.py\n│   ├── functions\n│   │   └── sample\n│   │       ├── common\n│   │       │   └── service.py -\u003e $/app/common/service.py\n│   │       ├── function.py\n│   │       ├── requirements.txt\n│   │       └── template.yaml\n│   ├── resources\n│   │   ├── bucket.yaml\n│   │   └── cognitopool.yaml\n│   └── template-skeleton.yaml\n└── rocketsam.yaml\n```\n\nThe app folder consists of three main folders: **common**, **functions** and **resources**\n\n**common** - contains files that can be shared across functions (more details below)\n\n**functions** - contains dirs representing functions in the microservice.\n\n**resources** - contains yaml files each treated as a resource in the resulting SAM template.\n\n## The function template file\n```yaml\n# The function name in the template and in the AWS cloud\nName: hello\n# [ASIS] the max time allowed for the function to run\nTimeout: 10\n# [ASIS] The function runtime\nRuntime: python3.7\n# [ASIS] env variables available to the function\nEnvironment:\n  Variables:\n    demo: 1\n#[ASIS] policies for the function\nPolicies:\n  - Version: '2012-10-17'\n    Statement:\n      - Effect: Allow\n        Action:\n          - 's3:*'\n        Resource:\n          - 'Fn::Sub': 'arn:aws:s3:::${bucketName}/*'\n# rocketsam custom key to state api event\nSammyApiEvent:\n  # If not null, rocketsame will set the authorizer to the one supplied here (must be added to the template)\n  authorizerName: MyCognitoAuthorizer\n  # the endpoint of the function api\n  path: /upload\n  # the method used to access the endpoint (GET POST PUT etc...)\n  method: post\n# rocketsam custom key to state bucket event\nSammyBucketEvent:\n  # the bucket name (stated in the skeleton template)\n  bucketName: MainBucket\n  # the bucket event\n  bucketEvent: 's3:ObjectCreated:*'\n  # rules for the event to trigger, imported as is to the resulting bucket event\n  Rules:\n    - Name: suffix\n      Value: .pdf\n    - Name: prefix\n      Value: uploads/\n\n\n```\n\nThe way this template works is that the CLI has special keys: **Name, SammyApiEvent and SammyBucketEvent** which determine the name of the function in the template, an optional api event which called the function and an optional bucket event which trigger the function (if the bucket exist in the microservice and policies allow access). All other keys in the template will imported as is to the function part in the template (marked **[ASIS]**).\n\n## The Rocketsam config file\n```yaml\n# the application dir which will contain the code of the microservice. use '$' to indicate the workspace path\nappDir: $/app\n# the build dir which the CLI will build to. use '$' to indicate the workspace path\nbuildDir: $/.build\n# the common dir path. use '$' to indicate the workspace path\ncommonDir: $/app/common\n# The resource folder path. use '$' to indicate the workspace path\nresourcesDir: $/app/resources\n\n# the bucket name which will be used to store the functions code (during deploy). must exist beforehand (rocketsam init has the option to create a new bucket)\nstorageBucketName: SampleBucket\n# the prefix that will be inserted to each file pushed into the bucket (aka a folder in the bucket)\nstorageBucketPrefix: SampleBucketFolderName\n\n# the stack name used in AWS Cloud Formation\nstackName: ABCD\n# the stack region\nregion: eu-west-1\n```\n\n## Other magic\nIn the app there is a special folder called common (can be defined in the rocketsam config). the files in these folder can be shared across functions using a special syntax placed at the top of the function code file.\n\nFor instance:\n\n![common syntax](./img/commonsyntax.png)\n\nWill fetch from the common folder two files and placed them in the function resulting zip (can be viewed as symlinks in the function app dir)\n\nThe result:\n\n![common result](./img/commonresult.png)\n\nThis is not limited to python/node files only, you can place any files and reference them in the same way.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE) file for details","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnadav96%2Frocketsam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnadav96%2Frocketsam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnadav96%2Frocketsam/lists"}