{"id":24226702,"url":"https://github.com/rmarasigan/jira-slack-integration","last_synced_at":"2026-05-08T10:37:16.499Z","repository":{"id":181112920,"uuid":"665912104","full_name":"rmarasigan/jira-slack-integration","owner":"rmarasigan","description":"A mini-project that uses AWS services to automate the creation of JIRA tickets/issues and send notifications to a designated Slack channel.","archived":false,"fork":false,"pushed_at":"2023-08-11T07:24:30.000Z","size":1822,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T17:03:06.308Z","etag":null,"topics":["aws","golang","jira","slack"],"latest_commit_sha":null,"homepage":"","language":"Go","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/rmarasigan.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,"zenodo":null}},"created_at":"2023-07-13T09:22:11.000Z","updated_at":"2024-12-10T07:11:54.000Z","dependencies_parsed_at":"2025-06-08T17:03:08.375Z","dependency_job_id":"474855a9-fa2d-467b-96c8-eafd737454d5","html_url":"https://github.com/rmarasigan/jira-slack-integration","commit_stats":null,"previous_names":["rmarasigan/jira-slack-integration"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rmarasigan/jira-slack-integration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarasigan%2Fjira-slack-integration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarasigan%2Fjira-slack-integration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarasigan%2Fjira-slack-integration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarasigan%2Fjira-slack-integration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmarasigan","download_url":"https://codeload.github.com/rmarasigan/jira-slack-integration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmarasigan%2Fjira-slack-integration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32776983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"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":["aws","golang","jira","slack"],"created_at":"2025-01-14T09:16:54.002Z","updated_at":"2026-05-08T10:37:16.482Z","avatar_url":"https://github.com/rmarasigan.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JIRA + Slack Integration\n\nA mini-project that uses AWS services to automate the creation of JIRA tickets/issues and send notifications to a designated Slack channel. The **API Gateway** acts as the entry point, receiving HTTP requests that trigger Lambda Functions. The **Lambda Functions** process the requests, creating JIRA tickets/issues based on the provided information. To ensure reliable and scalable processing, **Simple Queue Service (SQS)** is employed as a buffer between the API Gateway and the Lambda Functions. The processed tickets/issues are then published to the designated Slack channel, notifying the team members.\n\nPlease note that this mini-project serves as a demonstration of integrating AWS services such as API Gateway, Lambda Functions, and Simple Queue Service (SQS), for creating JIRA tickets/issues and sending notifications to a Slack channel. It is not intended for real-world production use and may lack certain features, optimizations, and security issues required for a production-ready application.\n\n## Architecture\n### JIRA + Slack Integration\n![jira-slack-integration](assets/img/jira-slack-integration.png)\n\n#### JIRA Issue\n![jira-sample-issue](assets/img/jira-sample-issue.png)\n\n#### Slack Channel Notification\n![slack-sample-notification](assets/img/slack-sample-notif.png)\n\n### CloudWatch Lambda Subscription\n![cloudwatch-lambda-subscription](assets/img/cloudwatch-lambda-subscription.png)\n\n#### JIRA Issue\n![cw-lambda-subscription-jira-ticket](assets/img/cw-lambda-subscription-jira-ticket.png)\n\n#### Slack Channel Notification\n![cw-lambda-subscription-slack-notif](assets/img/cw-lambda-subscription-slack-notif.png)\n\n## Pre-requisites\n* [JIRA Setup and Authentication](docs/app_integration/jira_setup.md)\n* [Slack Setup and Authentication](docs/app_integration/slack_setup.md)\n* [JIRA and Slack Secrets Manager Configuration](docs/app_integration/jira_slack_secrets_manager.md)\n* [CloudWatch Alert Secrets Manager Configuration](docs/app_integration/cloudwatch_alert_secrets_manager.md)\n\n## API Usage and Specification\n* [JIRA Integration API](docs/api_usage/jira_api.md)\n    * [Get all JIRA Users](docs/api_usage/jira_api.md#get-all-jira-users)\n    * [Get JIRA Project Details](docs/api_usage/jira_api.md#get-jira-project-details)\n    * [Get all Issue Priorities](docs/api_usage/jira_api.md#get-all-issue-priorities)\n    * [Create a JIRA Issue](docs/api_usage/jira_api.md#create-a-jira-issue)\n\n## CloudWatch Lambda Subscription\n1. Grant CloudWatch Logs permission to execute the Lambda Function. Replace the placeholder `account_id` with your account, and `region` with your desired region.\n    ```bash\n    dev@dev:~$ aws lambda add-permission \\\n    --function-name \"log-subscription\" \\\n    --statement-id \"log-subscription\" \\\n    --principal \"logs.amazonaws.com\" \\\n    --action \"lambda:InvokeFunction\" \\\n    --source-arn \"arn:aws:logs:region:account_id:log-group:*:*\" \\\n    --source-account \"account_id\"\n    ```\n\n2. Create a Lambda Subscription Filter.\n    * **Using AWS Console**\n        * Go to **CloudWatch** → **Logs** → **Log groups** → *Log Group Name*\n        * Go to **Subscription filters** → **Create** → **Create Lambda subscription filter**\n        * Choose the Lambda function for the destination that you want to subscribe to the filter\n        * Configure log format and filters\n            * Sample configuration of log format and filters\n                * **Log format**: JSON\n                * **Subscription filter format**: `{$.log_level=\"ERROR\"}`\n\n    * **Using AWS CLI**\n        * Create a subscription filter using the following command and replace the placeholder `account_id` with your account, `region` with your desired region, `log_group_name` with the log group to process, and `filter_pattern` with your desired pattern.\n        \n            ```bash\n            dev@dev:~$ aws logs put-subscription-filter \\\n            --log-group-name \"log_group_name\" \\\n            --filter-name \"log-error-subscription\" \\\n            --filter-pattern \"filter_pattern\" \\\n            --destination-arn \"arn:aws:lambda:region:account_id:function:log-subscription\"\n            ```\n\n## Using `Makefile` to install, bootstrap, and deploy the project\n\n1. Install all the dependencies and bootstrap your project\n    ```bash\n    dev@dev:~:bus-ticketing$ make init\n    ```\n\n    To initialize the project with specific AWS profile, you can pass a parameter called `profile`.\n    ```bash\n    dev@dev:~:bus-ticketing$ make init profile=profile_name\n    ```\n\n2. Deploy the project.\n    ```bash\n    dev@dev:~:bus-ticketing$ make deploy\n    # Deploying with specific AWS profile\n    dev@dev:~:bus-ticketing$ make deploy profile=profile_name\n    ```\n\n## Useful commands\n\n* `go test`         run unit tests\n* `cdk deploy`      deploy this stack to your default AWS account/region\n* `cdk diff`        compare deployed stack with current state\n* `cdk synth`       emits the synthesized CloudFormation template\n* `cdk bootstrap`   deployment of AWS CloudFormation template to a specific AWS environment (account and region)\n* `cdk destroy`     destroy this stack from your default AWS account/region\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmarasigan%2Fjira-slack-integration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmarasigan%2Fjira-slack-integration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmarasigan%2Fjira-slack-integration/lists"}