Skip to content

C101PAでOracle Functionsを試す

   

OCHaCafe参加前に触っておこうと思い、その準備。

OCIインストール

手順は公式からコピペで。

$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

fatal error: Python.h: No such file or directoryエラーで落ちたので、python3-devパッケージをインストール。

$ sudo apt-get install python3-dev

OCI再挑戦。先程作成したディレクトリを削除するか聞かれるので、削除(y)して継続。 ちなみにインストール先など入力は全部デフォルトで通した。 今度はfatal error: ffi.h: No such file or directoryで落ちた。

$ sudo apt-get install libffi-dev

3度目の挑戦。 fatal error: openssl/opensslv.h: No such file or directoryはい。

$ sudo apt-get install libssl-dev

今度こそ。 できた。表示に従ってshellを再起動する。

$ exec -l $SHELL

バージョン確認。

$ oci -v
-bash: oci: command not found

うーん。PATHがちゃんと設定されていない。というか.bashrcが読み込まれてない。

$ bash
$ oci -v
2.6.10

とりあえずOK。

OCI設定

Qiitaの記事を参考にすすめた。

  • APIユーザー作成
    • api
  • oci setup configで生成された公開鍵設定
  • 動作確認
    $ oci iam region list --output table
    +-----+----------------+
    | key | name           |
    +-----+----------------+
    | BOM | ap-mumbai-1    |
    | FRA | eu-frankfurt-1 |
    | GRU | sa-saopaulo-1  |
    | IAD | us-ashburn-1   |
    | ICN | ap-seoul-1     |
    | LHR | uk-london-1    |
    | NRT | ap-tokyo-1     |
    | PHX | us-phoenix-1   |
    | SYD | ap-sydney-1    |
    | YYZ | ca-toronto-1   |
    | ZRH | eu-zurich-1    |
    +-----+----------------+
    

Functionsに挑戦

ここからは別のQiita記事を参考に。

  • VCNはすでにあったものを使用。
  • CompartmentはAPI用に作成。
    • api_test
  • IAM groupを作成、APIユーザーをグループに追加。
    • api_group
  • Policyを作成、Statementを追加。
  • fnコマンドインストール
    $ curl -LSs https://raw.githubusercontent.com/fnproject/cli/master/install | sh
    sh: 58: fn: Exec format error
    
    結構時間かかる。set -exしておいてくれればいいのに。そしてエラー。arm用バイナリがない。
  • fnコマンドビルド CONTRIBUTINGに手順があったので試してみる。
    $ git clone https://github.com/fnproject/cli.git $GOPATH/src/github.com/fnproject/cli
    $ cd $GOPATH/src/github.com/fnproject/cli
    $ make dep
    $ make install
    $ sudo cp $GOPATH/bin/fn /usr/local/bin/fn
    $ fn --version
    fn version 0.5.91
    
    OK。
  • contextの作成と選択
    $ fn create context api_context
    $ fn use context api_context
    $ fn ls contexts
    CURRENT NAME            PROVIDER        API URL                 REGISTRY
    *       api_context     oracle
            default         default         http://localhost:8080
    
  • contextのupdate
    $ fn update context oracle.compartment-id <compartment-ocid>
    $ fn update context api-url https://functions.us-phoenix-1.oraclecloud.com
    $ fn update context registry phx.ocir.io/<tenancy-name>/oracle-function
    $ fn update context oracle.profile DEFAULT
    
  • token取得とdockerログイン
    $ oci iam auth-token create --user-id <user-ocid> --description oracle-fuction
    $ sudo docker login phx.ocir.io -u <tenancy name>/<iam user name>
    
    エラー。phxにアクセスしに行っているのが良くないっぽい。東京リージョンはnrtを指定する。 https://docs.cloud.oracle.com/iaas/Content/Registry/Concepts/registryprerequisites.htm#Availab 空港コード?hndじゃないのか。 設定を修正
    $ fn update context api-url https://functions.ap-tokyo-1.oraclecloud.com
    $ fn update context registry nrt.ocir.io/<tenancy-name>/oracle-function
    $ sudo docker login nrt.ocir.io -u <tenancy name>/<iam user name>
    
    同じエラー。。
    Error response from daemon: Get https://nrt.ocir.io/v2/: unknown: Tenant with namespace ****** not found