アクションの作成

Prev Next

VPC環境で利用できます。

NAVERクラウドプラットフォームコンソールの Cloud Functions > Actionでアクションを作成できます。アクションを作成する方法は次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、i_menu > Services > Compute > Cloud Functionsメニューを順にクリックします。
  2. Actionメニューをクリックします。
  3. [Action作成] ボタンをクリックします。
  4. 作成するアクションの内容を設定します。
    • 基本情報: 所属パッケージ、アクションタイプ、名前、説明を設定
    • ソースコード: コンソールでコードを選択した言語で直接作成するか、コードファイルをアップロード
    • デフォルトパラメータ: アクションに使用するデフォルトパラメータコードを作成
    • VPC接続情報: VPCリソースにアクセスするための VPC、Subnetを設定
    • オプション設定: アクションのメイン関数名、メモリ、タイムアウト、ウェブアクションを設定
  5. [保存] ボタンをクリックします。

基本情報

アクションを作成するために基本的に必要な情報を設定します。基本情報の各項目に関する説明は次の通りです。

  • パッケージ: アクションが属するパッケージをクリックして選択。新しいパッケージを作成して含めるには、 [+作成] ボタンをクリック
  • タイプ: アクションの種類をクリックして選択
    • 一般アクション: デフォルトアクションタイプで1つのアクションを実行
    • ウェブアクション: 1つのアクションを実行し、API Gatewayトリガーの HTTP方式と連携して HTTPリクエスト、レスポンスを処理
    • シーケンスアクション: 複数のアクションを関連付けて順次実行
    • シーケンスウェブアクション: 複数のウェブアクションを関連付けて順次実行
  • 名前: アクション名を英字の大小文字、数字、記号( _ 、- )を組み合わせて入力。ただし、先頭の文字に記号「-」は使用できず、他のリソース(パッケージ、アクション、トリガー)名と重複不可
    • 例えば、パッケージ名が package_name、アクション名が action_name の場合、パッケージに属するアクション名の形式は次の通りです:
      • package_name/action_name
  • 説明: 作成するアクションについての説明を入力
参考
  • パッケージを選択せず所属するパッケージがないステータスでもアクションを作成できますが、パッケージを作成してアクションをパッケージに含めることをお勧めします。
  • ウェブアクションの詳細な設定や使用方法は、API Gatewayトリガーをご参照ください。
  • シーケンスタイプまたはシーケンスウェブアクションを設定する方法は、シーケンスアクションをご参照ください。
  • アクションのタイプと名前は変更できないことにご注意ください。

ソースコード

アクションコードは、希望する言語でコンソールで直接作成するか、コードファイルをアップロードします。コードの作成時に実行時点のランタイムパラメータを設定しないと、パッケージや関連付けられたトリガー、アクションのデフォルトパラメータが使用されます。ランタイムパラメータの他にも、追加設定に対するコードを別途作成しない場合は、関連設定はデフォルト値が適用されます。作成後に変更できない値もあることに注意して作成してください。ソースコードの各項目に関する説明は次の通りです。

  • ランタイム: ソースコードが実行される言語とバージョン環境をクリックして選択
参考

各言語ごとに推奨バージョンを選択できます。他のバージョンを選択するには、othersをクリックしてご確認ください。

  • タイプ: ソースコードを作成する方法をクリックして選択
    • コード: コンソールで直接作成
    • ファイル: 作成したソースコードファイルを**マウスでファイルをドラッグするか、ここをクリックします。**をクリックしてアップロード
注意
  • Javaコードはコンソールで直接作成できません。コンパイルして JARファイルでアップロードします。
  • .netコードは、ZIP形式のファイルでのみアップロードできます。

作成のユースケース

パラメータの Paramsを取得して Paramsに Nameと Placeが存在する場合はその文字列を返し、存在しない場合は Worldと Ncloudを返すアクションのソースコードの言語別作成のユースケースです。ソースコードの作成時にご参照ください。

参考

ZIPや JARファイルでアップロードするコードの場合、作成方法が定められています。作成ガイドを必ず参照して作成してください。

  • Node.js

    function main(params) {
        var name = params.name || 'World';
        var place = params.place || 'Ncloud';
        return {payload:  'Hello, ' + name + ' in ' + place + '!'};
    }
    
  • Python 3

    def main(args):
        name = args.get("name", "World")
        place  = args.get("place", "Ncloud")
        return {"payload": "Hello, " + name + " in " + place + "!"}
    
  • Swift 3.1.1

    func main(args: [String:Any]) -> [String:Any] {
        let name = args["name"] ?? "World"
        let place = args["place"] ?? "Ncloud"
        return  [ "payload" : "Hello, \(name) in \(place)"]
    }
    
  • PHP 7

    <?php
    function main(array $args) : array
    {
        $name = $args["name"] ?? "World";
        $place = $args["place"] ?? "Ncloud";
        return ["greeting" => "Hello, $name in $place!"];
    }
    ?>
    
  • Java 8

    import com.google.gson.JsonObject;
    
    public class Hello {
        public static JsonObject main(JsonObject args) {
            String name = "World";
            String place = "Ncloud";
            if (args.has("name"))
                name = args.getAsJsonPrimitive("name").getAsString();
            if (args.has("place"))
                place = args.getAsJsonPrimitive("place").getAsString();
    
            JsonObject response = new JsonObject();
            response.addProperty("payload", "Hello, " + name + " in " + place + "!");
            return response;
        }
    }
    

