Skip to main content
  1. Aws/

4.AWS Lambda+EventBridge設定

·313 words·2 mins·
Table of Contents

此文件說明利用EventBridge事件觸發Lambda執行發信程式

主要用到的服務
#

Lambda
#

AWS提供的程式執行代理服務,不用另外準備環境,就可以執行任何應用或後端程式。

支援服務清單,請參考 https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html#intro-core-components-event-sources

本身可以單獨執行,也可以透過事件、其他服務處發,簡單舉例:

  1. 搭配API Gateway,就可以將其變成一個API服務。

  2. 這次要說明的,利用EventBridge的事件,搭配發信的Lambda程式,變成一個事件通知服務


EventBridge
#

原先為CloudWatch下的"事件",後被獨立出去為單獨服務。

cloudwatch event

相較於常見的CloudWatch的日誌 (Status Log),只記錄狀態,事件更適合拿來做於一些執行結果、狀態判斷


設定說明
#

這裡同CodePipeline一樣,如同AWS大多數服務,都沒有規定建立的先後順序,差別只在於怎麼樣設定起來比較順手(不會覺得缺東缺西)。

這裡建議先建立Lambda,再建立EventBridge

Lambda
#

函數
#

lambda console view

建立函數
#

lambda create 1

  1. 設定基本資訊,如名稱、runtime(翻譯可能誤解)、執行環境架構(影響可用指令集)

    • :warning:部分語言不支援線上編輯程式,如.NET/.NET Core。

    • runtime、架構選定後無法更改,只能重建。

  2. 變更預設執行角色

    這裡根據權限管理,自行設定存取的角色

  3. 進階設定

    lambda create 2

程式碼
#

撰寫要執行的程式碼,可以利用"測試"進行串接其他服務前的測試

以下提供python的發信程式參考:

import boto3
import json
from botocore.exceptions import ClientError

def send_email(body):
    SENDER = "<sender mail>" # must be verified in AWS SES Email
    RECIPIENT = "<sender mail>" # must be verified in AWS SES Email

    # If necessary, replace us-west-2 with the AWS Region you're using for Amazon SES.
    AWS_REGION = "ap-northeast-1"

    # The subject line for the email.
    SUBJECT = "code pipeline update"

    # The email body for recipients with non-HTML email clients.
    BODY_TEXT = body

    # The HTML body of the email.
    BODY_HTML = """<html>
    <head></head>
    <body>
    <h1>Hey Hi...</h1>
    <p>This email was sent with
        <a href='https://aws.amazon.com/ses/'>Amazon SES CQPOCS</a> using the
        <a href='https://aws.amazon.com/sdk-for-python/'>
        AWS SDK for Python (Boto)</a>.</p>
    </body>
    </html>
                """

    # The character encoding for the email.
    CHARSET = "UTF-8"

    # Create a new SES resource and specify a region.
    client = boto3.client('ses',region_name=AWS_REGION)

    # Try to send the email.
    try:
        #Provide the contents of the email.
        response = client.send_email(
            Destination={
                'ToAddresses': [
                    RECIPIENT,
                ],
            },
            Message={
                'Body': {
                    #'Html': {
                    #    'Data': BODY_HTML
                    #},
                    'Text': {
                        'Data': BODY_TEXT,
                        'Charset': CHARSET
                    },
                },
                'Subject': {
                    'Data': SUBJECT,
                    'Charset': CHARSET
                },
            },
            Source=SENDER
        )
    # Display an error if something goes wrong.
    except ClientError as e:
        print(e.response['Error']['Message'])
    else:
        print("Email sent! Message ID:"),
        print(response['MessageId'])

def lambda_handler(event, context):
    s1 = "detail-type: " + event["detail-type"] + "\r\n"
    s2 = "source: " + event["source"] + "\r\n"
    s3 = "detail: " + json.dumps(event["detail"], indent=4, ensure_ascii=False)
    send_email(s1 + s2 + s3)
測試
#

建立一個測試事件/情境,可以選擇建立新事件,或是從實際執行事件中擷取做為測試JSON (這比較不推薦,因可能需要先開啟SNS服務擷取部分資料後才知道完整JSON架構)

lambda test


EventBridge安裝與設定
#

事件匯流排 Event Buses
#

這裡主要是提供使用者,用來規劃、自訂事件的分類,或是限定資源的使用等等,這裡拿default來用。

規則 Rules
#

建立規則
#
  1. 設定名稱與類型,這裡類型選擇事件模式(要擷取Pipeline的狀態)。

eventbridge rule step 1

  1. 建置事件模式,這裡分為四個區塊
    #

    1. 事件來源,為了搭配CodePipeline,選擇第一項"AWS 事件或 EventBridge 合作夥伴事件"。

      eventbridge step 2 event source

    2. 範例事件,選擇測試情境

      (可不選,不影響實際設定,用於第4區塊的事件測試)

      eventbridge step 2 event sample

    3. 建立方法

      這裡可以依照喜好選擇,最一開始什麼都不知道的推薦"使用模式表單",快速產生一個簡易的JSON。

      eventbridge step 2 event method

    4. 事件模式

      決定要使用何種服務/事件類型/狀態,這邊的版面會依據上一區塊的選擇而有所不同,此處展示為"使用模式表單"的畫面。

      eventbridge step 2 event mode

  2. 選取目標

    設定事件發生後,要去執行哪個服務,這裡選擇AWS服務 > Lambda 函數。

    若還未建立Lamb da,可先跳過。

    eventbridge step 3

  3. 設定標籤

    如同大部分服務都有tag可以設定,可略過。

  4. 檢閱和建立

    確認資料填寫正確後,按建立規則。

Related