---
title: OCI Functions をローカル環境から実行
tags: 
author: [yukitkns](https://www.docswell.com/user/3200799740)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KJ4V1G2ME1.jpg?width=480
description: OCI Functions をローカル環境から実行 by yukitkns
published: April 15, 25
canonical: https://www.docswell.com/s/3200799740/5V1EGJ-ocifn
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KJ4V1G2ME1.jpg)

OCI Functions をローカル環境から実行
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LE13GDMYJG.jpg)

アジェンダ
• 自己紹介
• 今回やりたいこと
• 事前準備
• 本手順
• アプリケーションを作成
• ローカル環境にPodman,Fn をインストール
• ローカル・セットアップでファンクションを作成
• ファンクションをアプリケーションにプッシュ
• ファンクションを起動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GEWPKY31J2.jpg)

今回やりたいこと
ローカル環境でFn をセットアップ、
OCI 上のファンクションを起動できる
か検証
※Docker→Podman に環境変更を実施
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47ZKZXVX73.jpg)

事前準備
以下リソースは準備済
• コンパートメント
• ネットワーク系リソース
• VCN
• サブネット
• インターネット・ゲートウェイ
• ルート表
• IAM ポリシー
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ6QZ45PJV.jpg)

OCI Functions とは？
• OCI サービス向けに最適化されたサーバレス・プラットフォーム
• ユースケース
• CPU 使用率が急上昇した時に、Functions に連携、スケールアップを実施
• ファンクション関連の最近のリリース
• ファンクションのメモリが最大2GB→3GBに拡張
• クラウド・シェル環境からDocker Engine が実行不可
代わりにPodman※後述 が提供
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ5RWQYP74.jpg)

設定
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LE3P4V56J5.jpg)

本手順
1. アプリケーションを作成
2. ローカル環境にPodman,Fn をインストール
3. ローカル・セットアップでファンクションを作成
4. ファンクションをアプリケーションにプッシュ
5. ファンクションを起動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 8

