クラウド・シェルでのファンクション QuickStart

このOCI Functions QuickStartを使用して、クラウド・シェルで迅速に設定および実行する方法をご覧ください。

A.テナンシを設定します

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

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

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

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

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

ネットワーク・リソースおよびOCI Functionsリソースを作成する適切なコンパートメントがまだ存在しない場合:

  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 Functionsで使用しているリージョンを選択します。
  4. 「アプリケーションの作成」をクリックします。
    この図は、「名前」、「VCN」および「サブネット」フィールドが空の「新規アプリケーション」ダイアログを示しています。
  5. 次を指定します:
    • 新規アプリケーションの名前としてhelloworld-app。このアプリケーションに最初のファンクションをデプロイし、ファンクションの起動時にこのアプリケーションを指定します。
    • ファンクションを実行するVCNおよびサブネット。パブリック・サブネットにはVCN内のインターネット・ゲートウェイが必要で、プライベート・サブネットにはVCN内のサービス・ゲートウェイが必要です。
  6. 「作成」をクリックします。

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

C.Cloud Shell開発環境を設定します

1. 「スタート・ガイド」ページおよび「Cloud Shell」ウィンドウの表示

コンソールアプリケーション・ページ:

  1. 作成したhelloworld-appアプリケーションをクリックして、アプリケーションの詳細ページを表示します。
  2. 「スタート・ガイド」リンクをクリックし、「クラウド・シェル設定」をクリックします。

    このイメージは、helloworld-appの詳細を含むアプリケーション詳細ページを示します。「スタート・ガイド- クラウド・シェル設定」オプションが選択されています。

    ヒント: 「スタート・ガイド」ページに、ユーザー専用に調整されたコマンドが表示されるようになりました。これらのコマンドをコピーして貼り付け、ファンクション開発用にCloud Shell環境を構成します。

  3. 「クラウド・シェルの起動」をクリックしてクラウド・シェル端末ウィンドウを表示します。
    このイメージは、helloworld-appの詳細を含むアプリケーション詳細ページを示します。「スタート・ガイド- クラウド・シェル設定」オプションが選択されています。新しいCloud Shellターミナル・ウィンドウが表示されます。
2.Fn ProjectのCLIコンテキストの設定

次のように、「スタート・ガイド」ページからクラウド・シェル・ターミナル・ウィンドウにコマンドをコピーして貼り付け、環境を構成します:

  1. アプリケーションを作成した現在のリージョンの事前作成済Fn Projectコンテキストの名前を検索します:

    fn list context

    少なくとも2つのFn Projectコンテキスト(デフォルト・コンテキストと現在のリージョンのコンテキスト(us-phoenix-1など)が返されます。

  2. リージョン・コンテキストを使用するようにFn Projectコンテキストを設定します。

    fn use context <region-context>

    <region-context>は、現在のリージョンのコンテキストです。例:

    fn use context us-phoenix-1
  3. デプロイされたファンクションを所有する現在のコンパートメントのOCIDを使用して、Fn Projectコンテキストを構成します:

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

    例:

    fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
  4. OCI Functionsで使用する現在のリージョンおよびテナンシのOracle Cloud Infrastructure Registryアドレスを使用してFn Projectコンテキストを構成します:

    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
  5. 次のように入力して、OCI Functionsがファンクション・イメージをプッシュおよびプルするリポジトリのコンパートメントのOCIDを使用して、Fn Projectコンテキストを構成します:

    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 Functionsはルート・コンパートメント内のリポジトリに対してイメージをプッシュおよびプルします。

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

3. 認証トークンの生成

コンソール「スタート・ガイド」ページで、次の手順を実行します。

  1. 「認証トークンの生成」をクリックして「認証トークン」ページを表示し、「トークンの生成」をクリックします。
    この図は、「説明」フィールドが空の「トークンの生成」ダイアログを示しています。
  2. 「トークンの生成」ダイアログに認証トークンの意味のある説明を入力し、「トークンの生成」をクリックします。新しい認証トークン(6aN...6MqXなど)が表示されます。
  3. 認証トークンを、後で取得できる保護された場所にただちにコピーします。これは、コンソールに認証トークンが再度表示されないようにするためです。
  4. 「トークンの生成」ダイアログを閉じます。

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

4. レジストリにログイン

コンソール「スタート・ガイド」ページで、次の手順を実行します。

  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 Functionsを使用して最初のファンクションを作成、デプロイおよび起動しました。

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

4. 次のステップ

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

これで完了です。