すべてのプロダクト
Search
ドキュメントセンター

Function Compute:イベントハンドラー

最終更新日:Aug 30, 2024

このトピックでは、Python環境のイベントハンドラーの構造について説明し、Pythonのイベントハンドラーの例を示します。

イベントハンドラーの署名Signatures for event handlers

次のサンプルコードでは、イベントハンドラーの署名について説明します。

def handler(event, context):
    return 'hello world'

パラメーターの説明:

  • handler: リクエストの処理に使用するメソッドの名前。 このメソッドは、Function ComputeコンソールRequest Handlerパラメーターに指定された値に対応します。 たとえば、Function Compute関数に設定されたハンドラーがmain.handlerの場合、function Computemain.pyで定義されているハンドラー関数を読み込み、ハンドラー関数から関数を実行します。

  • event: 関数を呼び出すときに渡すパラメーター。 Python 2.7ランタイム環境では、このパラメーターの値はSTRING型です。 Python 3ランタイム環境では、このパラメーターの値はBYTES型です。

  • context: Function Compute関数が呼び出されたときに提供されるランタイムコンテキスト。

例1: JSON形式のパラメーターの解析

サンプルコード

Function Computeは、設定したJSON形式のパラメーターを通過します。コード内のパラメーターを解析する必要があります。 次のサンプルコードは、JSON形式のイベントを解析する方法の例を示しています。

# -*- coding: utf-8 -*-
import json
def handler(event, context):
    evt = json.loads(event)
    return evt['key']

前提条件

関数の作成

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、目的の関数の名前をクリックします。

  4. [関数の詳細] ページで、[コード] タブをクリックし、コードエディターに前述のサンプルコードを入力し、[デプロイ] をクリックします。

    重要

    上記のサンプルコードでは、ハンドラーはindex.pyhandlerメソッドです。 関数のハンドラー設定が異なる場合は、実際のハンドラー設定を使用します。

  5. [コード] タブで、[テスト機能] の横にあるdownアイコンをクリックし、ドロップダウンリストから [テストパラメータの設定] を選択し、次のテストパラメータを入力して、[OK] をクリックします。

    {
      "key": "value"
    }
  6. [テスト関数] をクリックします。

    関数の実行後、実行結果が返されます。 実行結果はvalueです。

例2: 安全な方法で一時的なAccessKeyペアを使用したOSSリソースの読み取りと書き込み

サンプルコード

Function Computeが提供する一時キーペアを使用して、Object Storage Service (OSS) にアクセスできます。 次のコードを例として使用します。

import json
import oss2

def handler(event, context):
    evt = json.loads(event)
    creds = context.credentials
    # do not forget security_token
    auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
    bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
    bucket.put_object(evt['objectName'], evt['message'])
    return 'success'

一時的なAccessKeyペアは、creds = context.credentialscontextから取得できます。 これにより、秘密などの機密情報のハードエンコードが防止されます。

重要

サービスに設定されているロールに、Object Storage service (OSS) にアクセスする権限があることを確認します。 Resource Access Management (RAM) コンソールにログインし、OSSへのアクセス権限をロールに付与できます。

前提条件

関数の作成

手順

  1. Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。

  2. 上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。

  3. [関数] ページで、目的の関数の名前をクリックします。

  4. [関数の詳細] ページで、[コード] タブをクリックし、コードエディターに前述のサンプルコードを入力し、[デプロイ] をクリックします。

    重要

    上記のサンプルコードでは、ハンドラーはindex.pyhandlerメソッドです。 関数のハンドラー設定が異なる場合は、実際のハンドラー設定を使用します。

  5. [コード] タブで、[テスト機能] の横にあるdownアイコンをクリックし、ドロップダウンリストから [テストパラメータの設定] を選択し、次のテストパラメータを入力して、[OK] をクリックします。

    {
      "endpoint": "http://oss-cn-shenzhen-internal.aliyuncs.com",
      "bucket": "oss-********",
      "objectName": "oss-test-object",
      "message": "oss-test-content"
    }
  6. [テスト関数] をクリックします。

    関数の実行後、実行結果が返されます。 実行結果は成功です。

例3: 外部コマンドの実行

Pythonプログラムを使用して、外部コマンドを呼び出すforkプロセスを作成できます。 たとえば、Linuxでサブプロセスモジュールを使用してls -lコマンドを呼び出すことができます。 現在のディレクトリ内のファイルが返されます。 次のサンプルコードは例を示しています。

import os
import subprocess

def handler(event, context):
    ret = subprocess.check_output(['ls', "-l"])
    return ret