{"id":20688954,"url":"https://github.com/kenzo0107/backlog-to-slack-dm","last_synced_at":"2026-05-16T21:03:14.967Z","repository":{"id":57511450,"uuid":"239303172","full_name":"kenzo0107/backlog-to-slack-dm","owner":"kenzo0107","description":"Backlog mentions in comments to Slack DM","archived":false,"fork":false,"pushed_at":"2020-02-21T12:20:29.000Z","size":230,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-10T10:53:02.909Z","etag":null,"topics":["aws","aws-lambda","aws-sam","aws-sdk-go","backlog","backlog-api","golang"],"latest_commit_sha":null,"homepage":null,"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/kenzo0107.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":"2020-02-09T12:44:19.000Z","updated_at":"2020-02-21T12:20:31.000Z","dependencies_parsed_at":"2022-08-29T05:20:47.842Z","dependency_job_id":null,"html_url":"https://github.com/kenzo0107/backlog-to-slack-dm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kenzo0107/backlog-to-slack-dm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzo0107%2Fbacklog-to-slack-dm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzo0107%2Fbacklog-to-slack-dm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzo0107%2Fbacklog-to-slack-dm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzo0107%2Fbacklog-to-slack-dm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kenzo0107","download_url":"https://codeload.github.com/kenzo0107/backlog-to-slack-dm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kenzo0107%2Fbacklog-to-slack-dm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33118950,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T18:38:32.183Z","status":"ssl_error","status_checked_at":"2026-05-16T18:38:29.903Z","response_time":115,"last_error":"SSL_read: 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","aws-lambda","aws-sam","aws-sdk-go","backlog","backlog-api","golang"],"created_at":"2024-11-16T23:07:37.282Z","updated_at":"2026-05-16T21:03:14.935Z","avatar_url":"https://github.com/kenzo0107.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"![img](overview.png)\n\nThis SAM Project provides that builds API Gateway + Lambda that notifies Slack DM to the \"user you want to notify\" specified when adding a comment in a Backlog ticket.\n\nadd comment in Backlog\n\u003cimg width=\"50%\" src=\"step1_add_comment.png\"\u003e\n\nsend Slack DM to \"helloworld\"\n\u003cimg width=\"50%\" src=\"step2_slack_dm.png\"\u003e\n\n## Preparation\n\n### Install AWS SAM cli\n\nRefer to [Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)\n\n### Install direnv\n\n```shell\n$ brew install direnv\n```\n\n### set AWS Credentilas\n\nSet credentials that have Lambda deployment permission to the AWS Account of the deployment destination.\n\n```shell\n$ cp .envrc.sample .envrc\n\n// set AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY\n\n$ direnv allow .\n```\n\n### Create Slack app\n\nCreate a Slack app and grant the following permissions to the Bot Token Scope:\n\n* chat:write : send message\n* users:read : get user information\n* users:read.email : get user information by email\n\nWhen you create a Slack app and install the app in your workspace, a `Bot User OAuth Access Token` is generated.\n\nRegister the `Bot User OAuth Access Token` in the SSM parameter store with the key name \"slack_bot_user_oauth_access_token\".\n\n### Generate Backlog API Key\n\nGenerate an API Key with reference to [Backlog ヘルプセンター - APIの設定](https://support-ja.backlog.com/hc/ja/articles/360035641754-API%E3%81%AE%E8%A8%AD%E5%AE%9A)\n\nRegister the API Key in the SSM parameter store with the key name \"backlog_api_key\".\n\n### Encrypt user: password for Backlog Webhook Basic authentication\n\nSet an arbitrary character string.\n\n```shell\necho -n \"\u003cuser\u003e:\u003cpassword\u003e\" | base64\n```\n\nRegister the encrypted code in the SSM parameter store with the key name \"backlog_basic_auth_enc\".\n\n## set VPC Config\n\nReplace the below with your `SecurityGroupIds`, `SubnetIds`, `BACKLOG_BASE_URL`.\n\n* The security group must be allow https from 0.0.0.0/0.\n* Specify subnets where NatGateway is routed if you execute Lambda Function in private subnet.\n  To call Backlog API, you must set to allow ip from Lambda Function.\n\n```yml\n  BacklogToSlackDM:\n    Type: AWS::Serverless::Function\n    Properties:\n      ...\n      VpcConfig:\n        SecurityGroupIds: # allow https from 0.0.0.0/0\n          - sg-replaceme  # Replace your security group\n        SubnetIds:  # Use Private Subnet below where NatGateway is routed.\n          - subnet-replaceme01  # Replace your private subnet\n          - subnet-replaceme02  # Replace your private subnet\n          - subnet-replaceme03  # Replace your private subnet\n      ...\n      Environment:\n        Variables:\n          BACKLOG_BASE_URL: 'https://example.backlog.com' # Replace your backlog base url\n```\n\n### If you change the key name\n\nIf you change the key name, change the following part of template.yml.\n\n```yml\n  BacklogToSlackDM:\n    Type: AWS::Serverless::Function\n    Properties:\n      ...\n      Environment:\n        Variables:\n          BACKLOG_API_KEY_NAME: 'backlog_api_key'\n          SLACK_BOT_USER_OAUTH_ACCESS_TOKEN_NAME: 'slack_bot_user_oauth_access_token'\n...\n  Authorizer:\n    Type: AWS::Serverless::Function\n    Properties:\n      Environment:\n        Variables:\n          BACKLOG_BASIC_AUTH_ENC_NAME: 'backlog_basic_auth_enc'\n```\n\n## Initial Deploy\n\n```\nsam deploy --guided\n```\n\nThe file \"samconfig.toml\" is generated.\n\nAfter that, you can deploy only with the following command.\n\n```shell\nmake deploy\n```\n\nYou manage your samconfig.toml in your git repository.\n\n## set Backlog Webhook URL\n\nAfter deployment, embed `\u003cuser\u003e: \u003cpassword\u003e` for Basic authentication in the generated endpoint, and add Backlog \u003e Project \u003e Integration \u003e Webhook.\n\nex: `https://\u003cuser\u003e:\u003cpassword\u003e@\u003capi-id\u003e.execute-api.ap-northeast-1.amazonaws.com/Prod/webhook`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenzo0107%2Fbacklog-to-slack-dm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkenzo0107%2Fbacklog-to-slack-dm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkenzo0107%2Fbacklog-to-slack-dm/lists"}