Functions: CLIの使用の開始

このチュートリアルでは、Oracle Cloud Infrastructureアカウントを使用してOracle Functions開発を設定します。次に、ファンクション・アプリケーションおよびファンクションを作成します。

主なタスクは:

  • 認証トークンを設定します。
  • 必要な情報を収集します。
  • VCNを設定します。
  • OCIレジストリ(OCIR)を設定します。
  • ファンクションをデプロイするためのCLIを設定します
  • Fnコンテキストを構成します。
  • Oracleファンクション用のアプリケーションを作成します。
  • ファンクションを作成します。
  • ファンクションをデプロイします。
  • ファンクションをテストします。
この図は、Oracleファンクションの実行に使用されるOCIコンポーネントを示しています。

その他の情報については、次のWebサイトを参照してください。

開始する前に

このチュートリアルを正常に実行するには、次が必要です:

OCIアカウントの要件
ソフトウェアの要件

1. 必要な情報の収集

チュートリアルを完了するために必要なすべての情報を収集します。

リージョンおよびレジストリ情報の収集

OCIコンソールから必要な情報を準備します。

  1. リージョンおよび可用性ドメインから、リージョン識別子およびリージョン・キーを見つけます。

    例: アッシュバーンの場合はus-ashburn-1およびiad

  2. OCIレジストリ(OCIR)にファンクション・イメージを格納するレジストリ・プロジェクト名を作成します。

    ファンクションを公開すると、OCIRにDockerイメージが作成されます。OCIRプロジェクト名は、検索しやすいように、ファンクション・イメージの先頭に付加されます。たとえば、次が指定された場合:

    • レジストリ・プロジェクト名: my-func-prj
    • ファンクション名: node-func

    関数イメージは、OCIRのmy-func-prj/node-funcの下に格納されます

コンパートメントの作成または選択

コンパートメントを作成するには、コンパートメントの作成を参照してください。コンパートメントを作成したら、コンパートメントOCIDを保存します。

既存のコンパートメントからコンパートメントOCIDを取得するには:

  1. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
  2. コンパートメントを選択します。
  3. OCIDフィールドの「コピー」リンクをクリックします。
認可トークンの作成

OCIレジストリにログインするための認可トークンを作成します。認可トークンを作成するには:

  1. ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて、「ユーザー設定」または「自分のプロファイル」を選択します
  2. 「認証トークン」をクリックします。
  3. 「トークンの生成」をクリックします。
  4. 説明を入力します。
  5. 「トークンの生成」をクリックします。
  6. トークンをコピーして保存します。
    ノート

    トークンは、作成後すぐに保存してください。後でアクセスすることはできません。
情報の収集

チュートリアルを完了するために必要なすべての情報を収集します。次の情報をメモ帳にコピーします。

  1. リージョン: <region-identifier>

    例: us-ashburn-1

  2. リージョン・キー: <region-key>

    例: iad

  3. レジストリ・プロジェクト名: <your-project-name>

    例: my-func-prj

  4. コンパートメントID: <compartment-id>

    例: ocid1.compartment.oc1.aaaaaaa...

  5. 認証トークン: <auth-token>

    例: ABC.1aBC...

  6. テナント名: <tenancy-name>

    ユーザー・アバターから。例: mytenancyname

  7. テナントOCID: <tenancy-ocid>

    ユーザー・アバターからテナンシ: <your-tenancy>に移動し、OCIDをコピーします。例: ocid1.tenancy.oc1.aaaaaaa...

  8. ユーザー名: <user-name>

    ユーザー・アバターから。

2. 仮想クラウド・ネットワーク(VCN)の作成

Linuxインスタンスをインターネットに接続するように、VCNを設定します。仮想ネットワークの作成に必要なすべてのコンポーネントを構成します。

