{"id":36688319,"url":"https://github.com/mdevilliers/lambda-deployer","last_synced_at":"2026-01-12T11:16:54.186Z","repository":{"id":57606010,"uuid":"108541980","full_name":"mdevilliers/lambda-deployer","owner":"mdevilliers","description":"Automate the deployment of AWS Lambda functions easily from either a developers machine or CI system.","archived":false,"fork":false,"pushed_at":"2018-03-10T19:06:54.000Z","size":9906,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T13:28:26.025Z","etag":null,"topics":["aws-lambda","aws-s3","ci","golang","serverless"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mdevilliers.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}},"created_at":"2017-10-27T12:13:56.000Z","updated_at":"2020-05-06T21:33:37.000Z","dependencies_parsed_at":"2022-09-26T20:01:58.740Z","dependency_job_id":null,"html_url":"https://github.com/mdevilliers/lambda-deployer","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/mdevilliers/lambda-deployer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Flambda-deployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Flambda-deployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Flambda-deployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Flambda-deployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdevilliers","download_url":"https://codeload.github.com/mdevilliers/lambda-deployer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdevilliers%2Flambda-deployer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:58:46.209Z","status":"ssl_error","status_checked_at":"2026-01-12T10:58:42.742Z","response_time":98,"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":["aws-lambda","aws-s3","ci","golang","serverless"],"created_at":"2026-01-12T11:16:54.073Z","updated_at":"2026-01-12T11:16:54.179Z","avatar_url":"https://github.com/mdevilliers.png","language":"Go","readme":"lambda-deployer\n---------------\n\n[![CircleCI](https://circleci.com/gh/mdevilliers/lambda-deployer.svg?style=svg)](https://circleci.com/gh/mdevilliers/lambda-deployer)\n\nAim\n---\n\nAutomate the deployment of lambda functions from either a developers machine or CI system.\n\nGoals\n-----\n\n- Manage permissions and secrets :\n  - AWS permissions are managed centrally with a minimum set exposed\n  - Sensitive configuration information e.g. database connection credentials are not exposed to either a CI system, developer machine or (shock horror) Github!\n- Easy to integrate CI or the developer workflow\n- Integrate cleanly with existing AWS environments\n- Ability to upload and deploy functions to multiple AWS regions\n- Ability to automatically delete unused functions\n\nUsage\n-----\n\n- download a [release](https://github.com/thingful/daas/releases)\n- create an AWS S3 bucket to handle the uploads of deployment packages.\n- create an AWS IAM role with the permissions to PutObject on the S3 bucket. This users credentials will be used to upload packages to S3.\n- create an AWS IAM role with the permissions your lambda function needs. This users credentials will be used to run your lambda function.\n- deploy the `lambda-deployer` as an AWS lambda function using the terraform module.\n\n```\nmodule \"auto_deployer\" {\n  source = \"git@github.com:mdevilliers/lambda-deployer//terraform/modules/lamda-deployer\"\n\n  application       = \"${var.application}\" // name of your application\n  environment       = \"${var.environment}\" // logical environment e.g. production\n  deployer_filepath = \"./some/path/lambda-deployer.zip\" // path to the deployer zip file\n\n  function_role_arn = \"${aws_iam_role.lambda_exec_role.arn}\" // arn of the AWS IAM role your function needs\n  s3_bucket_arn     = \"${aws_s3_bucket.deployment_uploads.arn}\" // arn of the AWS S3 bucket to monitor for uploads\n  s3_bucket_id      = \"${aws_s3_bucket.deployment_uploads.id}\" // name of the AWS S3 bucket bucket to monitor for uploads\n\n  maximum_unaliased_versions = 10 // number of unused functions to be retained\n\n  env_vars = {\n    variables = {\n      FOO          = \"BAR\" // variables to configure the lambda function with\n    }\n  }\n}\n\n```\n\n![function](docs/function.jpg)\n\n\nThere is an example terraform package using the terraform [module](https://github.com/mdevilliers/lambda-deployer/tree/master/terraform)\n\n- download and configure the lambda-uploader with the credentials of the upload user, the name of the S3 bucket and properties for your lambda function.\n\n```\nexport AWS_REGION=some-region-1\nexport AWS_ACCESS_KEY_ID=**************\nexport AWS_SECRET_ACCESS_KEY=***********************\n\nlambda-uploader-linux-amd64 up -b myS3Bucket \\\n                               -a myAlias \\\n                               -d \"AUTOMATED DEPLOY\" \\\n                               -e myEntry.Point \\\n                               -r python2.7 \\\n                               -n myFunction /path/to/function.zip\n\n```\n\nThe lambda-uploader supports uploading to additional regions via the -g flag.\n\n```\n\nlambda-uploader-linux-amd64 up -b myS3Bucket \\\n                               -a myAlias \\\n                               -d \"AUTOMATED DEPLOY\" \\\n                               -e myEntry.Point \\\n                               -r python2.7 \\\n                               -g region-1 \\\n                               -g region-2 \\\n                               -n myFunction /path/to/function.zip\n\n```\n\nIt is expected that: \n  - an S3 bucket of the same name will exist in all of the regions\n  - the lambda-deployer will be deployed to each of the regions\n\n\nOn upload to the S3 bucket the zip file will have additional metadata for the lambda-deployer to use. This metadata is viewable via the AWS S3 user interface.\n\n![metadata](docs/metadata.jpg)\n\n- the lambda-deployer will deploy the function\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdevilliers%2Flambda-deployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdevilliers%2Flambda-deployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdevilliers%2Flambda-deployer/lists"}