{"id":30339831,"url":"https://github.com/wearetechnative/terraform-aws-module-scheduler","last_synced_at":"2026-02-10T23:01:44.177Z","repository":{"id":302288378,"uuid":"1011860908","full_name":"wearetechnative/terraform-aws-module-scheduler","owner":"wearetechnative","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-11T13:54:41.000Z","size":192,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-11T16:35:45.899Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wearetechnative.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":"2025-07-01T12:52:11.000Z","updated_at":"2025-09-11T13:54:44.000Z","dependencies_parsed_at":"2025-08-18T07:33:16.884Z","dependency_job_id":"5e18cf23-4042-47bb-9491-5a6411ccf7ca","html_url":"https://github.com/wearetechnative/terraform-aws-module-scheduler","commit_stats":null,"previous_names":["wearetechnative/terraform-aws-module-scheduler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wearetechnative/terraform-aws-module-scheduler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-scheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-scheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-scheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-scheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wearetechnative","download_url":"https://codeload.github.com/wearetechnative/terraform-aws-module-scheduler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wearetechnative%2Fterraform-aws-module-scheduler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29321276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-10T20:44:44.282Z","status":"ssl_error","status_checked_at":"2026-02-10T20:44:43.393Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2025-08-18T07:32:19.653Z","updated_at":"2026-02-10T23:01:44.169Z","avatar_url":"https://github.com/wearetechnative.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform AWS [Scheduler] ![](https://img.shields.io/github/workflow/status/TechNative-B-V/terraform-aws-module-name/tflint.yaml?style=plastic)\n\n\u003c!-- SHIELDS --\u003e\n\nThis module allows you to start and stop instances on a defined schedule. The schedules are stored in a DynamoDB table along with their time periods.\n\n# Key Concepts\n\n### Schedule\nA named schedule that defines when instances tagged with that schedule should run. The schedule name is used as the value for the InstanceScheduler tag on any instance you want to manage via this module.\n\n### Period\nEach schedule has one or more periods. A period defines a set of rules about which days, what timezone, what start time, and what end time the schedule applies.\n\n## Period Attributes\n\nEach period includes the following:\n\n##  Attribute Description\n    weekdays -  One or more days of the week when the period is active.You can use multiple days.(e.g. mon, tue, fri)\n                Valid abbreviations: mon, tue,  wed, thu, fri, sat, sun.\n    timezone -  The timezone for interpreting begintime and endtime.UTC is the default timezone.                       \n    begintime-  The time of day when instances should start (in 24-hour format, e.g. 09:00).\n    endtime  -  The time of day when instances should stop (in 24-hour format, e.g. 17:00).\n\n### Rules \u0026 Examples\n\nEach schedule must have at least one period.\n\nYou can have multiple periods within a schedule (for instance, one for weekdays 9-17, another for weekends).\n\nTimes are in 24-hour format.\n\nDays must use consistent abbreviations (e.g. mon, tue, etc.).\n\n[![](we-are-technative.png)](https://www.technative.nl)\n\n## How does it work\n\n### First use after you clone this repository or when .pre-commit-config.yaml is updated\n\nRun `pre-commit install` to install any guardrails implemented using pre-commit.\n\nSee [pre-commit installation](https://pre-commit.com/#install) on how to install pre-commit.\n\n...\n\n## Usage\n\nTo use this module ...\n\n```hcl\nmodule \"scheduler\"{\n    source = \"git@github.com:wearetechnative/terraform-aws-lambda.git\"\n    bucket_name = \"instancescheduler-bucket-example\"\n    dynamodb_table_name = \"instance_scheduler\"\n    kms_key_arn = *******\n    lambda_role_name = \"scheduler_role\"\n    periods = [\n      {\n         \"name\": \"7am-to-8pm\",\n         \"days\": [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\"],\n         \"begintime\": \"7:00\",\n         \"endtime\": \"20:00\",\n         \"timezone\": \"Europe/Amsterdam\"\n      },\n      {\n         \"name\": \"8am-to-7pm\",\n         \"days\": [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\"],\n         \"begintime\": \"8:00\",\n         \"endtime\": \"19:00\",\n         \"timezone\": \"Europe/Amsterdam\"\n      }\n    ]\n    schedules = [\n      {\n         \"name\": \"mon-fri-7am-to-8pm\",\n         \"period\": [\"7am-to-8pm\"]\n      },\n      {\n         \"name\": \"mon-fri-8am-to-7pm\",\n         \"period\": [\"8am-to-7pm\"]\n      }\n    ]\n    sqs_arn = ********\n}\n```\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Ignore Scheduler functionality\n\nYou can use this feature to keep an instance running beyond its scheduled stop time. To enable it, simply add a tag to the instance called `Ignore_scheduler` with a value that indicates the time until which the instance should remain running, including the timezone `(for example: 22:00 Europe/Amsterdam)`. After that time, the tag will be automatically removed and the instance will resume its normal schedule.\n\n## Requirements\n\nNo requirements.\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | n/a |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_dynamodb_instance_scheduler\"\u003e\u003c/a\u003e [dynamodb\\_instance\\_scheduler](#module\\_dynamodb\\_instance\\_scheduler) | github.com/wearetechnative/terraform-aws-module-dynamodb.git | n/a |\n| \u003ca name=\"module_ec2_lambda\"\u003e\u003c/a\u003e [ec2\\_lambda](#module\\_ec2\\_lambda) | github.com/wearetechnative/terraform-aws-lambda.git | n/a |\n| \u003ca name=\"module_iam_role_lambda_instance_scheduler\"\u003e\u003c/a\u003e [iam\\_role\\_lambda\\_instance\\_scheduler](#module\\_iam\\_role\\_lambda\\_instance\\_scheduler) | github.com/wearetechnative/terraform-aws-iam-role.git | n/a |\n| \u003ca name=\"module_iam_role_webpage_scheduler\"\u003e\u003c/a\u003e [iam\\_role\\_webpage\\_scheduler](#module\\_iam\\_role\\_webpage\\_scheduler) | github.com/wearetechnative/terraform-aws-iam-role.git | n/a |\n| \u003ca name=\"module_lambda_start_stop_instances\"\u003e\u003c/a\u003e [lambda\\_start\\_stop\\_instances](#module\\_lambda\\_start\\_stop\\_instances) | github.com/wearetechnative/terraform-aws-lambda.git | n/a |\n| \u003ca name=\"module_sqs_dlq\"\u003e\u003c/a\u003e [sqs\\_dlq](#module\\_sqs\\_dlq) | ../01_sqs_dlq | n/a |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_apigatewayv2_api.my_api](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/apigatewayv2_api) | resource |\n| [aws_apigatewayv2_integration.int](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/apigatewayv2_integration) | resource |\n| [aws_apigatewayv2_route.my_route](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/apigatewayv2_route) | resource |\n| [aws_apigatewayv2_stage.my_api_stg](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/apigatewayv2_stage) | resource |\n| [aws_cloudwatch_event_rule.rule](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_rule) | resource |\n| [aws_cloudwatch_event_target.lambda_trigger](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cloudwatch_event_target) | resource |\n| [aws_dynamodb_table_item.period](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dynamodb_table_item) | resource |\n| [aws_dynamodb_table_item.schedules](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dynamodb_table_item) | resource |\n| [aws_kms_grant.a](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_grant) | resource |\n| [aws_lambda_permission.allow_API](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.allow_API_1](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.allow_API_2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.allow_API_3](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_lambda_permission.allow_eventbridge](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission) | resource |\n| [aws_s3_bucket.webpage_bucket](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket) | resource |\n| [aws_s3_bucket_object.object](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_object) | resource |\n| [aws_s3_bucket_object.object2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_object) | resource |\n| [aws_s3_bucket_object.object3](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_object) | resource |\n| [aws_s3_bucket_website_configuration.website_conf](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket_website_configuration) | resource |\n| [aws_iam_policy_document.instance_scheduler](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n| [aws_iam_policy_document.launch_ec2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_bucket_name\"\u003e\u003c/a\u003e [bucket\\_name](#input\\_bucket\\_name) | n/a | `string` | n/a | yes |\n| \u003ca name=\"input_dynamodb_table_name\"\u003e\u003c/a\u003e [dynamodb\\_table\\_name](#input\\_dynamodb\\_table\\_name) | n/a | `string` | n/a | yes |\n| \u003ca name=\"input_kms_key_arn\"\u003e\u003c/a\u003e [kms\\_key\\_arn](#input\\_kms\\_key\\_arn) | n/a | `string` | n/a | yes |\n| \u003ca name=\"input_lambda_role_name\"\u003e\u003c/a\u003e [lambda\\_role\\_name](#input\\_lambda\\_role\\_name) | name for lambda role which will be created by this module | `string` | n/a | yes |\n| \u003ca name=\"input_periods\"\u003e\u003c/a\u003e [periods](#input\\_periods) | n/a | \u003cpre\u003elist(object({\u003cbr/\u003e    name = string,\u003cbr/\u003e    days = list(string),\u003cbr/\u003e    begintime = string,\u003cbr/\u003e    endtime = string,\u003cbr/\u003e    timezone = string\u003cbr/\u003e  }))\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_schedules\"\u003e\u003c/a\u003e [schedules](#input\\_schedules) | n/a | \u003cpre\u003elist(object({\u003cbr/\u003e    name = string,\u003cbr/\u003e    period = list(string)\u003cbr/\u003e}))\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_sqs_arn\"\u003e\u003c/a\u003e [sqs\\_arn](#input\\_sqs\\_arn) | n/a | `string` | n/a | yes |\n\n## Outputs\n\nNo outputs.\n\u003c!-- END_TF_DOCS --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-scheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-scheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwearetechnative%2Fterraform-aws-module-scheduler/lists"}