VCNウィザードの実行
  1. 「Oracle Cloud」アイコンをクリックして、メイン・ランディング・ページに移動します。
    • 「リソースの起動」までスクロールします。
    • 「ウィザードを使用してネットワークを設定」を選択します。
  2. 「VCNウィザードの起動」ワークフローで、「インターネット接続が可能なVCNの作成」を選択し、「VCNウィザードの起動」をクリックします。
  3. 構成ダイアログで、VCNのVCN名を入力します。コンパートメントはすでに、作業していた最後のコンパートメントに設定されているか、デフォルトで<your-tenancy> (root)に設定されています
  4. 「VCNとサブネットの構成」セクションで、CIDRブロックのデフォルト値をそのまま使用します:
    • VCN CIDRブロック: 10.0.0.0/16
    • パブリック・サブネットCIDRブロック: 10.0.0.0/24
    • プライベート・サブネットCIDRブロック: 10.0.1.0/24
    ノート

    パブリック・サブネットとプライベート・サブネットのネットワーク・アドレスが異なることに注意してください。
  5. 「DNS解決」では、「このVCNでDNSホスト名を使用」の選択解除します。
  6. 「次」をクリックします。

    入力したすべての値を確認する「インターネット接続性を持つVCNの作成」構成ダイアログが表示されます(ここでは表示されていません)。

  7. VCNを作成するには、「作成」をクリックします。

    作成中のすべてのVCNコンポーネントを示す「リソースの作成中」ダイアログが表示されます(ここでは表示されていません)。

VCNへのセキュリティ・ルールの追加
  1. 「Virtual Cloud Networkの表示」をクリックして、新しいVCNを表示します。

    新しいVCNが表示されます。ここで、アプリケーションのデフォルト・ポートであるポート80でHTTP接続を許可するセキュリティ・ルールを追加する必要があります。

  2. 新しいVCNが表示され、「パブリック」サブネット・リンクをクリックします。

    パブリック・サブネット情報は、ページの下部にあるセキュリティ・リストとともに表示されます。VCNのデフォルト・セキュリティ・リストへのリンクが表示されます。

  3. 「デフォルト・セキュリティ・リスト」リンクをクリックします。

    VCNのデフォルトのイングレス・ルールが表示されます。

  4. 「イングレス・ルールの追加」をクリックします。

    「Add Ingress Rules」ダイアログが表示されます。

  5. イングレス・ルールに次の情報を入力します。すべてのデータを入力したら、「イングレス・ルールの追加」をクリックします

    イングレス・ルールを次のように入力します:

    • ステートレス:選択
    • ソース・タイプ: CIDR
    • ソースCIDR: 0.0.0.0/0
    • IPプロトコル: TCP
    • ソース・ポート範囲: (空白のまま)
    • 宛先ポート範囲: 80
    • 説明:アプリケーションのVCN

    「イングレス・ルールの追加」をクリックすると、パブリック・サブネットへのHTTP接続が許可されます。

ノート

別のポートを開くには、最後のステップの80をポート番号に置き換えます。

アプリケーションをインターネットから使用できるようにするVCNが正常に作成されました。

3. OCIコマンドライン・インタフェースの設定

ローカル・マシンでファンクションを開発するには、OCIコマンドライン・インタフェース(CLI)を設定する必要があります。この項では、Docker、Python 3.6以上およびpip3がすでにインストールされていることを前提としています。

CLIを使用してローカル・マシンでOracle Functions開発を有効にするには、次の3つの項を実行します。各ステップの詳細な説明は、ローカル開発環境でのOracle Functionsの設定を参照してください。

Pythonを使用したCLIの設定

CLIを設定すると、マシンからOCIレジストリにファンクションおよびファンクション・アプリケーションをデプロイできます。まず、Pythonの仮想環境機能を使用してCLIをインストールします。

  1. virtualenvをインストールします:

    仮想環境では、プロジェクトの依存性を管理できます。すべてのプロジェクトを独自の仮想環境に配置して、Pythonライブラリの独立したグループをホストできます。virtualenvおよびvirtualenvwrapperをインストールします。

    1. Ubuntu:
      sudo pip3 install virtualenv
      sudo pip3 install virtualenvwrapper
    2. Oracle Linux: OCI Oracle Linux 7.8イメージを使用している場合、Python 3.6およびpip3がデフォルトで含まれます。別のOracle Linuxイメージを使用している場合、Python 3.6とともにOracle Linux開発者リポジトリをインストールするためのコマンドは次のとおりです。イメージにPython 3.6がすでにインストールされている場合は、最初の2つのコマンドをスキップしてpip3コマンドに進みます。
      sudo yum install oracle-epel-release-el7
      sudo yum install python36
      sudo pip3 install virtualenv
      sudo pip3 install virtualenvwrapper
    3. MacOS: Python 3 for MacOSをインストールすると、pip3がインストールされるため、pip3を使用してモジュールをインストールできます。
      brew install python3
      pip3 install pipenv
    ノート

    VMにインストールされているパッケージを受け入れるには、「y」を数回入力することが必要な場合があります。
  2. 仮想環境を格納するディレクトリを作成します。たとえば、mkdir ~/envsは、ホーム・ディレクトリの下にenvsディレクトリを作成します。
  3. .bashrcで仮想環境ラッパーを設定します。

    ファイルを更新します:

    sudo vi .bashrc
    ノート

    Python実行可能ファイルおよびvirtualwrapper.shへのパスは、Linuxディストリビューションまたはオペレーティング・システムによって異なる場合があります。whichコマンドで正しいパスを使用していることを確認します。

    ファイルに次のテキストを追加し、ファイルを保存します:

    # set up Python env
    export WORKON_HOME=~/envs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
    source /usr/local/bin/virtualenvwrapper.sh

    現在のウィンドウで前述のコマンドをアクティブ化します。

    source ~/.bashrc
  4. 仮想環境を起動します。
    mkvirtualenv cli-app
    次のように表示されます: (cli-app) ubuntu@<ubuntu-instance-name>:~$
  5. CLIをインストールします。
    pip3 install oci-cli
