アクション作成

Prev Next

Classic環境で利用できます。

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

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

オプション設定

アクションの 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 ボタンをクリック