Lambda에서 WebHook을 사용하여 Slack에 메시지를 보냅니다.

이번 주제



WebHook을 사용하여 Slack에 메시지를 표시합니다.

Slack에 POST 해보기



이쪽을 참고로 했습니다.
Slack에 incoming webhook을 통해 파이썬에서 메시지 POST

lambda_function.py
import requests
import json

def lambda_handler(event, context):
    # slack送信Sample
    requests.post('webhookのURL', data = json.dumps({
        'text': 'Test\r\nHello Slack', # 投稿するテキスト
        'username': 'python_slack', # 投稿のユーザー名
        'link_names': 1, # メンションを有効にする
        'channel': 'test', # チャンネル
        'icon_emoji': 'icon', # アイコン
    }))

그런 다음 아래와 같은 오류가 로그에 출력되었습니다.
Syntax error in module 'lambda_function': Non-ASCII character '\xe9' in file /var/task/lambda_function.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details (lambda_function.py, line 4)

분명히 UTF-8 지정하지 않고 일본어가 있으면 오류가되는 것 같습니다 ...
그래서 다음과 같은 소스로 변경했습니다.

lambda_function.py
# coding: UTF-8
import requests
import json

def lambda_handler(event, context):
    # slack送信Sample
    requests.post('webhookのURL', data = json.dumps({
        'text': 'Test\r\nHello Slack', # 投稿するテキスト
        'username': 'python_slack', # 投稿のユーザー名
        'link_names': 1, # メンションを有効にする
        'channel': 'test', # チャンネル
        'icon_emoji': 'icon', # アイコン
    }))

머리에 UTF-8을 지정하는 한 줄을 추가. 저장하고 다시 테스트를 실행합니다.
Unable to import module 'lambda_function': No module named requests

다른 오류가 발생했습니다 ...

【AWS】Lambda에서 pip하고 싶을 때 할 일
여기를 참고로 requests를 올리도록 합니다.

VS Code를 사용하여 디렉토리에 requests 넣기


  • 위에서 작성한 소스에서 py 파일을 만들고 VS Code에서 엽니 다.
  • VS Code의 터미널을 열고, pip install requests -t . 실행합니다.

  • 작업 폴더 압축




    이 계층을 통째로 압축합니다. 1개 위의 계층에서 폴더를 압축해 올리는 방법도 있는 것 같습니다만, 알기 쉽고 이쪽을 압축합니다.
    이름은 우선 slack.zip 라고 했습니다.

    zip 업로드



    AWS로 돌아가서 코드 항목 유형에서 .ZIP 파일 업로드를 선택합니다.


    함수 패키지 업로드를 선택하고 이전 압축 파일을 선택합니다.


    파일을 선택한 후 저장을 누릅니다.


    또한 오류 ...





    분명히 핸들러를 제대로 설정할 필요가있는 것 같습니다 ...
    설정할 py의 파일 이름 (이번에는 slack.py이므로 slack)과 실행할 함수 이름을 입력하고,
    다시 압축 파일을 업로드합니다.


    업로드가 완료되었으므로 테스트 실행



    내용을 깔끔한 설정 내용으로 변경하고 실행합니다.

    lambda_function.py
    # coding: UTF-8
    import requests
    import json
    
    def lambda_handler(event, context):
        # slack送信Sample
        requests.post('webhookのURL', data = json.dumps({
            'text': 'Test\r\nHello Slack', # 投稿するテキスト
            'username': 'python_slack', # 投稿のユーザー名
            'link_names': 1, # メンションを有効にする
            'channel': 'test', # チャンネル
            'icon_emoji': 'icon', # アイコン
        }))
    

    Slack에 나왔다! !

    좋은 웹페이지 즐겨찾기