CLI接続の設定

OCIサービスに接続できるようにCLIを設定します。

  1. CLI構成ファイルを設定します。
    oci setup config

    基本情報を入力します: (「必要な情報の収」ステップから回答を取得します。)

    • 構成[$HOME/.oci/config]の場所: <take-default>
    • ユーザーOCID: <user-ocid>
    • テナントOCID: <tenancy-ocid>
    • リージョン(us-ashburn-1など): <region-identifier>

    OpenSSL API暗号化キーを設定します:

    • 新しいAPI署名RSAキー・ペアを生成しますか[Y/n]: Y
    • キー[$HOME/.oci]のディレクトリ: <take-default>
    • キー[oci_api_key]の名前 <take-default>
    ノート

    秘密キーはoci_api_key.pemで、公開キーはoci_api_key_public.pemです。
  2. 公開キーをコピーします。
    ターミナルで、次を入力します:
    cat $HOME/.oci/oci_api_key_public.pem
  3. ユーザー・アカウントに公開キーを追加します。
    • ナビゲーション・メニューで、「プロファイル」メニュー「プロファイル」メニュー・アイコンを選択し、表示されるオプションに応じて「ユーザー設定」または「自分のプロファイル」を選択します
    • 「User Settings」ページの「Resources」で、「API Keys」をクリックします。
    • 公開キーの追加をクリックします。
    • 「公開キーの貼付け」を選択します。
    • BEGIN PUBLIC KEYおよびEND PUBLIC KEYの行を含む、前のステップの値を貼り付けます
    • 追加」をクリックします。
    これで、ユーザー・アカウントを使用してテナンシに接続するようにCLIを設定できました。
  4. インストールをテストします:
    oci os ns get

    すべてが正しく設定されている場合は、ネームスペースが表示されます。

  5. 仮想環境を非アクティブ化します:
    deactivate

    環境の(cli-app)接頭辞は表示されなくなりました。

    ノート

    • CLIを使用する場合は常に、workon cli-appを使用してアクティブ化します
    • プロジェクト名を変更すると、workonによって現在作業中の環境が非アクティブ化されます。このようにして、環境をすばやく切り替えることができます。
Fnクライアントの設定

ローカル・マシンでファンクション開発を実行するには、Fnクライアントをインストールする必要があります。Fnを使用すると、ファンクションの作成、アプリケーションの作成およびOCIレジストリへのファンクションのデプロイを行うことができます。

  1. Fnクライアントをインストールします。

    Fnクライアントは、Oracle Functionsの作成、管理およびデプロイに使用されます。クライアントをインストールするには:

    Linux、MacOSおよびWindows 10 Update 2004 (WSL 2.0)のコマンドライン・オプション:

    次を入力します:

    curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
                        
    ノート

    定期的にインストール・コマンドを再実行して、最新バージョンのFnにアップグレードします。

    Homebrewを使用したMacOS:

    次を入力します:

    brew install fn
    ノート

    Fnは、通常のHomebrewアップグレードbrew upgradeの一環として更新されます。
  2. Fnインストールをテストします。

    fn versionと入力します

    このコマンドにより、次のようなテキストが返されます:

    Client version is latest version: 0.6.3
    Server version: ?    
                        
    ノート

    レスポンスは、現在のバージョンがインストールされており、ローカル・マシンでFn Projectサーバーが実行されていないことを示しています。

4. Functions用のOCIレジストリの準備

次に、DockerをOCIレジストリ(OCIR)にログインします。

