LoginSignup
2
0

Cloud ShellからOCI Functionsをデプロイする時はコンピュート・アーキテクチャを揃えないとエラーが出る

Posted at

はじめに

OCI FunctionsをCloud Shellからデプロイしようとしたところエラーが発生したので対処法をまとめてみました。
原因はFunctionsアプリケーション作成時に指定したコンピュート・アーキテクチャとCloud Shellのアーキテクチャが異なっていたためでした。

発生したエラー

# テンプレートから生成
$ fn init --runtime java hello-java

$ cd hello-java

# Functionをデプロイ、ここでエラー発生
$ fn deploy --app helloworld-app
Deploying helloworld-func to app: helloworld-app
Bumped to version 0.0.4
Using Container engine docker
Building image nrt.ocir.io/<namespace割愛>/functionsdemo/helloworld-func:0.0.4 TargetedPlatform:  amd64HostPlatform:  arm64

Error during build. Run with `--verbose` flag to see what went wrong. eg: `fn --verbose CMD`

Fn: error running docker build: Cannot create/use builder instance docker for oci_fn_builder : exit status 125

See 'fn <command> --help' for more information. Client version: 0.6.29

対処法

エラーメッセージで検索した結果、以下の記事を発見しました。
コンピュート・アーキテクチャが異なっているためエラーが発生していました。
Functionsアプリケーションは GENERIC_X86 で作成していたのですが、Cloud SHell側が ARM になっていたみたいです。

Cloud Shellの左上、[アクション] > [アーキテクチャ]からFunctionsアプリケーションで指定した X86-64 に設定を変更したところ、デプロイが正常に完了しました。

image.png

ドキュメントも確認してみる

Cloud Shellのデフォルト・アーキテクチャは以下の通り。どちらが選択されるかはリージョンのリソース次第ということですかね。

デフォルトでは、アーキテクチャ・プリファレンスは「プリファレンスなし」に設定されています。これを選択すると、クラウド・シェル・セッションは、リージョンで使用可能なハードウェアに応じて、x86_64またはARM (aarch64)アーキテクチャに基づきます。

OCI Functionsを実行するコンピュート・アーキテクチャの指定についてはこちらのドキュメントに記載がありました。
作成したイメージ基づいて適切なシェイプ(アーキテクチャ)でFunctionを作成するように記載されていました。

OCI Functionsにファンクションをデプロイする場合、ファンクションを実行するコンピュート・インスタンスのプロセッサ・アーキテクチャを指定できます。ファンクションを単一のアーキテクチャ(Armなど)で実行するように制限することも、ファンクションを複数のアーキテクチャ(Armとx86の両方など)で実行できるようにすることもできます。

関数を実行するプロセッサアーキテクチャーを指定するには、3つの手順があります。

  • アプリケーションを作成し、ファンクションを実行するアーキテクチャをサポートするアプリケーションのシェイプを選択します。ファンクションを実行する単一のアーキテクチャまたは複数アーキテクチャのアプリケーション・シェイプの選択を参照してください。
  • 関数を実行するアーキテクチャに必要な依存関係(子イメージ)を含むイメージを構築します。マルチアーキテクチャ(マルチアーカイブ)イメージの構築および単一アーキテクチャ・イメージの構築を参照してください。
  • 作成したイメージに基づいて、適切なシェイプでアプリケーションにファンクションを作成します。ファンクションの作成を参照してください。

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0