æ¬è¨äºã¯
åºç¤ãã¶ã¤ã³ã¦ã£ã¼ã¯
5æ¥ç®ã®è¨äºã§ãã
ð
4æ¥ç®
â¶â¶ æ¬è¨äº â¶â¶
6æ¥ç®
ð»

- ã¯ããã«
- éçºããSlackBotã®æ¦è¦
- ä½¿ç¨æè¡
- å®è£ ã«é¢ãã¦å°ã£ããã¨
- å®éã«ç¨¼åããã¦
- ãããã«
ã¯ããã«
ããã«ã¡ã¯ï¼åºãã¶ã¦ã£ã¼ã¯5æ¥ç®ãæ å½ãããå ¥ç¤¾1å¹´ç®ã®æ¾å°¾ã¨ç³ãã¾ãã
çªç¶ã§ããéã®è²ãåãããããã¨ã¯ããã¾ããï¼éè¡äººã¨å復横跳ã³ãããã¢ã¬ã§ããå¾®ç¬ã¾ããä¸å¹ã§ãããå¿ããæã«ã¯ã§ããã°é¿ãããã§ãããã
ãããæ°äººæ¥åã®ã²ã¨ã¤ã§ããæ¯æ¥16æã®å® é é»è©±å¯¾å¿ã®éãåºå®é»è©±ã1å°ãããªããããç§ã¯é³´ãé¿ãé»è©±ã9åã®æ°äººã¨è²ãåããã¨ã«ãªãã¾ããäºæ ã¯ä¸å»ãäºããé»è©±ãé³´ã£ãå¾ã«ç¸è«ãããã¨ã¯ä¸å¯è½ã§ãã
ãã...æ¥åã§ä½¿ç¨ããSlackã«ã¦é»è©±å¯¾å¿ã«é¢ããéè¨ãåãã対å¿ã§ãã人ã®ã¿ã«ã¡ã³ã·ã§ã³ä»ããªãã¤ã³ããããBotããããã°ãã®ç¶æ³ãæç ´ã§ããã®ã«...ãï¼to be continued...

ã¨ãããã¨ã§ä»åã¯æ°äººæ¥åã®å¹çåãç®çã¨ãã¦SlackBotã®éçºãè¡ãã¾ããã
ã¾ãé å±3ã¶æç®é ã«ãªã³ãã¬ãµã¼ãã¼ã§åä½ããSlackBotãéçºããã¦ããããã®çµé¨ãæ´»ããã¤ã¤ä»å¾ã®æ¥åã§ä½¿ç¨ããAWSæè¡ã®ç é½ãã§ããªããã¨èããAWSä¸ã§åä½ããSlackBotã®éçºã«ææ¦ãããã¨ã«ãªãã¾ããã
ä»åã¯é å±4ã¶æã®æ°äººãPythonãAWSãæ´»ç¨ãã¦ã©ã®ãããªéçºãè¡ãªã£ãã®ãã¨ãã£ã話ããéçºãéãã¦ã©ã®ããã«æãããçããç´¹ä»ã§ããã°ã¨æãã¾ãã
éçºããSlackBotã®æ¦è¦
éçºããSlackBotã¯å¤§ããåãã¦2ã¤ã®æ©è½ãæãã¦ãã¾ãã
1ã¤ç®ã¯æ8:50ã«é»è©±å¯¾å¿ã®å¯ä¸å¯ãéè¨ããæ©è½ã対å¿å¯è½ãªäººã¯ã¹ã¿ã³ããæ¼ããä¸å¯è½ãªäººã¯çç±ãã¹ã¬ããã§æ¸ãè¾¼ãã«ã¼ã«ã¨ãã¦Botãã¡ãã»ã¼ã¸ãéä¿¡ãã¾ãããã®æ©è½ã«ãããç´åã«ãªã£ã¦èª°ã対å¿ã§ããªãï¼ãã¨ããç¶æ³ãé²ããã¨ãã§ãã¾ããï¼æ» å¤ã«ããã¾ããã...ãï¼
2ã¤ç®ã¯æã®éè¨ã§é»è©±å¯¾å¿å¯è½ãªäººã«ã®ã¿ã¡ã³ã·ã§ã³ãã¤ãã¦å¤æ¹15:45ã«ãªãã¤ã³ãããæ©è½ã§ããã¾ãæã®éç¥ã§èª°ãã¹ã¿ã³ããæ¼ãããåå¾ãããã®äººç©å®ã®ã¡ã³ã·ã§ã³ä»ãã¡ãã»ã¼ã¸ãBotãéä¿¡ãã¾ããæã®äºå®ããç¶æ³ãå¤ãã£ãå ´åãç«åè£ããå ´åã¯ã¹ã¬ããã§ç¸è«ããã«ã¼ã«ã¨ãã¦ãããåæ»ãªä½æ¥åæ ããµãã¼ããã¦ããã¾ãã