DockerのOCIRへのログイン
  1. 以前に収集した情報を取得します。
  2. ターミナル・ウィンドウを開きます。
  3. OCIRにログインします:
    docker login <region-key>.ocir.io

    ログイン名とパスワードの入力を求められます。

    • ユーザー名: <tenancy-name>/<user-name>
    • パスワード: <auth-token>

インスタンスがOCIRにログインしました。

5. Functionsの構成

Oracle Functionsを使用するには、Fnアプリケーション・コンテキストを構成する必要があります。コンテキストには、Oracle Functionsサービスへの接続に必要な値が格納されます。

Fnコンテキストの構成

以前に収集した情報を構成値に使用します。

  1. ターミナル・インスタンスを開きます。
  2. Fnコンテキストのリストを取得します。

    fn list context

    defaultコンテキストが選択されています。

  3. Oracle FunctionsのFnコンテキストを作成します。<region-identifier>は、コンテキストに適した名前です。

    サンプル・コマンド: fn create context <region-identifier> --provider oracle

    例: fn create context us-phoenix-1 --provider oracle

  4. 作成したコンテキストを使用します。

    例: fn use context us-phoenix-1

  5. Oracle Functionsのコンパートメントを設定します。

    例: fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaa...

  6. Oracle FunctionsリージョンのAPI URLを設定します。

    例: fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com

    ノート

    APIエンドポイントは次の場所で確認できます: Oracle FunctionsのAPIエンドポイント
  7. レジストリ・リポジトリのURLを設定します。

    サンプル・コマンド: fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name>

    例: fn update context registry phx.ocir.io/my-tenancy/myproject/repo

ノート

CLIに複数のプロファイルを使用する場合は、oracle.profile値を設定する必要があります。

例: fn update context oracle.profile <profile-name>

Oracle Functionsサービスに接続するようにFnを構成しました。

ノート

コンテキストの表示/編集

Fnコンテキスト・ファイルは、~/.fn/contextsディレクトリにあります。各コンテキストは、.yamlファイルに格納されます。たとえば、us-phoenix-1.yamlファイルは次のようになります:

api-url: https://functions.us-phoenix-1.oci.oraclecloud.com
oracle.compartment-id: ocid1.compartment.oc1..aaaaaaa...
provider: oracle
registry: phx.ocir.io/my-tenancy/myproject/repo

必要に応じて、ファイルをエディタで直接編集できます。

各ステップの詳細な説明は、ローカル開発環境でのOracle Functionsのクイックスタートを参照してください

6. ファンクションの作成およびデプロイ

構成が完了したら、ファンクションを作成してデプロイします。

アプリケーションの作成

アプリケーションは、ファンクションの主要なストレージ・コンテナです。各ファンクションには、デプロイメント用のアプリケーションが必要です。アプリケーションを作成するには、次のステップに従います。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックします。
  2. 「アプリケーションの作成」をクリックします。

    フォーム・データを入力します。

    • 名前: <your-app-name>
    • VCN: <your-VCN>
    • サブネット: <your-public-subnet>または<your-private-subnet>
    ノート

    パブリック・サブネットまたはプライベート・サブネットを使用できます。いずれかを選択してください。
  3. 作成」をクリックします。

アプリケーションが作成されます。

ファンクションの作成およびデプロイ

次のいずれかの言語を選択して、ファンクションを作成してデプロイします。必要に応じて、3つすべてを実行できます。

Javaファンクションの作成およびデプロイ

アプリケーションを作成したら、Javaファンクションをデプロイします。次のステップに従って、Javaの「Hello World」ファンクションを作成します。

ノート

