クラウド・シェルでのファンクションのクイックスタート
このOCI Functions QuickStartを使用して、Cloud Shellで迅速に設定および実行する方法をご覧ください。
A.テナンシを設定します
適切なユーザーおよびグループが存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」で、「ドメイン」を選択します。
- ドメインを選択し、「ユーザーの管理」タブを選択します。
- 「グループ」セクションで「グループの作成」を選択して、新しいグループを作成します。
- 「ユーザー」セクションで「作成」を選択して、新しいユーザーを作成します。
- グループの名前を選択し、「ユーザー」タブで「ユーザーをグループに割り当てる」を選択して、ユーザーをグループに追加します。
詳細は、構成ノートを参照してください。
ネットワーク・リソースおよびOCI Functionsリソースを作成する適切なコンパートメントがまだ存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」で、「コンパートメント」を選択します。
- 「コンパートメントの作成」を選択します。
詳細は、構成ノートを参照してください。
ネットワーク・リソースを作成する適切なVCNがまだ存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「ネットワーキング」、「仮想クラウド・ネットワーク」の順に選択します。
- 「アクション」メニューから「VCNウィザードの起動」を選択して、新しいVCNを作成します。
- 「VCNウィザードの起動」パネルで、「インターネット接続性を持つVCNの作成」を選択し、「VCNウィザードの起動」を選択します。
- 新しいVCNの名前を入力し、「次」、「作成」の順に選択して、関連するネットワーク・リソースとともにVCNを作成します。
詳細は、構成ノートを参照してください。
1人以上のOCI Functionsユーザーがテナンシ管理者でない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」を選択します。「アイデンティティ」にある「ポリシー」を選択します。
- 
「ポリシーの作成」を選択し、新しいポリシーの名前と説明を指定して、テナンシのルート・コンパートメントを選択します。 
- 
ポリシー・ビルダーを使用してポリシーを作成します。「ポリシー・ユース・ケース」のリストから「ファンクション」を選択し、ポリシー・テンプレートの「ユーザーによるファンクションおよびアプリケーションの作成、デプロイおよび管理」に基づいてポリシーを設定します。 このポリシー・テンプレートには、次のポリシー・ステートメントが含まれます: - 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アプリケーションの作成
- ファンクション開発者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「開発者サービス」を選択します。「関数」で、「アプリケーション」を選択します。
- OCI Functionsで使用しているリージョンを選択します。
- 「アプリケーションの作成」を選択します。
- 次を指定します:- 新規アプリケーションの名前としてhelloworld-app。このアプリケーションに最初のファンクションをデプロイし、ファンクションの起動時にこのアプリケーションを指定します。
- ファンクションを実行するVCNおよびサブネット。パブリック・サブネットにはVCN内のインターネット・ゲートウェイが必要で、プライベート・サブネットにはVCN内のサービス・ゲートウェイが必要です。
 