ä½¿ç¨æè¡
ä»åéçºããSlackBotã¯SlackAPIãPythonãAWSãå©ç¨ãã¦ãã¾ãã
é£ããèããã¾ããå½¹å²åæ
ããã¦ããã ãã§ããç°¡åã«èª¬æãã¦ããã¾ãã
SlackAPI
SlackAPIã¯ä»åã®å ´åãããã°ã©ã ã®ã³ã¼ãããSlackã«ã¡ãã»ã¼ã¸ãéä¿¡ããéã«å¿
è¦ã¨ãªãã¾ããPythonããSlackã¸ã®çªå£ã®ãããªã¤ã¡ã¼ã¸ã§ãã

Python
Pythonã¯ããã°ã©ãã³ã°è¨èªã®1ã¤ã§ããä»åã®SlackBotã«ããã¦ãåè¿°ã®SlackAPIã¯Pythonãä»ãã¦å¼ã³åºãããSlackã«ã¡ãã»ã¼ã¸ãéç¥ãããã¨ã«ãªãã¾ããåºæ¬çã«ãããããæ©è½ãä½ããããªãã¨ããçºæ³ã¯ããã°ã©ã ãéãã¦å®ç¾ãããã¨ã«ãªãã®ã§ãé常ã«éè¦ãªå½¹å²ãæ
ããã¨ã«ãªãã¾ãã
ä»åéçºããSlackBotã¯æã¨å¤æ¹ã§ããããã以ä¸ã®ãããªããã¼ã§åä½ãã¦ãã¾ãã

AWS
AWSã¯Amazonãæä¾ããã¯ã©ã¦ããµã¼ãã¹ã®ç·ç§°ã§ããPythonãæ¥æ¬¡ã§å®è¡ããã«ããã£ã¦ã使ç¨ããAWSãµã¼ãã¹ã¯ä»¥ä¸ã®éãã§ãã
- AWS Lambda
ä»åã¯Pythonãå®è¡ããããã«å©ç¨ã - Amazon EventBridge
AWS Lambdaãæ¥æ¬¡ã§èµ·åãããããã«å©ç¨ã - Amazon DynamoDB
Slackã¡ãã»ã¼ã¸ã«å¯¾ãã¦ä¸æã«å²ãæ¯ãããå¤ï¼ã¹ã¬ããå¤ï¼ãä¿åããããã«å©ç¨ã - AWS SecretsManager
SlackAPITokenãWebhookURLçã®ç§å¿ãã¹ãæ å ±ãå®å ¨ã«åç §ããããã«å©ç¨ã - Amazon CloudWatch Logs
åä½ã«é¢ãã¦åé¡ããªãã確èªããããã«å©ç¨ã
ãããã®AWSãµã¼ãã¹ãçµã¿åããã以ä¸ã®å³ã®ãããªæ§æã§AWSä¸ã«ã¢ããªã±ã¼ã·ã§ã³ããããã¤ãã¾ãããã¾ããããã¤ã®éã«ã¯ã³ã¼ãããAWSãªã½ã¼ã¹ã®ä½æãã§ããAWS CloudFormationã®æ¡å¼µãã¼ã«ãAWS SAMãå©ç¨ãã¦ãã¾ãã

