ローカル・ホスト上のファンクションQuickStart

このOCI Functions QuickStartを使用して、ローカル・ホストで迅速にセットアップおよび実行する方法を確認してください。

A.テナンシの設定

1.グループとユーザーの作成

適切なユーザーおよびグループが存在しない場合:

  1. テナンシ管理者としてコンソールにサインインします。
  2. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ドメイン」をクリックします。
  3. 「グループ」「グループの作成」の順にクリックして、新しいグループを作成します。
    この図は、「名前」および「説明」フィールドが空である「グループの作成」ダイアログを示しています。
  4. 「ユーザー」「ユーザーの作成」の順にクリックして、新しいユーザーを作成します。
    この図は、「名前」、「説明」、「Eメール」および「Eメールの確認」フィールドが空である「ユーザーの作成」ダイアログを示しています。
  5. 「グループ」、グループの名前、「ユーザーをグループに追加」の順にクリックして、ユーザーをグループに追加します。
    この図は、「ユーザー」フィールドが空である「ユーザーをグループに追加」ダイアログを示しています。

詳細は、構成ノートを参照してください。

2.コンパートメントの作成

ネットワーク・リソースを作成する適切なコンパートメントおよびOCIファンクション・リソースがすでに存在しない場合:

  1. テナンシ管理者としてコンソールにサインインします。
  2. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「コンパートメント」をクリックします。
  3. 「コンパートメントの作成」をクリックします。
    この図は、「名前」および「説明」フィールドが空である「コンパートメントの作成」ダイアログを示しています。

詳細は、構成ノートを参照してください。

3. VCNとサブネットの作成

ネットワーク・リソースを作成する適切なVCNが存在しない場合:

  1. テナンシ管理者としてコンソールにサインインします。
  2. ナビゲーション・メニューを開き、「ネットワーキング」「仮想クラウド・ネットワーク」の順にクリックします。
  3. VCNウィザードの起動をクリックして、新しいVCNを作成します。
  4. 「VCNウィザードの起動」ダイアログ・ボックスで、「インターネット接続性を持つVCN」を選択し、「VCNウィザードの起動」をクリックします。
    この図は、「インターネット接続性を持つVCNの作成」オプションが選択された「VCNウィザードの起動」ダイアログを示しています。
  5. 新しいVCNの名前を入力し、「次」「作成」の順にクリックして、関連するネットワーク・リソースとともにVCNを作成します。

詳細は、構成ノートを参照してください。

4.グループおよびサービス用のポリシーの作成

1つ以上のOCI Functionsユーザーがテナンシ管理者ではない場合:

  1. テナンシ管理者としてコンソールにサインインします。
  2. ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」をクリックします。「アイデンティティ」で、「ポリシー」をクリックします。
  3. 「ポリシーの作成」をクリックし、新しいポリシーの名前と説明を指定して、テナンシのルート・コンパートメントを選択します。

  4. ポリシー・ビルダーを使用してポリシーを作成します。ポリシー・ユースケースのリストから「ファンクション」を選択し、ポリシー・テンプレートユーザーによるファンクションとアプリケーションの作成、デプロイおよび管理に基づいてポリシーを作成します。

    この図は、「名前」、「説明」および「コンパートメント」フィールドが空である「ポリシーの作成」ダイアログを示しています。「ユーザーによるクラウド・シェルを使用したファンクションおよびアプリケーションの作成、デプロイおよび管理」テンプレートが「共通ポリシー・テンプレート」フィールドに表示されます。いくつかのポリシー・ステートメントが示されています。

    ポリシー・テンプレートには、次のポリシー・文が含まれます:

    • Allow group <group-name> to use cloud-shell in tenancy
    • Allow group <group-name> to manage repos in tenancy
    • Allow group <group-name> to read objectstorage-namespaces in tenancy
    • Allow group <group-name> to manage logging-family in tenancy
    • Allow group <group-name> to read metrics in tenancy
    • Allow group <group-name> to manage functions-family in tenancy
    • Allow group <group-name> to use virtual-network-family in tenancy
    • Allow group <group-name> to use apm-domains in tenancy
    • Allow group <group-name> to read vaults in tenancy
    • Allow group <group-name> to use keys in tenancy
    • Allow service faas to use apm-domains in tenancy
    • Allow service faas to read repos in tenancy where request.operation='ListContainerImageSignatures'
    • Allow service faas to {KEY_READ} in tenancy where request.operation='GetKeyVersion'
    • Allow service faas to {KEY_VERIFY} in tenancy where request.operation='Verify'

    必要に応じて、コンパートメントごとにこれらのポリシー・ステートメントを制限できます。

