こんにちは。CData Software Japanエンジニアの浦邊です。
本記事ではAWS LambdaでCData JDBC Driverを使用する方法を紹介します。
今回は例としてCData Salesforce JDBC Driverを使用します。
Salesforceの製品情報が格納されている「Product2」オブジェクトを参照し、入力した製品コードから製品名を取得します。
CData Salesforce JDBC Driverのインストール
CData Software Japan社のCData Salesforce JDBC Driverダウンロードページにアクセスしてください。
ダウンロードページの[ダウンロード 評価版]をクリックすると必要事項入力画面が表示されます。
必要事項を入力し、[ダウンロード]をクリックするとCData Salesforce JDBC Driver評価版のインストーラがダウンロードされます。
ダウンロードしたファイルをダブルクリックするとインストーラが起動しますので、ウィザードに従ってインストールしてください。
途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。
ライセンスサーバにアクセス出来ないネットワーク環境の場合は、CData Software Japan テクニカルサポートまでお問い合わせください。
テストシナリオ
データ取得対象の「Product2」オブジェクトの内容を以下に示します。
今回のテストではLambda関数に製品コード「GC3060」を入力し、「Product2」を参照してこのコードに該当する製品名「GenWatt Propane 1500kW」を取得します。
テストプログラム
Lambdaの関数として動作させるJavaプログラムを作成します。
テストプログラムではSalesforceの製品データが格納されている「Product2」オブジェクトを参照し、関数の入力値として指定した製品コードをもとに製品名を取得します。
また、今回は依存ライブラリの取得とパッケージングにMavenを使用します。
作成したJavaコード(GetProductName.java)とpom.xmlを以下に載せます。
Javaコード
テストプログラムは以下の3つのステップで構成されています。
- アカウント情報を設定しSalesforceに接続
- データを取得するクエリを発行
- 取得したデータを出力オブジェクトに設定
Lambda上でのライセンス認証にはRTK(ランタイムキー)が必要になります。
評価版のRTKはCDataサポートデスクまでお問い合わせください。
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class GetProductName implements RequestHandler
pom.xml
xmlns="http://maven.apache.org/POM/4.0.0"
xmlnsxsi="http://www.w3.org/2001/XMLSchema-instance"
xsischemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
lambda-test-01
test
jar
0.0.1-SNAPSHOT
com.amazonaws
aws-java-sdk-bom
1.11.156
pom
import
com.amazonaws
aws-java-sdk-s3
com.amazonaws
aws-lambda-java-core
1.1.0
com.amazonaws
aws-lambda-java-events
1.3.0
jdbc.cdata
cdata-salesforce
20.0.7632
org.apache.maven.plugins
maven-shade-plugin
3.0.0
package
shade
デプロイパッケージの作成
LambdaではJavaコードと依存関係を1つのjarファイルにまとめたものをデプロイパッケージとしてアップロードします。
リポジトリへのCData Driverの追加
デプロイパッケージにCData JDBC Driverを含めるために、ローカルにインストールされているCData JDBC Driverのjarをリポジトリに追加します。
以下のコマンドを実行してください。
mvn install:install-file -Dfile=<ドライバのファイルパス> -DgroupId= -DartifactId= -Dversion=<バージョン> -Dpackaging="jar" -DgeneratePom=true
実行例:
mvn install:install-file -Dfile="C:\Program Files\CData\CData JDBC Driver for Salesforce 2020J\lib\cdata.jdbc.salesforce.jar" -DgroupId="jdbc.cdata" -DartifactId="cdata-salesforce" -Dversion="20.0.7632" -Dpackaging="jar" -DgeneratePom=true
jarの作成
以下のコマンドでデプロイパッケージのjarを作成します。
mvn package
パッケージの作成に成功するとTargetフォルダにjarファイルが生成されます。
Lambda関数の作成と実行
AWS Lambdaのトップから[関数を作成]をクリックします。
[関数の作成]画面で関数の設定を行います。
今回は自前のコードを使用するため、オプションから[一から作成]を選択します。
[関数名]に適当な関数名を指定し、[ランタイム]にJava(バージョンは任意)を選択します。
設定が完了したら右下の[関数を作成]ボタンをクリックしてください。
jarパッケージのアップロード
[関数コード]セクションから[アクション]メニューを開き[.zipまたはjarファイルをアップロード]を選択します。
[アップロード]ボタンをクリックするとファイル選択画面が開きます。
作成したデプロイパッケージのjarファイルを選択し[保存]をクリックします。
ハンドラの指定
[Runtime settings]の[Edit]をクリックして[ランタイム設定]画面を開きます。
[ハンドラ]に作成したデプロイパッケージのクラス名とメソッド名を入力し[保存]をクリックします。
イベントの作成
続いてテストイベントを作成します。
テストイベントが選択されていない状態で[テスト]をクリックすると[テストイベントの設定]ダイアログが表示されます。
[イベント名]に任意の名前を入力し、関数の入力値を指定します。
今回は製品コード(ProductCode)を指定します。
入力が完了したら[作成]ボタンをクリックしてください。
関数の実行
作成したテストイベントが選択されていることを確認し[テスト]をクリックしてください。
実行が完了すると以下のように結果が表示されます。
指定した製品コード「GC3060」に該当する製品名「GenWatt Propane 1500kW」が取得できていることが確認できました。
タイムアウトエラーの対応
ドライバによる外部サービスへの接続には時間がかかる場合があります。
このとき以下のようにTask Timed Outのエラーが発生して実行に失敗することがあります。
このエラーが発生した際にはタイムアウトの時間を変更してください。
関数の[基本設定]セクションの[編集]をクリックし、[基本設定の編集]画面を開きます。
[タイムアウト]の時間を1分など長い時間に変更し、[保存]をクリックしてください。
おわりに
本記事ではAWS LambdaでCData JDBC Driverを使う方法を紹介しました。
CDataドライバを使うことでSalesforce, kintone, NetSuiteなど様々なクラウドサービスと連携する関数を効率的に作成することができます。
Lambdaでのクラウドサービス連携をご検討の方はぜひお試しください。
関連コンテンツ