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

Function Compute:イベントハンドラ

最終更新日:Apr 01, 2026

このトピックでは、Function Compute の Python 関数におけるイベントハンドラの構造について説明し、一般的なシナリオ(JSON イベントの解析、一時的な認証情報による Object Storage Service (OSS) へのアクセス、外部コマンドの実行)のコード例を提供します。

ハンドラの署名

すべての Python イベントハンドラは、次の署名を使用します。

def handler(event, context):
    return 'hello world'
パラメータ説明
handler受信リクエストを処理するメソッドです。この名前は、Function Compute コンソールで構成された リクエストハンドラmain.handler に設定されている場合、Function Compute は main.py をロードし、そのファイル内で定義された handler 関数を呼び出します。
event関数が呼び出された際に渡される入力です。Python 2.7 では、値は str(STRING)型です。Python 3 では、値は bytes(BYTES)型です。
context呼び出し時に提供されるランタイムコンテキストです。これを使用して、一時的な認証情報やその他のランタイムメタデータにアクセスできます。

例 1:JSON イベントの解析

Function Compute はイベントデータを生のバイト列として渡します。個々のフィールドにアクセスする前に、json.loads() を使用してペイロードを解析してください。

# -*- coding: utf-8 -*-
import json

def handler(event, context):
    evt = json.loads(event)
    return evt['key']

前提条件

作業を開始する前に、次のものがあることを確認してください。

関数のテスト

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

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

  3. 関数 ページで、対象の関数名をクリックします。

  4. 関数の詳細 ページで、コード タブをクリックし、サンプルコードをコードエディタに貼り付けてから、デプロイ をクリックします。

    重要

    このサンプルコードでは、ハンドラは index.py 内の handler メソッドです。関数のハンドラ構成が異なる場合は、それに応じてコードを更新してください。

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

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

実行結果は value です。

例 2:一時的な認証情報を使用した OSS へのアクセス

context.credentials から取得した一時的な認証情報を使用して、Object Storage Service (OSS) にアクセスします。これにより、AccessKey ペアなどの機密情報をコード内にハードコードする必要がなくなります。

import json
import oss2

def handler(event, context):
    evt = json.loads(event)
    creds = context.credentials
    # 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'

context.credentials には次の 3 つのフィールドがあります。

フィールド説明
access_key_id一時的な AccessKey ID
access_key_secret一時的な AccessKey Secret
security_tokenSecurity Token Service (STS) トークン — oss2.StsAuth
重要

関数に割り当てられたロールには、Object Storage Service (OSS) へのアクセス権限が必要です。Resource Access Management (RAM) コンソールで権限を付与してください。

前提条件

作業を開始する前に、次のものがあることを確認してください。

関数のテスト

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

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

  3. 関数 ページで、対象の関数名をクリックします。

  4. 関数の詳細 ページで、コード タブをクリックし、サンプルコードをコードエディタに貼り付けてから、デプロイ をクリックします。

    重要

    このサンプルコードでは、ハンドラは index.py 内の handler メソッドです。関数のハンドラ構成が異なる場合は、それに応じてコードを更新してください。

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

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

実行結果は success です。

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

Python の subprocess モジュールを使用して、関数から Linux シェルコマンドを実行します。以下の例では、ls -l を実行し、ディレクトリの一覧を返します。

import os
import subprocess

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

subprocess.check_output() はコマンドを実行し、完了を待って出力をバイト列として返します。コマンドがゼロ以外のステータスで終了した場合、CalledProcessError が発生します。