デフォルトパラメータ

アクションを実行するたびにパラメータを転送する代わりに、アクションにデフォルトで適用可能なデフォルトパラメータを入力できます。アクションのデフォルトパラメータは、パッケージパラメータより適用の優先順位が高く、トリガーパラメータとアクションの実行時点に転送されるランタイムパラメータよりは優先順位が低いです。ただし、暗号化設定を使用する場合は複合化したパラメータを最も優先して適用します。デフォルトパラメータの各項目に関する説明は、次の通りです。

cloudfunctions-basicaction-vpc_03_ko

  • 入力ボックス: JSON形式で入力

JSON形式のデフォルトパラメータのサンプルコードは、次の通りです。

{
  "name": "NCloud",
  "place": "Cloud Function"
}

サンプルコード

function main(params) {
  let name = params.name || "World";
  let place = params.place || "Naver";
  return {payload:  "Hello, " + name + " in " + place + "!"};
}

実行結果

{"payload":"Hello, NCloud in Cloud Function!"}

デフォルトパラメータの暗号化

アクションに必要なデータを安全に使用するには、アクションのデフォルトパラメータの暗号化設定を通じて Key Management Serviceと連携できます。Key Management Serviceは、ユーザーの重要なデータを暗号化するために使用したキーを厳格で安全なポリシーの下で保護する NAVERクラウドプラットフォームのサービスです。

アクションデフォルトパラメータの暗号化設定では、Key Management Serviceの安全なキー管理サービスを利用し、アクションに使用するデータを暗号化して安全に保存し、アクションが実行される時には簡単に復号化されたデータを使用できます。

参考
  • デフォルトパラメータの暗号化設定は VPCプラットフォームのみサポートします。
  • Key Management Serviceの詳しい使用方法は、Key Management Serviceご利用ガイドをご参照ください。
  • Key Management Serviceのご利用の申し込み時に別途の料金が発生します。
    Key Management Serviceの紹介と料金プランに関する説明は、Key Management Service紹介をご参照ください。
  • Cloud Functionsのデフォルトパラメータは、Key Management Serviceの中から「AES-256」タイプのキーをマスターキーとして使用して暗号化します。データの性質によって AES-256対称キーを通じた暗号化/復号化が適切でないと判断される場合は、別途のデータ保護方式を適用します。
  • 収束暗号化(Convergent Encryption)方式が設定されたキーはサポートしません。
  • デフォルトパラメータの暗号化設定の使用時に復号化されたパラメータの優先順位が最も高く適用されます。
  • Key Management Serviceのキーは、キー境界によってグローバル(Global)キーとリージョン隔離キーに分けられます。グローバルキーはすべてのリージョンでサポートし、リージョン隔離キーは韓国と日本リージョンでのみサポートします。リージョン隔離キーの詳しい説明は、Key Management Serviceのキー隔離をご参照ください。
注意
  • 要配慮情報を表示しないため、復号化されたパラメータをログとして記録したり、アクションの実行結果に含めないことをお勧めします。

使用例

  1. デフォルトパラメータ領域に使用するデータの JSON形式に合わせて作成します。作成した JSONデータの中から depthが1である stringタイプのデータのみ暗号化をサポートします。

cloudfunctions-basicaction-vpc_04_ko(1)

  1. 暗号化設定を ONに変更し、使用する NCloud Key Management Serviceのキー境界を選択します。境界選択領域は隔離キーをサポートする韓国、日本リージョンでのみ表示され、それ以外の環境では基本的にグローバルキーが表示されます。リージョン隔離キーの詳しい説明は、Key Management Serviceのキー隔離をご参照ください。

cloudfunctions-basicaction-vpc_05_ko(1)

  1. 使用する NCloud Key Management Serviceの AES-256タイプキーを選択します。キーはアクションごとに1つ選択できます。

cloudfunctions-basicaction-vpc_06_ko(1)

  1. 暗号化するデフォルトパラメータの JSONキーを選択して [適用] ボタンをクリックします。

cloudfunctions-basicaction-vpc_07_ko(1)

  1. 選択した JSONキーに該当するデフォルトパラメータが暗号化され、パラメータキー領域下に暗号化されたパラメータ JSONキーが表示されます。

cloudfunctions-basicaction-vpc_08_ko

  1. アクション作成を完了し、アクションを実行します。

VPC接続情報

アクションを使用して自分の VPCリソースにアクセスできるように設定します。VPC環境で Cloud Functionsを利用する場合、VPCリソース接続の設定は必須です。VPC接続情報の各項目に関する説明は次の通りです。

  • VPC: アクションがアクセスする VPC名をクリックして選択。新しい VPCを作成するには、 [VPC作成] ボタンをクリック
  • Subnet: 選択した VPCにアクセスする際に使用する Subnetをクリックして選択
    • 連携可能な Subnetの種類: Privateのみ可能
    • Public Subnetリソースへのアクセス方法: Private Subnetリソースと同様に ACG設定で可能
    • Private Subnetと連携したアクションでのインターネット通信方法: Subnetに NAT Gatewayを設定することで可能です。設定方法は NAT Gateway ご利用ガイドを参照