詳細は、構成ノートを参照してください。

B.アプリケーションの作成

1.最初のアプリケーションの作成
  1. ファンクション開発者としてコンソールにサインインします。
  2. ナビゲーション・メニューを開き、「開発者サービス」をクリックします「ファンクション」で、「アプリケーション」をクリックします。
  3. OCIファンクションで使用するリージョンを選択します。
  4. 「アプリケーションの作成」をクリックします。
    この図は、「名前」、「VCN」および「サブネット」フィールドが空である「新規アプリケーション」ダイアログを示しています。
  5. 次を指定します:
    • 新規アプリケーションの名前としてのhelloworld-app。このアプリケーションに最初の関数をデプロイし、関数を呼び出すときにこのアプリケーションを指定します。
    • ファンクションを実行するVCNおよびサブネット。パブリック・サブネットにはVCN内のインターネット・ゲートウェイが必要であり、プライベート・サブネットにはVCN内のサービス・ゲートウェイが必要です。
  6. 「作成」をクリックします。

詳細は、詳細な手順を参照してください。

C.ローカル・ホストの開発環境を設定します。

1. Dockerのインストールおよび起動

開発環境のターミナル・ウィンドウで:

  1. 次を入力してDockerがインストールされていることを確認します:
    docker version

    Dockerがインストールされていないことを示すエラー・メッセージが表示された場合は、続行する前にDockerをインストールする必要があります。ご使用のプラットフォームのDockerドキュメントを参照してください(Oracle Linuxについては、こちらを参照してください)。

    Dockerがインストールされている場合、GitHubのFn Projectホーム・ページの前提条件セクションに移動し、インストールされているDockerのバージョンが、そこに指定されている最低バージョン以上であることを確認してください。そうでない場合は、続行する前にDockerを再インストールします。

  2. 次のように入力して、標準のhello-world Dockerイメージをコンテナとして起動し、Dockerが実行されていることを確認します:
    docker run hello-world

    Dockerが実行されていないことを示すエラー・メッセージが表示された場合は、続行する前にDockerデーモンを起動する必要があります。Dockerドキュメントを参照してください。

詳細は、構成ノートを参照してください。