å®è£ ã«é¢ãã¦å°ã£ããã¨
å®è£ ã«é¢ãã¦ããã¤ãå°ã£ããã¨ããã£ãã®ã§æ¸ãçãã¦ããã¾ãã
1. AWS Lambdaã®ããªã¬ã¼ã2ã¤æå®ã§ããªã
å½åãç¾æ§æã«ãããAmazon DynamoDBã®ç®æã¯Amazon SNSã¨Amazon SQSã«ããããã¡ã³ã¢ã¦ãæ§æã§å®ç¾ããã¤ããã§ãããã§ããAWS Lambdaã¯1ããªã¬ã¼ããã®ã¿å¼æ°ãåå¾ã§ããããããAmazon EventBridgeã¨Amazon SQSã®ä¸¡æ¹ãã弿°ãåå¾ããå½¢ã«ãªããã¾ãåä½ãã¾ããã§ããã
å°ãæã¦ã¦Slackãã£ã³ãã«ã§ç¸è«ãã¦ã¿ãã¨ãããå¼ç¤¾ã®ãããæ¹ã ï¼Japan AWS Top Engineerã¨Japan AWS Ambassadorï¼ããã¢ããã¤ã¹ãé ããAmazon DynamoDBã§ã®å®è£ ã«è½ã¡çãã¾ããã
çµãã£ã¦ã¿ãã°å¥ã®ææ®µã§ããããã¨ããåç´ãªè©±ã§ã¯ããã¾ããã人ã«ç¸è«ããªãã¨è¦éççªã«é¥ã£ã¦ãã¾ãã¾ããã

2. æéããããã
Amazon EventBridgeã§æ¥æ¬¡å®è¡ããããã«æã®AWS Lambdaã®å®è¡ã8:50ã夿¹ã®AWS Lambdaã15:45ã«è¨å®ããã®ã§ããããªããæéããºã¬ã¦ãã¾ãåºæ¥äºãããã¾ãããããã¯AWSãä¸å¾ã§UTCï¼åå®ä¸çæï¼ãæ¡ç¨ãã¦ãããæ
ã«çºçãã¦ãããæ£ããã¯9æéã®æå·®ãèæ
®ãã¦æéãè¨å®ãã¦ããå¿
è¦ãããã¾ãã
ã¾ãAWS Lambdaå ã§æ¥ä»ãåå¾ãã¦Amazon DynamoDBã®ãã¼ã¨ãã¦ä½¿ç¨ããæ§æã«ããã¦ããåæ§ã«æå·®ã«ãããºã¬ãçºçãã¾ãããæã®AWS Lambdaã®èµ·åæå»ãUTC8:50ã«æå®ãããã¨ã«ãããJSTã§ã¯åæ¥ã®23:50ã¨ãªã£ã¦ãã¾ãæ¥ä»ã1æ¥åãºã¬ã¦ãã¾ãããæå»ã§ã¯ãªãæ¥ä»ã§æ±ã£ã¦ããããæ°ã¥ãã«ããé¨åã§ããããAWSã§æéãã¼ã¿ãæ±ãéã¯JSTã§ã¯ãªãUTCã¨ãªããã¨ã念é ã«ç½®ãã¹ãã§ããã
UTCãèæ ®ããå¿ è¦æ§ã¯ããã¾ã§ã®äººçã§æãããã¨ãç¡ãã£ãã®ã§ã仿´ãªããæ±ããµã¼ãã¹ã®è¦æ¨¡ã®å¤§ããã«å°ãã®æåãè¦ãã¾ããã

