이전 Slack 채널을 자동으로 아카이브하는 기능을 만들었습니다.
5071 단어 슬랙파이썬serverlessAWS
💡 만든 것
매월 첫 월요일에 오랫동안 게시가 없는 슬랙 채널을 하나만 아카이브해 줍니다. 이런 것은 기계적으로 하는 것이 좋을 것입니다.
채널에 참여하는 모든 사람들이 외롭지 않도록 수수께끼의 메시지를 남기고 나서 아카이브하도록했습니다. 덧붙여 참가자에게는 멘션이 도착해, 필요하면 수동으로 되돌릴 수 있으므로 실해는 없을까 생각합니다.
아티팩트
saitota/SlackChannelArchiver
Lambda + Cloudwatch Events 시작의 서버리스 구성입니다.
✋ 구축 절차
README 에 썼습니다. Serverless Framework에서 즉시 배포할 수 있습니다.
🔧 궁리한 곳
Serverless Framework를 활용하는 것이 즐거워졌습니다. 단순히 배포하는 것뿐만 아니라 스테이지별로 설정 팔을 전환하거나 (environment_xxx.yml)
, 프로필을 선택적으로 전환할 수 있음을 알았습니다.
sererless.ymlprovider:
stage: ${opt:stage, self:custom.defaultStage}
region: ${opt:region, self:custom.defaultRegion}
profile: ${opt:profile, self:custom.defaultProfile}
custom:
defaultStage: dev
defaultRegion: ap-northeast-1
defaultProfile: default
otherfile:
environment:
dev: ${file(./environment_dev.yml)}
prd: ${file(./environment_prd.yml)}
functions:
fnc:
environment:
${self:custom.otherfile.environment.${self:provider.stage}}
※一部省略してます
명시적으로 AWS-CLI 프로필 이름을 지정하지 않으면 defaut을 사용하도록 했습니다. 프로필을 지정하는 경우,
콘솔$ serverless deploy --profile account1
스테이지도 지정하지 않으면 dev 환경에 배치됩니다. 프로덕션이라면 다음과 같이 쓴다. 실수로 prd에 배포하는 오류가 사라집니다.
콘솔$ serverless deploy --stage prd
그리고 재미있는 것이 플러그인 serverless-plugin-aws-alerts
에서 Invoke 에러나 스로틀링에 대해서 알람 설정을 할 수 있다. 벌써 화면 포치 포치하지 않아도 돼!
sererless.ymlcustom:
alerts:
stages:
- ${opt:stage, self:custom.defaultStage}
alarms:
- functionErrors
- functionThrottles
plugins:
- serverless-plugin-aws-alerts
※一部省略してます
🐛 부작용
물론 아카이브하고 싶지 않은 채널도 때가 되면 아카이브해 줍니다. 수동으로 되돌립니다.
🐛 빠진 곳
Slack API를 원시로 두드리고 빠지는 경우가 있습니다. 채널 일람등은 취득할 수 있는데, channels.archive 메서드 를 부를 때만 에러가. 권한이 부족한가? 제대로 channels:write
도 Scope 설정했고, 그럴 리 없지만…
{'ok': False, 'error': 'missing_scope', 'needed': 'channels:write', 'provided': 'identify,bot:basic'}
분명히 아카이브와 같은 일부 작업은 BOT 사용자가 아닌 것 같습니다. 생각을 포기하고 Legacy 토큰을 사용했습니다.
나중에 조사한 결과 OAuth에서 액세스 토큰을 발행하는 것이 올바른 방법입니다.
Slack에서 업무 채널의 평온을 유지하는 봇, 그리고 인간의 토큰을 bot에게 주는 이야기 - Qiita
Slack에서 OAuth2를 사용할 때의 메모 - Qiita
Reference
이 문제에 관하여(이전 Slack 채널을 자동으로 아카이브하는 기능을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/saitotak/items/6f84de5218b71831ce2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
saitota/SlackChannelArchiver
Lambda + Cloudwatch Events 시작의 서버리스 구성입니다.
✋ 구축 절차
README 에 썼습니다. Serverless Framework에서 즉시 배포할 수 있습니다.
🔧 궁리한 곳
Serverless Framework를 활용하는 것이 즐거워졌습니다. 단순히 배포하는 것뿐만 아니라 스테이지별로 설정 팔을 전환하거나 (environment_xxx.yml)
, 프로필을 선택적으로 전환할 수 있음을 알았습니다.
sererless.ymlprovider:
stage: ${opt:stage, self:custom.defaultStage}
region: ${opt:region, self:custom.defaultRegion}
profile: ${opt:profile, self:custom.defaultProfile}
custom:
defaultStage: dev
defaultRegion: ap-northeast-1
defaultProfile: default
otherfile:
environment:
dev: ${file(./environment_dev.yml)}
prd: ${file(./environment_prd.yml)}
functions:
fnc:
environment:
${self:custom.otherfile.environment.${self:provider.stage}}
※一部省略してます
명시적으로 AWS-CLI 프로필 이름을 지정하지 않으면 defaut을 사용하도록 했습니다. 프로필을 지정하는 경우,
콘솔$ serverless deploy --profile account1
스테이지도 지정하지 않으면 dev 환경에 배치됩니다. 프로덕션이라면 다음과 같이 쓴다. 실수로 prd에 배포하는 오류가 사라집니다.
콘솔$ serverless deploy --stage prd
그리고 재미있는 것이 플러그인 serverless-plugin-aws-alerts
에서 Invoke 에러나 스로틀링에 대해서 알람 설정을 할 수 있다. 벌써 화면 포치 포치하지 않아도 돼!
sererless.ymlcustom:
alerts:
stages:
- ${opt:stage, self:custom.defaultStage}
alarms:
- functionErrors
- functionThrottles
plugins:
- serverless-plugin-aws-alerts
※一部省略してます
🐛 부작용
물론 아카이브하고 싶지 않은 채널도 때가 되면 아카이브해 줍니다. 수동으로 되돌립니다.
🐛 빠진 곳
Slack API를 원시로 두드리고 빠지는 경우가 있습니다. 채널 일람등은 취득할 수 있는데, channels.archive 메서드 를 부를 때만 에러가. 권한이 부족한가? 제대로 channels:write
도 Scope 설정했고, 그럴 리 없지만…
{'ok': False, 'error': 'missing_scope', 'needed': 'channels:write', 'provided': 'identify,bot:basic'}
분명히 아카이브와 같은 일부 작업은 BOT 사용자가 아닌 것 같습니다. 생각을 포기하고 Legacy 토큰을 사용했습니다.
나중에 조사한 결과 OAuth에서 액세스 토큰을 발행하는 것이 올바른 방법입니다.
Slack에서 업무 채널의 평온을 유지하는 봇, 그리고 인간의 토큰을 bot에게 주는 이야기 - Qiita
Slack에서 OAuth2를 사용할 때의 메모 - Qiita
Reference
이 문제에 관하여(이전 Slack 채널을 자동으로 아카이브하는 기능을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/saitotak/items/6f84de5218b71831ce2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Serverless Framework를 활용하는 것이 즐거워졌습니다. 단순히 배포하는 것뿐만 아니라 스테이지별로 설정 팔을 전환하거나
(environment_xxx.yml)
, 프로필을 선택적으로 전환할 수 있음을 알았습니다.sererless.yml
provider:
stage: ${opt:stage, self:custom.defaultStage}
region: ${opt:region, self:custom.defaultRegion}
profile: ${opt:profile, self:custom.defaultProfile}
custom:
defaultStage: dev
defaultRegion: ap-northeast-1
defaultProfile: default
otherfile:
environment:
dev: ${file(./environment_dev.yml)}
prd: ${file(./environment_prd.yml)}
functions:
fnc:
environment:
${self:custom.otherfile.environment.${self:provider.stage}}
※一部省略してます
명시적으로 AWS-CLI 프로필 이름을 지정하지 않으면 defaut을 사용하도록 했습니다. 프로필을 지정하는 경우,
콘솔
$ serverless deploy --profile account1
스테이지도 지정하지 않으면 dev 환경에 배치됩니다. 프로덕션이라면 다음과 같이 쓴다. 실수로 prd에 배포하는 오류가 사라집니다.
콘솔
$ serverless deploy --stage prd
그리고 재미있는 것이 플러그인
serverless-plugin-aws-alerts
에서 Invoke 에러나 스로틀링에 대해서 알람 설정을 할 수 있다. 벌써 화면 포치 포치하지 않아도 돼!sererless.yml
custom:
alerts:
stages:
- ${opt:stage, self:custom.defaultStage}
alarms:
- functionErrors
- functionThrottles
plugins:
- serverless-plugin-aws-alerts
※一部省略してます
🐛 부작용
물론 아카이브하고 싶지 않은 채널도 때가 되면 아카이브해 줍니다. 수동으로 되돌립니다.
🐛 빠진 곳
Slack API를 원시로 두드리고 빠지는 경우가 있습니다. 채널 일람등은 취득할 수 있는데, channels.archive 메서드 를 부를 때만 에러가. 권한이 부족한가? 제대로 channels:write
도 Scope 설정했고, 그럴 리 없지만…
{'ok': False, 'error': 'missing_scope', 'needed': 'channels:write', 'provided': 'identify,bot:basic'}
분명히 아카이브와 같은 일부 작업은 BOT 사용자가 아닌 것 같습니다. 생각을 포기하고 Legacy 토큰을 사용했습니다.
나중에 조사한 결과 OAuth에서 액세스 토큰을 발행하는 것이 올바른 방법입니다.
Slack에서 업무 채널의 평온을 유지하는 봇, 그리고 인간의 토큰을 bot에게 주는 이야기 - Qiita
Slack에서 OAuth2를 사용할 때의 메모 - Qiita
Reference
이 문제에 관하여(이전 Slack 채널을 자동으로 아카이브하는 기능을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/saitotak/items/6f84de5218b71831ce2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Slack API를 원시로 두드리고 빠지는 경우가 있습니다. 채널 일람등은 취득할 수 있는데, channels.archive 메서드 를 부를 때만 에러가. 권한이 부족한가? 제대로
channels:write
도 Scope 설정했고, 그럴 리 없지만…{'ok': False, 'error': 'missing_scope', 'needed': 'channels:write', 'provided': 'identify,bot:basic'}
분명히 아카이브와 같은 일부 작업은 BOT 사용자가 아닌 것 같습니다. 생각을 포기하고 Legacy 토큰을 사용했습니다.
나중에 조사한 결과 OAuth에서 액세스 토큰을 발행하는 것이 올바른 방법입니다.
Slack에서 업무 채널의 평온을 유지하는 봇, 그리고 인간의 토큰을 bot에게 주는 이야기 - Qiita
Slack에서 OAuth2를 사용할 때의 메모 - Qiita
Reference
이 문제에 관하여(이전 Slack 채널을 자동으로 아카이브하는 기능을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/saitotak/items/6f84de5218b71831ce2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)