アーカイブを使用したローカルホストでの関数クイックスタート(コード専用関数)
OCI Functionsでコード専用ファンクションを作成、デプロイおよび起動して、ローカル・ホストで迅速に設定および実行する方法をご確認ください。
このQuickStartは、Fn Project CLIを使用してコード専用ファンクションを作成します。コンテナ・イメージを構築および公開してイメージベースのファンクションを作成するには、イメージベースのHelloworldファンクションの作成、デプロイおよび起動を参照してください。
A. テナンシを設定します
適切なユーザーおよびグループが存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティおよびセキュリティ」を選択します。「アイデンティティ」で、「ドメイン」を選択します。
- ドメインを選択し、「User management」タブを選択します。
- 「グループ」セクションで「グループの作成」を選択して、新しいグループを作成します。
- 「ユーザー」セクションで「作成」を選択して、新しいユーザーを作成します。
- グループの名前を選択してユーザーをグループに追加し、「ユーザー」タブで「ユーザーをグループに割り当てます」を選択します。
詳細は、「構成ノート」を参照してください。
ネットワーク・リソースおよびOCIファンクション・リソースを作成する適切なコンパートメントがまだ存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティおよびセキュリティ」を選択します。「アイデンティティ」で、「コンパートメント」を選択します。
- 「コンパートメントの作成」を選択します。
詳細は、「構成ノート」を参照してください。
ネットワーク・リソースを作成する適切なVCNがまだ存在しない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「ネットワーキング」、「仮想クラウド・ネットワーク」の順に選択します。
- 「アクション」メニューから「VCNウィザードの起動」を選択して、新しいVCNを作成します。
- 「VCNウィザードの起動」パネルで、「インターネット接続性を持つVCNの作成」を選択し、「VCNウィザードの起動」を選択します。
- 新しいVCNの名前を入力し、「次」、「作成」の順に選択して、VCNを関連するネットワーク・リソースとともに作成します。
詳細は、「構成ノート」を参照してください。
1人以上のOCI Functionsユーザーがテナンシ管理者ではない場合:
- テナンシ管理者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「アイデンティティおよびセキュリティ」を選択します。「アイデンティティ」で、「ポリシー」を選択します。
-
「ポリシーの作成」を選択し、新しいポリシーの名前と説明を指定して、テナンシのルート・コンパートメントを選択します。
-
ポリシーの作成には、ポリシー・ビルダーを使用します。「ポリシー・ユース・ケース」のリストから「ファンクション」を選択し、ポリシー・テンプレートの「ユーザーによるファンクションおよびアプリケーションの作成、デプロイおよび管理」に基づいてポリシーを作成します。
ポリシー・テンプレートには、次のポリシー・ステートメントが含まれています。
Allow group <group-name> to use cloud-shell in tenancyAllow group <group-name> to manage repos in tenancyAllow group <group-name> to read objectstorage-namespaces in tenancyAllow group <group-name> to manage logging-family in tenancyAllow group <group-name> to read metrics in tenancyAllow group <group-name> to manage functions-family in tenancyAllow group <group-name> to use virtual-network-family in tenancyAllow group <group-name> to use apm-domains in tenancyAllow group <group-name> to read vaults in tenancyAllow group <group-name> to use keys in tenancyAllow service faas to use apm-domains in tenancyAllow service faas to {KEY_READ} in tenancy where request.operation='GetKeyVersion'
必要に応じて、これらのポリシー・ステートメントをコンパートメントごとに制限できます。
暗号化キーなどの必要なリソースが別のテナンシにある場合は、クロステナンシ・リソース・プリンシパル・ポリシーを使用します。
詳細は、「構成ノート」を参照してください。
B. アプリケーションの作成
- ファンクション開発者としてコンソールにサインインします。
- ナビゲーション・メニューを開き、「開発者サービス」を選択します。「関数」で、「アプリケーション」を選択します。
- OCI Functionsで使用しているリージョンを選択します。
- 「アプリケーションの作成」を選択します。
- 次を指定します。
- 新しいアプリケーションの名前としてのhelloworld-app。このアプリケーションに最初のファンクションをデプロイし、ファンクションの呼出し時にこのアプリケーションを指定します。
- ファンクションを実行するVCNおよびサブネット。パブリック・サブネットにはVCN内にインターネット・ゲートウェイが必要であり、プライベート・サブネットにはVCN内にサービス・ゲートウェイが必要であることに注意してください。
- 「作成」を選択します。
詳細は、詳細な手順を参照してください。
C. ローカル・ホスト開発環境の設定
- ファンクション開発者としてのコンソールへのサインイン。
-
ナビゲーション・メニューで、「プロファイル」メニュー
を選択し、「ユーザー設定」を選択します。
- 「トークンとキー」タブを選択し、「APIキー」セクションに移動して、「APIキーの追加」を選択します。
- 「APIキーの追加」パネルで「APIキー・ペアの生成」を選択します。
- 「秘密キーのダウンロード」を選択し、秘密キー・ファイル(.pemファイル)を
~/.ociディレクトリに保存します(~/.ociディレクトリが存在しない場合は、ここで作成します)。 - 「追加」を選択して、新しいAPI署名キーをユーザー設定に追加します。
「構成ファイルのプレビュー」ダイアログが表示され、
DEFAULTという名前のプロファイルの基本認証情報を含む構成ファイル・スニペット(作成したAPI署名キーのフィンガープリントを含む)が含まれます。 - テキスト・ボックスに表示されている構成ファイル・スニペットをコピーし、「構成ファイルのプレビュー」ダイアログを閉じます。
- テキスト・エディタで、
~/.oci/configファイルを開き、スニペットをファイルに貼り付けます。(~/.oci/configファイルがまだ存在しない場合は、ここで作成します)。 - テキスト・エディタで、貼り付けたスニペットのプロファイルを次のように変更します。
- プロファイルの名前を
[DEFAULT]から、選択した名前に変更します(たとえば、[functions-developer-profile])。~/.oci/configファイルには、同じ名前の2つのプロファイルを含めることはできません。 - プロファイルの
key_fileパラメータの値を変更して、以前にダウンロードした秘密キー・ファイル(.pemファイル)のパスを指定します。
- プロファイルの名前を
- テキスト・エディタで、
~/.oci/configファイルに加えた変更を保存し、テキスト・エディタを閉じます。 - ターミナル・ウィンドウで、次のように入力して、秘密キー・ファイル(.pemファイル)の権限を変更し、読取り専用であることを確認します。
chmod go-rwx ~/.oci/<private-key-file-name>.pem
API署名キーの設定およびプロファイルの作成の詳細は、「構成ノート」を参照してください。
開発環境のターミナル・ウィンドウで、次の手順を実行します。
- 使用している環境に対して、次の適切な手順を使用してFn Project CLIをインストールします。
- LinuxまたはMacOS: 次のように入力します。
curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh - Homebrewを使用したMacOS: Enter:
brew update && brew install fn - Windows: GitHubでのFnクライアントのインストール手順に従います。
- Linux、MacOSまたはWindows: GitHubの「Fn Project Releases」ページからバイナリをダウンロードして実行します。
- LinuxまたはMacOS: 次のように入力します。
- 次のように入力して、Fn Project CLIがインストールされていることを確認します。
fn version
詳細は、「構成ノート」を参照してください。
開発環境のターミナル・ウィンドウで、次の手順を実行します。
- 次のように入力して、新しいFn Project CLIコンテキストを作成します。
fn create context <my-context> --provider oracle--provider oracleを指定すると、Oracle Cloud Infrastructureリクエスト署名、秘密キー、ユーザー・グループが、およびそれらのユーザー・グループに権限を付与するポリシーを使用して、認証および認可が有効になります。 - 次を入力して、Fn ProjectのCLIが新しいコンテキストを使用するように指定します:
fn use context <my-context> - 次のように入力して、OCI Functionsで使用するために作成したOCIプロファイルの名前で新しいFn Project CLIコンテキストを構成します(たとえば、
[functions-developer-profile])。fn update context oracle.profile <profile-name>
詳細は、「構成ノート」を参照してください。
開発環境のターミナル・ウィンドウで、次の手順を実行します。
- デプロイ済ファンクションを所有するコンパートメントのOCIDを使用して、新しいFn Project CLIコンテキストを構成します
fn update context oracle.compartment-id <compartment-ocid> - 次のように入力して、OCIのコール時に使用するAPI-urlエンドポイントで新しいコンテキストを構成します。
fn update context api-url <api-endpoint>ここで、
<api-endpoint>は、ファンクションAPIの1ファンクション1・エンドポイントのリストにあるエンドポイントのの1つです。フォーマットはhttps://functions.<region-identifier>.oci.oraclecloud.comです。例:fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
詳細は、「構成ノート」を参照してください。
D. コード専用ファンクションを作成、デプロイおよび起動します。
ターミナル・ウィンドウで、次の手順を実行します。
-
次のように入力してhelloworld Javaファンクションを作成します。
fn init --code-only --runtime-name java21.ol9 --runtime-config-type function-update hello-javahello-javaというディレクトリが作成され、次のものが含まれます。
- 関数定義ファイルfunc.yaml
- helloworld関数のソース・ファイルとディレクトリを含む/srcディレクトリ
- pom.xmlというMaven構成ファイル。ファンクションをコンパイルするために必要な依存性を指定します。
Javaは、サポートされているいくつかの言語の1つにすぎません。
詳細は、詳細な手順を参照してください。
ターミナル・ウィンドウで、次の手順を実行します。
- 前のステップで作成したhello-javaディレクトリにディレクトリを変更します。
cd hello-java - 次のFn Projectコマンドを入力して、関数とその依存関係を構築します。
fn build - 次のFn Projectコマンドを入力して、前に作成した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 Functionsを調べます(Oracle Functionsサンプルを参照)
- SDKを使用してファンクションを呼び出します(SDKを使用したファンクションの呼出しを参照)
これで完了です。