![Page Image](https://bcdn.docswell.com/page/8EDLQ8DMJG.jpg)

1.アプリケーションの作成
• 名前：任意（ここでは「helloworldapp」で作成）
• VCN・サブネット：準備済のリソースを
使用
• シェイプ：任意（ここではx86アーキテク
チャを使用）
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 9

![Page Image](https://bcdn.docswell.com/page/V7P2L8XQ78.jpg)

2.実行環境のセットアップ
以下手順で実施
① OCI CLI をインストール
② podmanとpodman-docker をインストール
③ Fn をインストール
④ Fn のコンテナエンジンを変更
⑤ Docker ログイン用の認証トークンを作成
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 10

![Page Image](https://bcdn.docswell.com/page/2JVDQNLPJQ.jpg)

①OCI CLI をインストール
• 端末にOCI CLI をインストール
• API キーベース認証を行うため
• CLI を使用して操作は未実施
• 構成ファイルを作成後、API キーを
OCI コンソールにアップロード
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 11

![Page Image](https://bcdn.docswell.com/page/5EGYWKXQEL.jpg)

②podmanとpodman-docker をインストール
• podmanとpodman-docker を以下コ
マンドでそれぞれインストール
• dnf install –y podman
• dnf install –y podman-docker
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4JQM3N8W7P.jpg)

※補足：Podmanとは
• Red Hat が開発
• Docker 互換のコンテナ管理ツール
• デーモンを使用せずコンテナを稼働
• root権限で操作が不要
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 13

![Page Image](https://bcdn.docswell.com/page/K74V1G21J1.jpg)

③Fn をインストール
• Fnを以下コマンドでインストール
• curl -LSs
https://raw.githubusercontent.com
/fnproject/cli/master/install | sh
※ Fn…Functions を操作するCLI ツール
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LJ13GDM57G.jpg)

④Fn のコンテナエンジンを変更
• デフォルトでは、Fnのコンテナエンジン
はDockerになっているため、Podman
に変更を行う必要がある
~/.fn/config.yaml
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GJWPKY3W72.jpg)

⑤Docker ログイン用の認証トークンを作成
• OCI コンソール画面からDocker のログインに必要な認証トークンを取得
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 16

![Page Image](https://bcdn.docswell.com/page/4EZKZXV2E3.jpg)

本手順
1. アプリケーションを作成
2. ローカル環境にPodman,Fn をインストール
3. ローカル・セットアップでファンクションを作成
4. ファンクションをアプリケーションにプッシュ
5. ファンクションを起動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 17

![Page Image](https://bcdn.docswell.com/page/Y76QZ4Y67V.jpg)

3.ローカル・セットアップでファンクションを作成
以下手順で実施
① ファンクションを作成
② コンテキストを作成
③ コンテキストの情報を更新
④ Dockerにログイン
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 18

![Page Image](https://bcdn.docswell.com/page/G75RWQG5E4.jpg)

①ファンクションを作成
• 「my-func」という名前で以下コマンド
でローカル上でファンクションを作成
• fn init --runtime python my-func
• fn init…新しいファンクションを初期化
• --runtime python…Pythonで実行
することを指定
• my-func…作成するファンクション名
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 19

![Page Image](https://bcdn.docswell.com/page/9J2DQPYGJR.jpg)

①ファンクションを作成
• コマンド実行後、ファンクション名(myfunc)と同じ名前のディレクトリが作成
• その中に各設定ファイルが生成
• func.py… ファンクションのスクリプト
デフォルトでテスト用コードが含まれる
• func.yaml…設定ファイル
• requirements.txt…依存関係の管理
ファイル
• 同じ名前のディレクトリに移動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 20

![Page Image](https://bcdn.docswell.com/page/DEY2W5GGEM.jpg)

②コンテキストを作成
• 以下コマンドでコンテキスト※を作成
※ 「作業スペース」のようなもの
• fn create context fn-compartment -provider oracle
• fn create context…新しいコンテキスト
を作成
• fn-compartment…コンテキストの名前
• --provider oracle…プロバイダ※を
OCIに設定
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 21

![Page Image](https://bcdn.docswell.com/page/VJN89NG878.jpg)

②コンテキストを作成
• 作成後、コンテキストを使用
• fn use context fn-compartment
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 22

![Page Image](https://bcdn.docswell.com/page/YE9K2RWXE3.jpg)

③コンテキストの情報を更新
• コンテキストにコンパートメントOCIDを設
定
• fn update context
oracle.compartment-id
ocid1.compartment.oc1..aaaaaaaaxxx
• ファンクションのエンドポイントURLを設定
• fn update context api-url
https://functions.ap-tokyo1.oraclecloud.com※
※ 東京リージョンの場合
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 23

![Page Image](https://bcdn.docswell.com/page/GE8R5WN9JD.jpg)

③コンテキストの情報を更新
• コンテナ・イメージのレジストリを更新
• fn update context registry
nrt.ocir.io/&lt;オブジェクト・ストレージの
ネームスペース&gt;/fn-repo※
※ 任意
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LELKYNPMJR.jpg)

④Dockerにログイン
• Dockerにログイン
• docker login -u ‘&lt;オブジェクト・ストレー
ジのネームスペース&gt;/fn-user’
nrt.ocir.io※
※ 東京リージョンの場合
• ログイン時、認証トークンのパスワードを使
用して認証を行う
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 25

![Page Image](https://bcdn.docswell.com/page/4JM2NX46JW.jpg)

本手順
1. アプリケーションを作成
2. ローカル環境にPodman,Fn をインストール
3. ローカル・セットアップでファンクションを作成
4. ファンクションをアプリケーションにプッシュ
5. ファンクションを起動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 26

![Page Image](https://bcdn.docswell.com/page/PJRMDNWNE9.jpg)

4.ファンクションをアプリケーションにプッシュ
• 以下コマンドでプッシュ
• fn deploy --app helloworld-app
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PEXV1NP87X.jpg)

4.ファンクションをアプリケーションにプッシュ
• OCIコンソールのアプリケーション詳細
を確認すると、ファンクションが作成され
ていることが分かる
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 28

![Page Image](https://bcdn.docswell.com/page/3EKQ2NDLED.jpg)

5.ファンクションを起動
• アプリケーションにプッシュしたファンク
ションを以下コマンドで実行
• fn invoke helloworld-app my-func
• 今回はテスト用スクリプトの状態でデプ
ロイしたため、実行結果として以下の出
力が表示
• {&quot;message&quot;: &quot;Hello World&quot;}
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 29

![Page Image](https://bcdn.docswell.com/page/L73P4VR6E5.jpg)

本手順
1. アプリケーションを作成
2. ローカル環境にPodman,Fn をインストール
3. ローカル・セットアップでファンクションを作成
4. ファンクションをアプリケーションにプッシュ
5. ファンクションを起動
Copyright © Cloudii Inc. All Rights Reserved.


# Page. 30

![Page Image](https://bcdn.docswell.com/page/87DLQ8YMEG.jpg)

Thank you for listening !!
Copyright © Cloudii Inc. All Rights Reserved.