- 「作成」を選択します。
詳細は、詳細な手順を参照してください。
C.Cloud Shell開発環境を設定します
コンソールの「アプリケーション」リスト・ページで:
- 作成したhelloworld-appアプリケーションを選択して、アプリケーションの詳細ページを表示します。
- 
「スタート・ガイド」セクションに移動し、クラウド・シェルの設定の横にある「ガイドの表示」を選択します。 ヒント: 「クラウド・シェルの設定」パネルに、専用のコマンドが表示されるようになりました。これらのコマンドをコピーして貼り付けて、ファンクション開発用のクラウド・シェル環境を構成します。 
- クラウド・シェルの起動を選択して、クラウド・シェルの起動ターミナル・ウィンドウを表示します。
- クラウド・シェルの端末ウィンドウで、「アクション」メニューから「アーキテクチャ」を選択し、優先アーキテクチャとしてX86_64オプションを選択します。
「クラウド・シェル設定」パネルからコマンドをコピーして「クラウド・シェル」ターミナル・ウィンドウに貼り付け、次のように環境を構成します:
- 
アプリケーションを作成した現在のリージョンの事前作成済Fnプロジェクト・コンテキストの名前を検索します。 fn list context少なくとも2つのFn Projectコンテキスト、デフォルト・コンテキスト、および現在のリージョンのコンテキスト(たとえば、us-phoenix-1という名前)が返されます。必須ではありませんが、必要に応じて、コマンド fn create context <my-context> --provider oracle-csを入力して、クラウド・シェルで使用する独自のコンテキストを作成し、後続のコマンドでそのコンテキストを指定できます。
- 
リージョン・コンテキストを使用するようにFn Projectコンテキストを設定します。 fn use context <region-context><region-context>は、現在のリージョンのコンテキストです。例:fn use context us-phoenix-1
- 
デプロイされたファンクションを所有する現在のコンパートメントのOCIDを使用してFn Projectコンテキストを構成します: fn update context oracle.compartment-id <compartment-ocid>例: fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
- 
OCIファンクションで使用する現在のリージョンおよびテナンシのOracle Cloud Infrastructure Registryアドレスを使用して、Fn Projectコンテキストを構成します: fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>ここで、 <tenancy-namespace>はテナンシの自動生成されたオブジェクト・ストレージ・ネームスペースで、<repo-name-prefix>は、ファンクションのイメージを格納するOracle Cloud Infrastructure Registryリポジトリに選択した接頭辞です(詳細は、構成ノートを参照)。例:fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
- 
次のように入力して、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______z2qoracle.image-compartment-idの値を指定しない場合、OCI関数はルート・コンパートメント内のリポジトリに対してイメージをプッシュおよびプルします。
詳細は、構成ノートを参照してください。
コンソールの「クラウド・シェル設定」パネルで:
- 「認証トークンの生成」を選択して「認証トークン」ページを表示し、「トークンの生成」を選択します。
- 「トークンの生成」ダイアログで認証トークンのわかりやすい説明を入力し、「トークンの生成」を選択します。新しい認証トークン(6aN...6MqXなど)が表示されます。
- 認証トークンを、後で取得できる保護された場所にただちにコピーします。これは、コンソールに認証トークンが再度表示されないようにするためです。
- 「トークンの生成」ダイアログを閉じます。
詳細は、構成ノートを参照してください。
コンソールの「クラウド・シェル設定」パネルで:
- 
次のコマンドをコピーします。 docker login -u '<tenancy-namespace>/<user-name>' <region-key>.ocir.ioここで、 <tenancy-namespace>はテナンシの自動生成されたオブジェクト・ストレージ・ネームスペースです(詳細は、構成ノートを参照してください)。例: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
- ターミナル・ウィンドウで、コピーしたコマンドを貼り付けて実行します。
- 
パスワードの入力を求められたら、前に作成してコピーしたOracle Cloud Infrastructure認証トークンを入力します。たとえば、 6aN...6MqXです。これで、ファンクションの作成、デプロイおよび起動を開始する準備ができました。 
詳細は、構成ノートを参照してください。
D.ファンクションの作成、デプロイおよび呼出し
ターミナル・ウィンドウで:
- 
次のように入力してhelloworld java関数を作成します。 fn init --runtime java hello-javahello-javaというディレクトリが作成され、次のものが含まれます。 - func.yamlという関数定義ファイル
- helloworldファンクションのソース・ファイルとディレクトリを含む/srcディレクトリ
- pom.xmlというMaven構成ファイル。ファンクションのコンパイルに必要な依存性を指定します。
 Javaは、サポートされている複数の言語の1つにすぎません。 詳細は、詳細な手順を参照してください。 
ターミナル・ウィンドウで:
- 前のステップで作成したhello-javaディレクトリに移動します。cd hello-java
- 次の単一のFn Projectコマンドを入力して、ファンクションとその依存関係をhello-javaというDockerイメージとして作成し、そのイメージを指定したDockerレジストリにプッシュし、前に作成したhelloworld-appアプリケーションでそのファンクションをOCIファンクションにデプロイします。fn -v deploy --app helloworld-app
- (オプション)「関数」タブ(helloworld-appアプリケーションの詳細ページ)を選択し、hello-java関数が表示されるようになったことに注意して、関数がOCI関数にデプロイされたことを確認します。
詳細は、詳細な手順を参照してください。
ターミナル・ウィンドウで:
- 
次のように入力してhello-java関数を起動します。 fn invoke helloworld-app hello-java「Hello world!」メッセージが表示されます。 
- 
次のように入力して、パラメータ 'John'を使用してhello-java関数を起動します。echo -n 'John' | fn invoke helloworld-app hello-java「Hello John!」メッセージが表示されます。 
完了しました。OCI Functionsを使用して最初のファンクションを作成、デプロイおよび起動しました。
詳細は、詳細な手順を参照してください。
ファンクションを作成、デプロイおよび起動したので、次のことを学習します。
- Oracle Cloud Infrastructure Loggingサービスでのファンクション・ログの表示、またはsyslog URLの構成によるファンクション・ログの表示(ファンクション・ログの格納および表示を参照)
- GitHubのサンプルを使用したOCI関数の確認(Oracle Functionsのサンプルを参照)
- SDKを使用してファンクションを呼び出します(「SDKを使用したファンクションの呼出し」を参照)
これで完了です。