【무료】CloudWatch의 알람을 Slack에 통지한다(Python판) 비망록

■ 소개



CloudWatch의 알람을 Slack에 알리는 방법에 관한 비망록.
Lambda 런타임은 python3.7.

■ 기본 설정에 대해



【참고】CloudWatch 알람 통지를 Slack로 한다
htps : // 이 m / hf7777 히 / ms / 0043f0fb7 22 000 f8

KMS는 20,000 요청의 무료 테두리가 있지만 KMS 키 관리 비용이 발생합니다.
KMS의 키 삭제는 최소 7일간의 보류 기간이 설정되므로 즉시 삭제할 수 없다.


■KMS를 사용하지 않는 설정에 대해



【참고】Lambda의 cloudwatch-alarm-to-slack에서 무료라고 생각해 KMS 암호화 키를 사용하면 2엔 걸렸으므로 함수 수정했다
htps : // m / hf7777 / ms / 6226 a 17 dfc17 a d9268c

환경 변수 "kmsEncryptedHookUrl"의 값을 Incoming Webhook URL로 설정합니다.


환경 변수에 설정하는 URL이 평문이 되었으므로, 코드를 수정.
(57행 당 2곳)

lamda_function.py
# The base-64 encoded, encrypted key (CiphertextBlob) stored in the kmsEncryptedHookUrl environment variable
###(1)次の行を修正###
HOOK_URL = os.environ['kmsEncryptedHookUrl'] 
#ENCRYPTED_HOOK_URL = os.environ['kmsEncryptedHookUrl']  #元のコードを一応記載。
# The Slack channel to send a message to stored in the slackChannel environment variable
SLACK_CHANNEL = os.environ['slackChannel']

###(2)次の行をコメントアウト###
#HOOK_URL = "https://" + boto3.client('kms').decrypt(CiphertextBlob=b64decode(ENCRYPTED_HOOK_URL))['Plaintext'].decode('utf-8')


■ 테스트용 데이터 샘플



【참고】[JAWS-UG CLI] Lambda:#17 Lambda cloudwatch-alarm-to-slack (Python판)
htps : // 코 m / tsh / ms / 아바 31b172 Kae 992 Aee b3

샘플 데이터.json
{
        "Records": [
          {
            "EventVersion": "1.0",
            "EventSubscriptionArn": "arn:aws:sns:EXAMPLE",
            "EventSource": "aws:sns",
            "Sns": {
              "SignatureVersion": "1",
              "Timestamp": "1970-01-01T00:00:00.000Z",
              "Signature": "EXAMPLE",
              "SigningCertUrl": "EXAMPLE",
              "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
              "Message": "{\"AlarmName\": \"testSlack\", \"NewStateValue\": \"NG\", \"NewStateReason\": \"test for Slack\"}",
              "MessageAttributes": {
                "Test": {
                  "Type": "String",
                  "Value": "TestString"
                },
                "TestBinary": {
                  "Type": "Binary",
                  "Value": "TestBinary"
                }
              },
              "Type": "Notification",
              "UnsubscribeUrl": "EXAMPLE",
              "TopicArn": "arn:aws:sns:EXAMPLE",
              "Subject": "TestInvoke"
            }
          }
        ]
}

좋은 웹페이지 즐겨찾기