OCI関数の既知の問題
OCI Functionsでは、既知の問題が確認されています。
ファンクションは、172.17.0.0/16のCIDRブロックが割り当てられたサブネット内のVMへの接続に失敗します
- 詳細
-
ファンクションが、172.17.0.0/16のIPv4 CIDRブロックが割り当てられているサブネットにある仮想マシン(VM)インスタンスに接続しようとすると、ファンクションはVMインスタンスへの接続の確立に失敗します。
- 背景
-
OCI Functionsは、ブリッジ・ネットワークを使用します。これは、同じブリッジ・ネットワークに接続されたコンテナが相互に通信できるようにする仮想ネットワークです。デフォルトのブリッジ・ネットワークでは、通常、172.17.0.0/16のIPv4 CIDRブロックが割り当てられているサブネットが使用されます。
ファンクションが、172.17.0.0/16のIPv4 CIDRブロックも割り当てられているサブネットに存在するVMインスタンスに接続しようとすると、VMに接続できないようにするIPアドレスの競合が発生します。
- 回避策
-
VMが存在するサブネットに、172.17.0.0/16以外のIPv4 CIDRブロックを割り当てます。例、 10.0.1.0/24 、 172.18.20.64/28
GoまたはdotnetファンクションがARM (aarch64)に基づいてクラウド・シェル・セッションへのデプロイに失敗する
- 詳細
-
Go FDKまたはドットネットFDKを使用してクラウド・シェル・セッションでファンクションを構築し、クラウド・シェル・セッションがARM (aarch64)アーキテクチャに基づいている場合、Fn Project CLIを使用してファンクションをデプロイしようとすると、コマンドは次のメッセージで失敗します:
Failed to map segment from shared object
- 背景
-
クラウド・シェルは、書込み時にOracle Linux 7をベース・イメージとして使用します。ただし、Oracle Linux 7がARMアーキテクチャで実行されている場合、Oracle Linux 7はGoおよびdotnet FDKの共有ライブラリのマップに失敗します。その結果、Fn ProjectのCLIコマンドは
Failed to map segment from shared object
メッセージで失敗します。 - 回避策
-
共有ライブラリのマップの失敗は、Oracle Linux 8で対処されます。クラウド・シェルがOracle Linux 7からOracle Linux 8に移行すると(現在、2024年末に計画されている)、Goおよびdotnet FDKを使用して構築された関数の問題は解決されます。その間に、次の回避策を検討します。
- オプション1: クラウド・シェルのアーキテクチャをX86_64に変更します
クラウド・シェル・セッションのアーキテクチャをARM (aarch64)からX86_64に柔軟に切り替えることができる場合は、変更します。
- オプション2: Oracle Linux 8イメージを使用するARMベースのVMの使用
クラウド・シェル・セッションのアーキテクチャをARM (aarch64)からX86_64に柔軟に変更できない場合は、Oracle Linux 8イメージを使用するARMベースのVMの使用を検討してください。基本的な手順を次に示します。
- Oracle Linux 8イメージを使用するARMベースのVMを作成します(インスタンスの作成を参照)。
- OCIファンクションを実行するようにVMを設定します(OCIコンピュート・インスタンス上のファンクションQuickStartを参照)。
- ファンクションを構築し、VMにデプロイします(OCIコンピュート・インスタンス上のファンクションQuickStartを参照)。
ファンクションをデプロイしたら、VMまたはクラウド・シェルから起動できます。
- オプション1: クラウド・シェルのアーキテクチャをX86_64に変更します