参考

Cloud Functionsは高可用性の保障のために、VPCリソースアクセスの設定時にリージョン別マルチゾーンをサポートします。リージョン別にサポートする Zoneの情報は次の通りです。

  • 韓国: KR-2
  • シンガポール: SGN-4、SGN-5
  • 日本: JPN-4、JPN-5

ただし、アクションごとに VPCは1つ選択でき、Zone別に1つの Subnetを追加できます。

ACG設定

VPC、Subnetの設定が完了したら、次は実際のアクションコード内で VPCリソースへのアクセス許可をするために、アクセスするリソースの ACGを設定します。

参考

ACGの詳しい使用方法は、ACGご利用ガイドをご参照ください。

VPC環境で Cloud Functionsアクションを作成すると、接続された VPC環境の ACGの設定で使用できるアクセスソースに cloudfunctions-vpc-{vpc ID}の別名が自動作成され、自動作成されたエイリアスを ACGの Inboundルールのアクセスソースに追加します。

参考

VPC IDは、NAVERクラウドプラットフォームコンソール VPC環境の i_menu > Services > Networking > VPC > VPC Managementで確認できます。
cloudfunctions-basicaction-vpc_01_ko

例えば、アクションコードで VPCに作成したサーバにアクセスするには、以下のようにサーバに適用する ACGルール設定の Inboundタブメニューをクリックし、アクセスソースに cloudfunctions-vpc-{vpc ID}を追加します。

cloudfunctions-basicaction-vpc_02_ko

VPCに作成された Cloud DBにアクセスするには、一般サーバと同様に DBサーバ作成時に自動作成されるエイリアスを ACGの Inboundルールに追加します。

参考

VPCリソースアクセスの設定後は、Cloud DBと連携して様々なサービスを構築できます。Cloud Functionsと Cloud DBの連携でアプリケーションサーバなしで APIを提供するユースケースを確認するには、NAVERクラウドプラットフォームの公式ブログを訪問してください。

オプション設定

アクションの Main関数名、メモリ、Timeoutを設定したり、別途のユーザー認証なしで呼び出し可能な URLを提供するウェブアクションを設定できます。ウェブアクションの場合は、様々な REST APIタイプのすべてのリクエスト(GET、POST、PUT、DELETEなど)をサポートします。
オプション設定の各項目に関する説明は次の通りです。

  • Main関数: アクションのメイン関数やクラス名として使用する文字列を入力
  • アクションメモリ: 希望するメモリ容量をクリックして選択
  • アクション Timeout: アクションの実行可能な最大時間を ms単位で入力。入力した時間の超過時は、実行結果失敗で終了
  • ウェブアクション関連設定
    • HTTPソース使用: HTTPソースをそのままウェブアクションに渡し、ウェブアクションでの解釈・処理有無をクリックして選択(True: HTTPソース使用、False: JSONオブジェクト使用)
    • ヘッダオプション設定: コード内でヘッダの変更可否をクリックして選択(True: 変更可能、False: CORSヘッダをレスポンスヘッダに自動追加)

シーケンスアクションのシナリオ設定

選択したアクションが順次実行されるようにシーケンスアクションのシナリオを設定します。シナリオ設定前に知っておくべき注意事項は、次の通りです。

  • シーケンスアクションには、一般アクション、ウェブアクションの他にシーケンスアクションも追加できます。
  • シーケンスウェブアクションには、ウェブアクションまたはシーケンスウェブアクションのみを追加することをお勧めします。
  • ユーザーのアクションパラメータは、最初のアクションでのみ渡されます。後続アクションでもユーザーアクションパラメータ値を使用する必要がある場合は、先行アクションでその値を結果に明示的に追加してください。
  • シーケンスアクションに登録された各アクションは、独自のデフォルトパラメータ値を使用することができます。デフォルトパラメータに先行アクションの結果と同じ Keyがある場合、先行アクションの結果の優先順位が高くなります。
  • 先行アクションでエラーが発生した場合、次のアクションは実行されません。
  • シーケンスアクションは、別途の実行タイムアウトを指定することはできません。シーケンスアクションの最大実行時間は、登録されたアクション実行タイムアウトの合計と同じです。例) アクション1、アクション2の実行タイムアウトがそれぞれ1分、3分である場合、シーケンスアクションは最大4分まで実行可能

上記の注意事項を考慮して、シーケンスアクションシナリオを設定する方法は、次の通りです。

  1. Packages/Actionsでシーケンスアクションに追加するアクションをクリックします。
  2. 追加したアクションの実行順序を設定します。
    cloudfunctions-sequence-vpc_01_ko
    • 実行順序変更: 実行順序を変更するアクションをドラッグ
    • 追加したアクションの削除: cloudfunctions-ico_01ボタンをクリック