2. API署名キーとOCIプロファイルの設定
  1. ファンクション開発者としてコンソールにサインインします。
  2. 「プロファイル」メニューを開き、「ユーザー設定」をクリックします。
  3. 「リソース」で、「APIキー」をクリックし、「APIキーの追加」をクリックします。
  4. 「APIキーの追加」ダイアログで「APIキー・ペアの生成」を選択します。
    この図は、「APIキー・ペアの生成」オプションが選択された「APIキーの追加」ダイアログを示しています。
  5. 「秘密キーのダウンロード」をクリックし、~/.ociディレクトリに秘密キー・ファイル(.pemファイルとして)を保存します。(~/.ociディレクトリがまだ存在しない場合は、ここで作成します)。
  6. 「追加」をクリックして、ユーザー設定に新しいAPI署名キーを追加します。

    「構成ファイルのプレビュー」ダイアログが表示され、DEFAULTという名前のプロファイルの基本認証情報(作成したAPI署名キーのフィンガープリントを含む)を含む構成ファイル・スニペットが含まれています。

    この図は、「デフォルト」という名前のプロファイルの基本認証情報を含む「構成ファイル・プレビュー」ダイアログを示しています。

  7. テキスト・ボックスに表示された構成ファイル・スニペットをコピーし、「構成ファイルのプレビュー」ダイアログを閉じます。
  8. テキスト・エディタで、~/.oci/configファイルを開き、スニペットをファイルに貼り付けます。(~/.oci/configファイルがまだ存在しない場合は、ここで作成します)。
  9. テキスト・エディタで、貼り付けたばかりのスニペットのプロファイルを次のように変更します。
    • プロファイルの名前を[DEFAULT]から選択した名前([functions-developer-profile]など)に変更します。~/.oci/configファイルには、同じ名前の2つのプロファイルを含めることはできません。
    • プロファイルのkey_fileパラメータの値を変更して、以前にダウンロードした秘密キー・ファイル(.pemファイル)のパスを指定します。
  10. テキスト・エディタで、~/.oci/configファイルに加えた変更を保存し、テキスト・エディタを閉じます。
  11. ターミナル・ウィンドウで、次のように入力して、秘密キー・ファイル(.pemファイル)に対する権限を変更し、読取り専用であることを確認します。
    chmod go-rwx ~/.oci/<private-key-file-name>.pem

API署名キーの設定およびプロファイルの作成の詳細は、構成ノートを参照してください。

3. Fn Project CLIのインストール

開発環境のターミナル・ウィンドウで:

  1. 環境に適した手順を使用して、Fn Project CLIをインストールします。
  2. 次を入力して、Fn Project CLIがインストールされていることを確認します:
    fn version

詳細は、構成ノートを参照してください。

4. Fn Project CLIコンテキスト・プロバイダの設定--oracle

開発環境のターミナル・ウィンドウで:

  1. 次を入力して、新しいFn ProjectのCLIコンテキストを作成します:
    fn create context <my-context> --provider oracle

    Oracle Cloud Infrastructureリクエスト署名、秘密キー、ユーザー・グループ、およびそれらのユーザー・グループに権限を付与するポリシーを使用して、認証および認可を有効にするには、--provider oracleを指定します。

  2. 次を入力して、Fn ProjectのCLIが新しいコンテキストを使用するように指定します:
    fn use context <my-context>
  3. 次のように入力して、新しいFn ProjectのCLIコンテキストを、OCIファンクションで使用するために作成したOCIプロファイルの名前([functions-developer-profile]など)で構成します:
    fn update context oracle.profile <profile-name>

詳細は、構成ノートを参照してください。

5. Fn Project CLIコンテキスト構成の完了

開発環境のターミナル・ウィンドウで:

  1. デプロイ済関数を所有するコンパートメントのOCIDを使用して、新しいFn Project CLIコンテキストを構成します
    fn update context oracle.compartment-id <compartment-ocid>
  2. 次のように入力して、OCI APIのコール時に使用するapi-urlエンドポイントで新しいコンテキストを構成します。
    fn update context api-url <api-endpoint>

    ここで、<api-endpoint>は、ファンクションAPIファンクション・エンドポイントのリストにあるエンドポイントの1つです。フォーマットはhttps://functions.<region-identifier>.oci.oraclecloud.comです。例:

    fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
  3. OCIファンクションで使用する現在のリージョンおよびテナンシのOracle Cloud Infrastructure Registryアドレスを使用して、Fn ProjectのCLIコンテキストを構成します:

    fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>

    <repo-name-prefix>は、関数のイメージを格納するOracle Cloud Infrastructure Registryリポジトリ用に選択した接頭辞です。例:

    fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
  4. 次のように入力して、OCIファンクションがファンクション・イメージのプッシュおよびプルするリポジトリのコンパートメントのOCIDを使用してFn Project CLIコンテキストを構成します:

    fn update context oracle.image-compartment-id <compartment-ocid>

    例:

    fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q

    oracle.image-compartment-idの値を指定しない場合、OCI関数はルート・コンパートメント内のリポジトリに対してイメージをプッシュおよびプルします。