これらのステップを実行するには、Java 8以上がインストールされていることを確認してください。
  1. ターミナルを開きます。
  2. ファンクションを格納するディレクトリを作成し、そのディレクトリに移動します。
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Fnを使用してJavaの「Hello World」ファンクションを作成します。
    fn init --runtime java my-func-name

    このコマンドは、複数のファイルを含むmy-func-nameという名前のディレクトリを作成します。

    • func.yaml - ファンクション構成ファイル。
    • pom.xml - Mavenビルド・ファイル。
    • src/main/java/com/example/fn/HelloFunction.java - 実際のファンクション・ファイル。
  4. そのディレクトリに移動します。
  5. ファンクションをデプロイします。
    fn -v deploy --app your-app-name

    Dockerイメージが作成され、OCIRにプッシュされ、最終的にOracle Functionsにデプロイされると、様々なメッセージが表示されます。

  6. ファンクションを呼び出します。
    fn invoke your-app-name my-func-name

    戻り値: Hello, world!

  7. パラメータを指定してファンクションを呼び出します。
    echo -n "Bob" | fn invoke your-app-name my-func-name

    戻り値: Hello, Bob!

  8. ネットからファンクションに接続する場合は、ファンクションの呼出しエンドポイントを取得する必要があります。呼出しエンドポイントを検索するには、inspectコマンドを使用します。
    fn inspect function your-app-name my-func-name
  9. inspectコマンドの結果を確認します。呼出しエンドポイントURLが、返されるJSONデータのannotatinsセクションに含まれていることに注意してください。
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. inspectから返されたURLを使用してファンクションを呼び出します。ファンクションではリクエストにデジタル署名する必要があるため、この例ではoci raw-requestコマンドを使用します。
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    コマンドで次が返されます:

    {
        "data": "Hello, world!",
        "headers": {
            "Content-Length": "13",
            "Content-Type": "text/plain",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-java/1.0.111 (jvm=OpenJDK 64-Bit Server VM, jvmv=11.0.8)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    ノート

    curlなどのツールを使用して、Functionsエンドポイントに接続できます。ただし、セキュリティ上の考慮事項があるため、スクリプトは複雑です。かわりに、OCI CLIのraw-requestコマンドを使用します。ファンクションの呼出し: raw-requestを使用したファンクションへの署名付きリクエストの送信を参照してください。

Javaファンクションが正常にデプロイおよびテストされました。

Pythonファンクションの作成およびデプロイ

アプリケーションを作成したら、Pythonファンクションをデプロイします。次のステップに従って、Pythonの「Hello World」ファンクションを作成します。

  1. ターミナルを開きます。
  2. ファンクションを格納するディレクトリを作成し、そのディレクトリに移動します。
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Fnを使用してPythonの「Hello World」ファンクションを作成します。
    fn init --runtime python my-func-name

    このコマンドは、複数のファイルを含むmy-func-nameという名前のディレクトリを作成します。

    • func.yaml - ファンクション構成ファイル。
    • requirements.txt - 必要なPythonライブラリのリスト。
    • func.py - 実際のファンクション・ファイル。
  4. そのディレクトリに移動します。
  5. ファンクションをデプロイします。
    fn -v deploy --app your-app-name

    Dockerイメージが作成され、OCIRにプッシュされ、最終的にOracle Functionsにデプロイされると、様々なメッセージが表示されます。

  6. ファンクションを呼び出します。
    fn invoke your-app-name my-func-name

    戻り値: {"message": "Hello World"}

  7. パラメータを指定してファンクションを呼び出します。
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    戻り値: {"message": "Hello Bob"}

  8. ネットからファンクションに接続する場合は、ファンクションの呼出しエンドポイントを取得する必要があります。呼出しエンドポイントを検索するには、inspectコマンドを使用します。
    fn inspect function your-app-name my-func-name
  9. inspectコマンドの結果を確認します。呼出しエンドポイントURLが、返されるJSONデータのannotatinsセクションに含まれていることに注意してください。
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. inspectから返されたURLを使用してファンクションを呼び出します。ファンクションではリクエストにデジタル署名する必要があるため、この例ではoci raw-requestコマンドを使用します。
    oci raw-request --http-method POST --request-body "" --target-uri https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    コマンドで次が返されます:

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "24",
            "Content-Type": "application/json",
            "Date": "Tue, 20 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-python/0.1.18",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    ノート

    curlなどのツールを使用して、Functionsエンドポイントに接続できます。ただし、セキュリティ上の考慮事項があるため、スクリプトは複雑です。かわりに、OCI CLIのraw-requestコマンドを使用します。ファンクションの呼出し: raw-requestを使用したファンクションへの署名付きリクエストの送信を参照してください。

Pythonファンクションが正常にデプロイおよびテストされました。

ノード・ファンクションの作成およびデプロイ

アプリケーションを作成したら、ノード・ファンクションをデプロイします。次のステップに従って、ノードの「Hello World」ファンクションを作成します。

ノート

これらのステップを実行するには、Node.js 10以上がインストールされていることを確認してください。
  1. ターミナルを開きます。
  2. ファンクションを格納するディレクトリを作成し、そのディレクトリに移動します。
    mkdir my-dir-name
    cd my-dir-name                        
                        
  3. Fnを使用してノードの「Hello World」ファンクションを作成します。
    fn init --runtime node my-func-name

    このコマンドは、複数のファイルを含むmy-func-nameという名前のディレクトリを作成します。

    • func.yaml - ファンクション構成ファイル。
    • package.json - NPMビルド・ファイル。
    • func.js - 実際のファンクション・ファイル。
  4. そのディレクトリに移動します。
  5. ファンクションをデプロイします。
    fn -v deploy --app your-app-name

    Dockerイメージが作成され、OCIRにプッシュされ、最終的にOracle Functionsにデプロイされると、様々なメッセージが表示されます。

  6. ファンクションを呼び出します。
    fn invoke your-app-name my-func-name

    戻り値: {"message":"Hello World"}

  7. パラメータを指定してファンクションを呼び出します。
    echo -n '{"name":"Bob"}' | fn invoke your-app-name my-func-name

    戻り値: {"message":"Hello Bob"}

  8. ネットからファンクションに接続する場合は、ファンクションの呼出しエンドポイントを取得する必要があります。呼出しエンドポイントを検索するには、inspectコマンドを使用します。
    fn inspect function your-app-name my-func-name
  9. inspectコマンドの結果を確認します。呼出しエンドポイントURLが、返されるJSONデータのannotatinsセクションに含まれていることに注意してください。
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke",
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaa...",
            "__comment":"Remaining output left out for brevity",
    
  10. inspectから返されたURLを使用してファンクションを呼び出します。ファンクションではリクエストにデジタル署名する必要があるため、この例ではoci raw-requestコマンドを使用します。
    oci raw-request --http-method POST --request-body "" --target-uri https://https://aaaaaaaaa.us-ashburn-1.functions.oci.oraclecloud.com/1111111/functions/ocid1.fnfunc.oc1.iad.aaaaaaaaa.../actions/invoke

    コマンドで次が返されます:

    {
        "data": "Hello World",
        "headers": {
            "Content-Length": "23",
            "Content-Type": "application/json",
            "Date": "Tue, 22 Oct 2020 00:53:08 GMT",
            "Fn-Call-Id": "11111111111",
            "Fn-Fdk-Version": "fdk-node/0.1.18 (njsv=v11.15.0)",
            "Opc-Request-Id": "1111111/11111"
        },
        "status": "200 OK"
    }
    ノート

    curlなどのツールを使用して、Functionsエンドポイントに接続できます。ただし、セキュリティ上の考慮事項があるため、スクリプトは複雑です。かわりに、OCI CLIのraw-requestコマンドを使用します。ファンクションの呼出し: raw-requestを使用したファンクションへの署名付きリクエストの送信を参照してください。

ノード・ファンクションが正常にデプロイおよびテストされました。

7. ファンクション情報の確認

ファンクションを実行すると、ファンクションに関する情報がOCIコンソールに表示されます。

OCIRでのファンクション・イメージの表示

デプロイすると、ファンクションがアップロードされてOCIRに格納されます。OCIRに移動して、ファンクション・イメージを確認できます。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「Containers & Artifacts」で、「Container Registry」をクリックします。
  2. <your-repository-project-name>を検索します。
  3. プロジェクト名の下に、デプロイした各ファンクションのエントリが表示されます。
  4. 情報を表示する各イメージのリンクをクリックします。
ファンクション実行情報の表示

ファンクションを実行した後、そのファンクションのメトリックを表示できます。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックします。

    アプリケーションがページにリストされます。

  2. 作成したアプリケーションへのリンクをクリックします。
  3. 確認するファンクションへのリンクをクリックします。

    ファンクションに関するメトリック情報が表示されます。

ロギング情報の有効化および表示

アプリケーションのロギングを有効にするには、次のステップに従います。

  1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックします。
  2. 作成したアプリケーションへのリンクをクリックします。
  3. アプリケーション・ページの左側で、「ログ」リンクをクリックします。
  4. 「無効」をクリックして、アプリケーションのロギングを有効にします。
  5. 「ログの有効化」ダイアログが表示されます。次の情報を入力します:
    • コンパートメント: <your-compartment-name>
    • ログ・グループ:デフォルト値Auto-Create a Default Log Groupを使用します
    • ログ名: <take-default>
    • ログ保持: <take-default>
    • 「ログの有効化」をクリックします

      ログが作成されるまでしばらく待ちます。

ログを表示するには、前述のステップで作成したログ名のリンクをクリックします。