関数の作成
Function Compute コンソール にログインします。
左のナビゲーションペインより作成したサービスを選択し、サービスのページに移動します。
[関数の作成] をクリックして [関数の作成] ページに移動します。
[すべて選択] をクリックして、ドロップダウンリストより「nodejs8」または 「python2.7」を選択します(例で取り扱われている言語)。
[空の関数] にある [選択] をクリックします。
[トリガータイプ] ドロップダウンリストより [トリガーなし] を選択します。
[サービス名]、[関数名]、[関数の説明]、[ランタイム]、およびランタイム環境のパラメータを設定します。
[次へ] をクリックします。
正しく設定していることを確認して、[作成] をクリックします。
関数の記述
関数コード内で MySQL 操作を行うには、サードパーティ製モジュールを使用する必要があります。関数ハンドラのあるディレクトリにモジュールをダウンロードします。同ディレクトリのモジュールおよび関数をパッケージ化して、Function Compute にパッケージをアップロードします。サードパーティ製モジュールをパッケージ化する方法については、「サードパーティ製依存関係のインストール」をご参照ください。
コード内のホストは、イントラネット IP アドレスです。IP アドレスは、RDS コンソール で確認します。
以下のセクションでは、Python 2.7 および Nodejs8 を使用したコードをパッケージ化およびアップロードする方法について説明します。
Python 2.7
コードおよび依存モジュールを格納するディレクトリを作成します。
mkdir /tmp/code
「/tmp/code」ディレクトリに依存モジュールをインストールします。
cd /tmp/code
pip install --install-option="--install-lib=$(pwd)" PyMySQL
「/tmp/code」ディレクトリに PyMySQL がインストールされています。
新規にコードファイルを作成します(たとえば、「/tmp/code/main.py」)。コードには pymysql を使用します。
# -*- coding: utf-8 -*-
import pymysql.cursors
# データベースに接続
connection = pymysql.connect(
host=<host-name>,
user=<user-name>,
password=<password>,
db=<database-name>,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
def handler(event, context):
with connection.cursor() as cursor:
# レコードを 1 つ読み取る
sql = "SELECT count(*) FROM `users`"
cursor.execute(sql)
result = cursor.fetchone()
print(result)
return result
インストール後の「/tmp/code」ディレクトリの内容は、次のとおりです。
ls /tmp/code
PyMySQL-0.7.11.dist-info main.py pymysql
[コード設定] 欄で [フォルダーのアップロード] を選択し、「/tmp/code」フォルダをアップロードします。
Nodejs
コードおよび依存モジュールを格納するディレクトリを作成します。
mkdir /tmp/code
「/tmp/code」ディレクトリに依存モジュールをインストールします。
cd /tmp/code
npm install mysql
新規にコードファイルを作成します(たとえば、「/tmp/code/index.js」)。コードには mysql を使用します。
var mysql = require('mysql');
module.exports.handler = (event, context, callback) => {
var connection = mysql.createConnection({
Host: <host-name>,
user: <user-name>,
password: <password>,
database : <database-name>
});
connection.query('SELECT count(*) FROM `users`', (error, results, fields) => {
if (error) throw error;
connection.end((err) => {
callback(err, results);
});
});
};
ファイル保存後の「/tmp/code」ディレクトリの内容は、次のとおりです。
ls /tmp/code
index.js node_modules
[コード設定] 欄で [フォルダーのアップロード] を選択し、「/tmp/code」フォルダをアップロードします。関数を実行して結果を確認します。
関数の検証
コンソールで [実行] をクリックして関数の実行結果を確認します。以上で、作成した関数は VPC 内の RDS インスタンスにアクセスすることができます。
不明な点がありましたら、チケットを起票し、サポートセンターへお問い合わせください。