ColdFusion AWS Lambda の基本を学ぶ

概要

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 = { &quot;alias&quot; : &quot;simple_lambda&quot;, &quot;vendorName&quot; : &quot;AWS&quot;, &quot;region&quot; : &quot;us-east-1&quot;, &quot;secretAccessKey&quot; : &quot;xxxxxxxxxxxxxxxxx&quot;, &quot;accessKeyId&quot; : &quot;xxxxxxxxxxxxxxxx&quot; } application.lambdaConf = { &quot;serviceName&quot; : &quot;LAMBDA&quot; } } }

オブジェクトの作成

lambdaObject = getCloudService(application.awsCred, application.lambdaConf)

CFM ページ上

CFM ページでは、次に示す 4 つの方法のいずれかで Lambda 資格情報および設定オプションを指定できます。

資格情報エイリアスおよび設定エイリアス

Lambda 資格情報および設定オプション用のエイリアスを作成したら、次に示すように、getCloudService ハンドルでそれらのエイリアスを使用できます。

<cfscript> // ColdFusion Administrator で資格情報エイリアスと設定エイリアスを定義 lambda=cloudService(&quot;awsCred&quot;,&quot;lambdaConf&quot;) // 以下にコードを記述 ...........</cfscript>

資格情報エイリアスと設定オプション構造体

<cfscript> // 資格情報エイリアスとサービス設定構造体を使用 lambdaConf = { &quot;alias&quot;:&quot;simple_lambda&quot;, &quot;serviceName&quot; : &quot;LAMBDA&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } lambdaObject= cloudService(&quot;awsCred&quot;, lambdaConf) // 以下にコードを記述 .....................</cfscript>

設定エイリアスと資格情報構造体

<cfscript> // 設定エイリアスとサービス資格情報構造体を使用 lambdaCred={ &quot;vendorName&quot;:&quot;AWS&quot;, &quot;alias&quot;: &quot;lambda_cred_alias&quot;, &quot;region&quot;:&quot;us-east-2&quot;, &quot;accessKeyId&quot;: &quot;access key&quot;, &quot;secretAccessKey&quot;: &quot;secret access&quot; } lambdaObject = cloudService(lambdaCred, &quot;lambdaConf&quot;) // 以下にコードを記述 .....................................</cfscript>

資格情報と設定オプションの両方の構造体

<cfscript> // クラウドの資格情報と設定の構造体を使用 lambdaCred={ &quot;vendorName&quot;:&quot;AWS&quot;, &quot;alias&quot;: &quot;lambda_cred_alias&quot;, &quot;region&quot;:&quot;us-east-2&quot;, &quot;accessKeyId&quot;: &quot;access key&quot;, &quot;secretAccessKey&quot;: &quot;secret access key&quot; } lambdaConf = { &quot;alias&quot;:&quot;lambda_conf_alias&quot;, &quot;serviceName&quot; : &quot;LAMBDA&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } lambdaObject = cloudService(lambdaCred, lambdaConf ) // 以下にコードを記述 ...................................................................</cfscript>

Admin API

また、Admin API を使用して Lambda 資格情報および設定オプションを追加することもできます。資格情報および設定を追加するためのメソッドは、cloud.cfc で使用できます。

メソッド addCredential(struct credential) および addServiceConfig(struct config) の使用例を以下に示します。

資格情報の追加

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) adminObj.login(&quot;admin&quot;) // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) // 資格情報構造体を定義 credentialStruct={ &quot;alias&quot; : &quot;LambdaCredential&quot;, &quot;vendorName&quot; : &quot;AWS&quot;, &quot;region&quot; : &quot;us-east-2&quot;, &quot;secretAccessKey&quot; : &quot;secret access key&quot;, &quot;accessKeyId&quot; : &quot;access key&quot; } // 資格情報の credentialStruct を追加 try{ cloudObj.addCredential(credentialStruct) writeOutput(&quot;Credentials added successfully&quot;) } catch(any e){ writeDump(e) } </cfscript>

設定の追加

<cfscript> // Administrator コンポーネントのオブジェクトを作成して login メソッドを呼び出す adminObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.administrator&quot;) adminObj.login(&quot;admin&quot;) // クラウドコンポーネントのオブジェクトを作成 cloudObj = createObject(&quot;component&quot;,&quot;cfide.adminapi.cloud&quot;) // 設定構造体を定義 configStruct={ &quot;alias&quot;:&quot;LambdaConf&quot;, &quot;serviceName&quot;:&quot;LAMBDA&quot;, &quot;clientOverrideConfig&quot;:{ &quot;retryPolicy&quot;:{ &quot;numRetries&quot;:4 } }, &quot;httpClientConfig&quot;:{ &quot;maxConnections&quot;:50 } } // 設定の configStruct を追加 try{ cloudObj.addServiceConfig(configStruct) writeOutput(&quot;Configuration service added successfully&quot;) } 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

次のいずれかを選択します。

  • RequestResponse(デフォルト):関数を同期的に呼び出します。関数が応答を返すかタイムアウトするまで、接続を開いたままにしておきます。API 応答には、関数の応答と追加のデータが含まれています。
  • Event:関数を非同期的に呼び出します。複数回失敗したイベントを関数の配信不能メッセージキューに送信します(配信不能メッセージキューが設定されている場合)。API 応答には、ステータスコードのみ含まれています。
  • DryRun:パラメーター値を検証し、関数を呼び出すための権限がユーザーまたは役割にあるかどうかを確認します。

logType

応答に実行ログを含めます。NoneTail のどちらかを選択します。

clientContext

関数に渡す Base64 エンコードデータ。サイズ制限は 3583 バイトです。

<cfscript> lambdaSrv = getCloudService(credentialsStruct, confStruct) lambdaFunctionARN = &quot;lambda-function-name|ARN|partialARN&quot; requestOptions = { &quot;InvocationType&quot; = &quot;RequestResponse|Event|DryRun&quot; &quot;LogType&quot; = &quot;Tail|None&quot;, &quot;PayLoad&quot; = &quot;{Event-JSON-str}&quot; } responseStatus = lambdaSrv.InvokeFunction(lambdaFunctionARN, requestOptions) </cfscript>

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン