{"id":16594243,"url":"https://github.com/thomasmost/darkowl","last_synced_at":"2026-05-30T22:32:05.573Z","repository":{"id":105260564,"uuid":"318322544","full_name":"thomasmost/darkowl","owner":"thomasmost","description":"an infrastructure-forward modern worker template built with Rust for AWS Lambda","archived":false,"fork":false,"pushed_at":"2020-12-04T14:16:52.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-06T17:24:14.059Z","etag":null,"topics":["aws-lambda","lambda","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/thomasmost.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":"2020-12-03T21:19:17.000Z","updated_at":"2020-12-04T16:54:06.000Z","dependencies_parsed_at":"2023-05-22T02:15:30.784Z","dependency_job_id":null,"html_url":"https://github.com/thomasmost/darkowl","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/thomasmost/darkowl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasmost%2Fdarkowl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasmost%2Fdarkowl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasmost%2Fdarkowl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasmost%2Fdarkowl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomasmost","download_url":"https://codeload.github.com/thomasmost/darkowl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasmost%2Fdarkowl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33712579,"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-05-30T02:00:06.278Z","response_time":92,"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-lambda","lambda","rust"],"created_at":"2024-10-11T23:45:39.896Z","updated_at":"2026-05-30T22:32:05.559Z","avatar_url":"https://github.com/thomasmost.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200\" height=\"100\" src=\"/darkowl.png\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eDarkowl\u003c/h1\u003e\n\nAn infrastructure-forward modern worker template built with Rust for AWS Lambda\n\n\n## Building the lambda\n\n```bash\ncargo build --release --target x86_64-unknown-linux-musl\n```\n\n## Testing the Lambda Locally\n\n1. Run the lambda ci docker image \n\n```bash\ndocker run --rm \\\n-e DOCKER_LAMBDA_STAY_OPEN=1 -p 9001:9001 \\\n-v \"$PWD\"/target/x86_64-unknown-linux-musl/release/bootstrap:/var/task/bootstrap:ro,delegated \\\nlambci/lambda:provided main\n```\n\n2. In a separate terminal, invoke the lambda\n\n```bash\naws lambda invoke \\\n--endpoint http://localhost:9001 \\\n--no-sign-request --function-name=darkowl \\\n--invocation-type=RequestResponse \\\n--payload $(echo '{ \"externalRequester\": \"cron\" }' | base64 ) \\\noutput.json\n```\n\n## Set up for Deploys\n\n1. Ensure you have a command line role belonging to a group with IAMFullAccess, and LambdaFullAccess\n\n2. Using that role, run:\n\n```bash\naws iam create-role --role-name lambda-basic-execution --assume-role-policy-document '{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n        \"Effect\": \"Allow\",\n        \"Principal\": {\n            \"Service\": \"lambda.amazonaws.com\"\n        },\n        \"Action\": \"sts:AssumeRole\"\n        }\n    ]\n}'\n```\n\n3. Then:\n\n```bash\naws iam attach-role-policy \\\n--role-name lambda-basic-execution \\\n--policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole\n```\n\n## Deploying\n\n1. Zip the build\n\n```bash\nzip -r9 -j bootstrap.zip ./target/x86_64-unknown-linux-musl/release/bootstrap\n```\n\n2. Deploy to a new function\n\n```bash\nAWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text` \u0026\u0026 \\\naws lambda create-function \\\n--function-name darkowl \\\n--runtime provided \\\n--role arn:aws:iam::$AWS_ACCOUNT_ID:role/lambda-basic-execution \\\n--zip-file fileb://bootstrap.zip \\\n--description \"Simple Rust function\" \\\n--timeout 5 \\\n--handler main\n```\n\n## Updating the Deployed Function\n\n1. Rebuild\n\n2. Rezip\n\n3. Run:\n\n```bash\naws lambda update-function-code --function-name darkowl --zip-file fileb://bootstrap.zip\n```\n\n## Configuring the lambda to run on a schedule\n\n1. Add the Cloudwatch rule\n\n```bash\naws events put-rule \\\n--name darkowl-schedule \\\n--schedule-expression 'rate(5 minutes)'\n```\n\n2. Give the rule permission to invoke your function\n\n```bash\naws lambda add-permission \\\n--function-name darkowl \\\n--statement-id my-scheduled-event \\\n--action 'lambda:InvokeFunction' \\\n--principal events.amazonaws.com \\\n--source-arn {your_rule_arn}\n```\n\n3. Create a `targets.json` file for the rule\n\n```json\n[\n  {\n    \"Id\": \"1\", \n    \"Arn\": \"{your_lambda_arn}\"\n  }\n]\n```\n\n4. Add the targets to your rule\n\n```bash\naws events put-targets --rule darkowl-schedule --targets file://targets.json\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasmost%2Fdarkowl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomasmost%2Fdarkowl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasmost%2Fdarkowl/lists"}