パラメーター
概要
AWS Lambda はサーバーレスコンピューティングサービスで、サーバーのプロビジョニングや管理、ワークロードに応じたクラスタースケーリングロジックの作成、イベント統合の維持管理、ランタイムの管理を行わずにコードを実行できるようにするものです。ColdFusion の AWS Lambda モジュールを使用すると、AWS Lambda 関数を呼び出すことができます。
AWS Lambda を使用した作業に取りかかるには、まず、CFML などの AWS でサポートされている任意の言語を使用して AWS で Lambda 関数を作成します。これで、ColdFusion の Lambda モジュールを使用して、これらの関数を呼び出すことができます。
詳しくは、AWS Lambda を参照してください。
はじめに
awslambda パッケージのインストール
Zip インストーラーを使用する場合に限り、Adobe ColdFusion(2021 リリース)はモジュール化されています。デフォルトでは、AWS Lambda のモジュールはインストールされません。最初の手順は、Lambda パッケージを ColdFusion にインストールすることです。
注意:GUI インストーラーを使用する場合、これらのパッケージは事前にインストールされています。
Lambda のパッケージは、awslambda という名前です。
awslambda パッケージをインストールするには、ColdFusion Administrator のパッケージマネージャーページを使用するか、以下の手順に従います。
<CF_HOME>/cfusion/bin に移動します。
次のコマンドを入力します。
- Windows:cfpm.bat
- Linux:cfpm.sh
install awslambda というコマンドを入力します。
AWS Lambda パッケージがインストールされるまで待ちます。
詳しくは、ColdFusion パッケージマネージャーを参照してください。
AWS Lambda にアクセスするための資格情報の取得
AWS を操作する場合、資格情報を検証し、リクエストしているリソースにアクセスするための権限を持っているかどうかをチェックするために、AWS セキュリティ資格情報を指定します。
AWS は、セキュリティ資格情報を使用して、リクエストを認証および承認します。
AWS アクセスキー ID および AWS シークレットアクセスキーを取得する必要があります。詳しくは、アクセスキーを参照してください。
クラウドサービス資格情報および設定の追加
Adobe ColdFusion(2021 リリース)には、様々なクラウドサービスにアクセスするためのオブジェクトを作成するためにハンドルを提供するメソッド getCloudService() があります。
サービスハンドルのシンタックスを次に示します。
service=getCloudService(cloudCred,cloudConfig)
このシンタックスの内容は、次のとおりです。
- cloudCred:クラウドサービスの資格情報を定義します。構造体または文字列です(資格情報エイリアスとも呼ばれます)。
- cloudConfig:クラウドサービス設定の詳細を定義します。構造体または文字列です(設定エイリアスとも呼ばれます)。
AWS 資格情報を獲得したら、次のいずれかの方法でこれらの資格情報を宣言する必要があります。その後でのみ、これらの資格情報を使用して Lambda オブジェクトを作成でき、それからそのオブジェクトを使用して Lambda メソッドを呼び出すことができます。
ColdFusion Administrator
資格情報の設定
ColdFusion Administrator で、データとサービス/クラウド資格情報をクリックします。
エイリアスは、クラウドサービスおよびその設定の詳細の名前付き表現です。ColdFusion Administrator を使用して設定エイリアスを設定できます。
詳細を入力したら、「資格情報を追加」をクリックします。
設定オプションの設定
ColdFusion Administrator で、データとサービス/クラウド設定をクリックします。
設定エイリアス、ベンダー、サービスの名前など、次の詳細を入力します。
設定オプションを追加した後、さらにいくつかのオプションを追加する必要がある場合があります。次に表示される画面で追加できます。場合によって追加する必要があるオプションを次に示します。
- リクエスト設定
- クライアント設定
- プロキシ設定
- 再試行ポリシー
- 再試行条件
詳しくは、クラウド設定オプションを参照してください。
オブジェクトの作成
Lambda 資格情報および設定オプションのエイリアスを作成したら、cloudService API を使用してオブジェクトを作成し、次のコードを CFM に含めることができます。
lambdaObject= getCloudService("lambdaCred", "lambdaConf")
Application.cfc
Application.cfc で Lambda 資格情報および設定オプションを指定できます。次に例を示します。
component { void function onApplicationStart(){ application.awsCred = { "alias" : "simple_lambda", "vendorName" : "AWS", "region" : "us-east-1", "secretAccessKey" : "xxxxxxxxxxxxxxxxx", "accessKeyId" : "xxxxxxxxxxxxxxxx" } application.lambdaConf = { "serviceName" : "LAMBDA" } } }
オブジェクトの作成
lambdaObject = getCloudService(application.awsCred, application.lambdaConf)
CFM ページ上
CFM ページでは、次に示す 4 つの方法のいずれかで Lambda 資格情報および設定オプションを指定できます。
資格情報エイリアスおよび設定エイリアス
Lambda 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService ハンドルでそれらのエイリアスを使用できます。
<cfscript> // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 lambda=cloudService("awsCred","lambdaConf") // 以下にコードを記述 ...........</cfscript>
資格情報エイリアスと設定オプション構造体
<cfscript> // 資格情報エイリアスとサービス設定構造体を使用 lambdaConf = { "alias":"simple_lambda", "serviceName" : "LAMBDA", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } lambdaObject= cloudService("awsCred", lambdaConf) // 以下にコードを記述 .....................</cfscript>
設定エイリアスと資格情報構造体
<cfscript> // 設定エイリアスとサービス資格情報構造体を使用 lambdaCred={ "vendorName":"AWS", "alias": "lambda_cred_alias", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access" } lambdaObject = cloudService(lambdaCred, "lambdaConf") // 以下にコードを記述 .....................................</cfscript>
資格情報と設定オプションの両方の構造体
<cfscript> // クラウドの資格情報と設定の構造体を使用 lambdaCred={ "vendorName":"AWS", "alias": "lambda_cred_alias", "region":"us-east-2", "accessKeyId": "access key", "secretAccessKey": "secret access key" } lambdaConf = { "alias":"lambda_conf_alias", "serviceName" : "LAMBDA", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } lambdaObject = cloudService(lambdaCred, lambdaConf ) // 以下にコードを記述 ...................................................................</cfscript>
Admin API
また、Admin API を使用して Lambda 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。
メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を以下に示します。
資格情報の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 資格情報構造体を定義 credentialStruct={ "alias" : "LambdaCredential", "vendorName" : "AWS", "region" : "us-east-2", "secretAccessKey" : "secret access key", "accessKeyId" : "access key" } // 資格情報の credentialStruct を追加 try{ cloudObj.addCredential(credentialStruct) writeOutput("Credentials added successfully") } catch(any e){ writeDump(e) } </cfscript>
設定の追加
<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject("component","cfide.adminapi.administrator") adminObj.login("admin") // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject("component","cfide.adminapi.cloud") // 設定構造体を定義 configStruct={ "alias":"LambdaConf", "serviceName":"LAMBDA", "clientOverrideConfig":{ "retryPolicy":{ "numRetries":4 } }, "httpClientConfig":{ "maxConnections":50 } } // 設定の configStruct を追加 try{ cloudObj.addServiceConfig(configStruct) writeOutput("Configuration service added successfully") } catch(any e){ writeDump(e) } </cfscript>
ColdFusion Lambda API
ListFunctions
Lambda 関数のリストを返します。
パラメーター
|
説明 |
masterRegion |
マスター関数の AWS リージョン。指定する場合は、functionVersion を ALL に設定する必要があります。 |
functionVersion |
ALL に設定すると、各関数の公開されたすべてのバージョンが対象に含まれます。 |
marker |
結果の次のページを返すページ分割トークンを定義します。 |
maxItems |
応答で返す関数の最大数。 |
詳しくは、ListFunctions を参照してください。
例
<cfscript> lambdaSrv = getCloudService(credentialsStruct, confStruct) // params = StructNew(); functionsList = lambdaSrv.ListFunctions() writeDump(functionsList) </cfscript>
InvokeFunction
Lambda 関数を呼び出します。関数は、同期的または非同期的に呼び出すことができます。
リクエストパラメーター
パラメーター |
説明 |
payload |
Lambda 関数への入力 JSON。 |
invocationType |
次のいずれかを選択します。
|
logType |
応答に実行ログを含めます。None か Tail のどちらかを選択します。 |
clientContext |
関数に渡す Base64 エンコードデータ。サイズ制限は 3583 バイトです。 |
例
<cfscript> lambdaSrv = getCloudService(credentialsStruct, confStruct) lambdaFunctionARN = "lambda-function-name|ARN|partialARN" requestOptions = { "InvocationType" = "RequestResponse|Event|DryRun" "LogType" = "Tail|None", "PayLoad" = "{Event-JSON-str}" } responseStatus = lambdaSrv.InvokeFunction(lambdaFunctionARN, requestOptions) </cfscript>