edit-icon download-icon

3. 関数を作成して検証

最終更新日: Feb 13, 2020

関数の作成

  1. Function Compute コンソール にログインします。

  2. 左のナビゲーションペインより作成したサービスを選択し、サービスのページに移動します。

  3. [関数の作成] をクリックして [関数の作成] ページに移動します。

    1. [すべて選択] をクリックして、ドロップダウンリストより「nodejs8」または 「python2.7」を選択します(例で取り扱われている言語)。

    2. [空の関数] にある [選択] をクリックします。

    3. [トリガータイプ] ドロップダウンリストより [トリガーなし] を選択します。

    4. [サービス名]、[関数名]、[関数の説明]、[ランタイム]、およびランタイム環境のパラメータを設定します。

    5. [次へ] をクリックします。

    6. 正しく設定していることを確認して、[作成] をクリックします。

関数の記述

関数コード内で MySQL 操作を行うには、サードパーティ製モジュールを使用する必要があります。関数ハンドラのあるディレクトリにモジュールをダウンロードします。同ディレクトリのモジュールおよび関数をパッケージ化して、Function Compute にパッケージをアップロードします。サードパーティ製モジュールをパッケージ化する方法については、「サードパーティ製依存関係のインストール」をご参照ください。

コード内のホストは、イントラネット IP アドレスです。IP アドレスは、RDS コンソール で確認します。

以下のセクションでは、Python 2.7 および Nodejs8 を使用したコードをパッケージ化およびアップロードする方法について説明します。

Python 2.7

  1. コードおよび依存モジュールを格納するディレクトリを作成します。

    1. mkdir /tmp/code
  2. 「/tmp/code」ディレクトリに依存モジュールをインストールします。

    1. cd /tmp/code
    2. pip install --install-option="--install-lib=$(pwd)" PyMySQL

    「/tmp/code」ディレクトリに PyMySQL がインストールされています。

  3. 新規にコードファイルを作成します(たとえば、「/tmp/code/main.py」)。コードには pymysql を使用します。

    1. # -*- coding: utf-8 -*-
    2. import pymysql.cursors
    3. # データベースに接続
    4. connection = pymysql.connect(
    5. host=<host-name>,
    6. user=<user-name>,
    7. password=<password>,
    8. db=<database-name>,
    9. charset='utf8mb4',
    10. cursorclass=pymysql.cursors.DictCursor)
    11. def handler(event, context):
    12. with connection.cursor() as cursor:
    13. # レコードを 1 つ読み取る
    14. sql = "SELECT count(*) FROM `users`"
    15. cursor.execute(sql)
    16. result = cursor.fetchone()
    17. print(result)
    18. return result
  4. インストール後の「/tmp/code」ディレクトリの内容は、次のとおりです。

    1. ls /tmp/code
    2. PyMySQL-0.7.11.dist-info main.py pymysql

[コード設定] 欄で [フォルダーのアップロード] を選択し、「/tmp/code」フォルダをアップロードします。

Nodejs

  1. コードおよび依存モジュールを格納するディレクトリを作成します。

    1. mkdir /tmp/code
  2. 「/tmp/code」ディレクトリに依存モジュールをインストールします。

    1. cd /tmp/code
    2. npm install mysql
  3. 新規にコードファイルを作成します(たとえば、「/tmp/code/index.js」)。コードには mysql を使用します。

    1. var mysql = require('mysql');
    2. module.exports.handler = (event, context, callback) => {
    3. var connection = mysql.createConnection({
    4. Host: <host-name>,
    5. user: <user-name>,
    6. password: <password>,
    7. database : <database-name>
    8. });
    9. connection.query('SELECT count(*) FROM `users`', (error, results, fields) => {
    10. if (error) throw error;
    11. connection.end((err) => {
    12. callback(err, results);
    13. });
    14. });
    15. };
  4. ファイル保存後の「/tmp/code」ディレクトリの内容は、次のとおりです。

    1. ls /tmp/code
    2. index.js node_modules

    [コード設定] 欄で [フォルダーのアップロード] を選択し、「/tmp/code」フォルダをアップロードします。関数を実行して結果を確認します。

関数の検証

コンソールで [実行] をクリックして関数の実行結果を確認します。以上で、作成した関数は VPC 内の RDS インスタンスにアクセスすることができます。

不明な点がありましたら、チケットを起票し、サポートセンターへお問い合わせください。