詳細は、構成ノートを参照してください。

6.認証トークンの生成
  1. ファンクション開発者としてコンソールにサインインします。
  2. 「ユーザー」メニューを開き、「ユーザー設定」に移動します。「認証トークン」ページで、「トークンの生成」をクリックします。
  3. 「トークンの生成」ダイアログで認証トークンの意味のある説明を入力し、「トークンの生成」をクリックします。新しい認証トークンが表示されます。
  4. 認証トークンを、後で取得できる保護された場所にただちにコピーします。これは、コンソールに認証トークンが再度表示されないようにするためです。
  5. 「トークンの生成」ダイアログを閉じます。

詳細は、構成ノートを参照してください。

7.レジストリへのログイン

コンソールスタート・ガイド・ページで:

  1. 次のコマンドをコピーします。

    docker login -u '<tenancy-namespace>/<user-name>' <region-key>.ocir.io

    例:

    docker login -u 'ansh81vru1zp/jdoe@acme.com' phx.ocir.io

    テナンシがOracle Identity Cloud Serviceとフェデレートされている場合、フォーマットは少し異なります。例:

    docker login -u 'ansh81vru1zp/oracleidentitycloudservice/jdoe@acme.com' phx.ocir.io
  2. ターミナル・ウィンドウで、コピーしたコマンドを貼り付けて実行します。
  3. パスワードのプロンプトが表示されたら、以前に作成およびコピーしたOracle Cloud Infrastructure認証トークンを入力します。例: 6aN...6MqX

    これで、ファンクションの作成、デプロイおよび呼出しを開始する準備ができました。

詳細は、構成ノートを参照してください。

D.ファンクションの作成、デプロイおよび呼出し

1.最初の関数を作成します

端末ウィンドウで:

  1. 次を入力してhelloworld javaファンクションを作成します。

    fn init --runtime java hello-java

    hello-javaというディレクトリが作成され、次のものが含まれます。

    • func.yamlという関数定義ファイル
    • helloworld関数のソース・ファイルおよびディレクトリを含む/srcディレクトリ
    • pom.xmlというMaven構成ファイル。関数のコンパイルに必要な依存性を指定します。

    Javaは、サポートされている複数の言語の1つです。

    詳細は、詳細な手順を参照してください。

2.最初のファンクションをデプロイします

端末ウィンドウで:

  1. 前の手順で作成したhello-javaディレクトリにディレクトリを変更します。
    cd hello-java
  2. 次の単一のFn Projectコマンドを入力して、ファンクションおよびその依存関係をhello- javaというDockerイメージとして作成し、そのイメージを指定したDockerレジストリにプッシュして、以前に作成したhelloworld- appアプリケーションのOCIファンクションにファンクションをデプロイします。
    fn -v deploy --app helloworld-app
  3. (オプション)helloworld- appアプリケーションの詳細ページの「リソース」の下にある「関数」をクリックし、hello- java関数が表示されるようにして、関数がOCI関数にデプロイされていることを確認します。

詳細は、詳細な手順を参照してください。

3.最初のファンクションを呼び出します

端末ウィンドウで:

  1. 次を入力してhello-java関数を起動します。

    fn invoke helloworld-app hello-java

    「Hello world!」メッセージが表示されます。

  2. 次のように入力して、パラメータ'John'でhello-java関数を起動します。

    echo -n 'John' | fn invoke helloworld-app hello-java

    'Hello John!'メッセージが表示されます。

完了しました。OCIファンクションを使用して最初のファンクションを作成、デプロイおよび起動しました。

詳細は、詳細な手順を参照してください。

4.次のステップ

ファンクションを作成、デプロイおよび起動したので、次の方法を学習します。

これで完了です。