3. ã³ã¼ãã«åé¡ããªãã®ã«AWS Lambdaã失æãã
ãããå®ç§ã ï¼ã¨æã£ã¦ãããã¤ããã«ãé¢ãããããã£ã¨AWS Lambdaã®å¦çã失æããåºæ¥äºãããã¾ããã
çµè«ã¨ãã¦ã¯ãã ã¿ã¤ã ã¢ã¦ããã¦ããã ããªã®ã§ããããªããªãçç¸ã«è¾¿ãã¤ããè¦å´ãã¾ãããã©ãããAWS Lambdaã¯ã¿ã¤ã ã¢ã¦ãã®ããã©ã«ãå¤ã3.0ç§ãªã®ã«å¯¾ããAmazon DynamoDBãåç §ãããã¨ã§AWS Lambdaå ¨ä½ã®å¦çæéã4.0ç§ç¨åº¦ããã£ã¦ãã¾ã£ã¦ããããã§ããéçºæã®ç§ã¯ãããã©ã«ãå¤ã3.0ç§ãªãAWSã«ãããã»ã¨ãã©ã®å¦çã¯3.0ç§ä»¥å ã«çµããã®ã ãããã¨åéãããã¦ãããç°¡åãªä¿®æ£ãããªãã¾ã¾æéãæ¶è²»ãã¦ãã¾ãã¾ããã
å®éã«ç¨¼åããã¦
éçºããSlackBotã稼åããã¦ããã¨ãããã®ãé»è©±ãé³´ã£ãéã«æ°äººã䏿ã«ç«ã¡ä¸ããå æ¯ã¯è¦ãªããªãã¾ããããã®æç¹ã§å½åã®ç®çã¯éæãã¦ããã®ã§ãããä»ã«ã以ä¸ã®ãããªæ©æµããã£ãã¨æãã¾ããã
- 対å¿è 以å¤ãé»è©±ã«æ³¨æãå²ãå¿ è¦ããªããªã£ããããèªåã®æ¥åã«éä¸ãããã¨ãã§ããããã«ãªã£ãã
- 誰ãåºç¤¾ãã¦ããããå¤å¥ãããããªããã³ãã¥ãã±ã¼ã·ã§ã³ãåãããããªã£ãã
- æ¯æ¥éç¥ãæ¥ããããæ°äººã®Slackãã£ã³ãã«ãæ´»æ§åããã
- 誰ã対å¿ãããæç¢ºã«ãªã£ãã®ã§ãçå ããè¡åãè©ä¾¡ãããããªã£ãã

ã¾ãAWSæè¡ç é½ã®ããéçºã«ææ¦ãã¦ã以ä¸ã®ãããªç¹ããæé·ãã§ããã¨æãã¾ããã
- 0ããAWSãªã½ã¼ã¹ã®æ§æãçµã¿ç«ããã¨ãã§ããã
- ã³ã¼ãããAWSãªã½ã¼ã¹ã使ããéç¨ã§AWSãµã¼ãã¹ã®ç´°ããªä»æ§ã調æ»ãã¦ãå®éã«ä½æãããã¨ãã§ããã
- AWS CloudWatchLogsãè¦ã¦ãã©ã®ãªã½ã¼ã¹ã®ã©ã®é¨åã§åé¡ãçãã¦ãããèªåãªãã®è¦å½ãã¤ããããããã«ãªã£ãã

ãããã«
AWSã¯è³æ ¼è©¦é¨ãè±å¯ã§ã¤ã³ãããã®ææ®µã«ã¯å°ããªãã¨æãã¾ããã§ããã¢ã¦ããããã®æ©ä¼ãæ´ããã¨ã¯é£ããå°è±¡ã§ãããã®ããAWSãµã¼ãã¹ãçµã¿åããã¦å®éã«ç¨¼åãããã¨ããçµé¨ãæ°äººã®ãã¡ã«ã§ãããã¨ã¯ãæ¬å½ã«å¹¸éã ã£ãã¨æãã¾ãã
æ¬çµé¨ãéãã¦å¤§åã ã¨æãããã¨ã¯ä»¥ä¸ã®3ã¤ã§ãã
1. ãã¼ãªã¹ã¯ã§ææ¦ã§ããæ©ä¼ã¯è²´éãæ±ºãã¦éããªã
2. æ¹éãæ±ºãããã¾ãã¯æèè
ã«ç¸è«ã責任ãä¼´ããããªãä¸å¸ã«ç¸è«ãæ°äººã¯ã¨ãã¨ããªã¹ã¯ãåé¿ãã¹ãã
3. ç¡é§ãªçµé¨ã¯ãªãã
以ä¸ã§ããæ°äººã®çãããå ±ã«é å¼µãã¾ãããï¼ããã§ã¯ã