Help us understand the problem. What is going on with this article?

Oracle Cloudではじめるサーバレス Oracle Functionsことはじめ

はじめに

本記事は、Oracle CloudでOracle Functionsを使用するための必要な設定方法について記載しています。

2019年8月1日に、正式サービスとしてOracle Cloudのサーバレスを実現するためのOracle Functionsと、Oracle Functionsで作成した関数をイベントドリブンで呼び出せるOracle Cloud Infrastructure Eventsのリリースが発表されました。

Oracle Functionsの公式マニュアルはWebから参照できますが、設定に関して一連の流れがまとまっていないため、初見の場合とても分かりずらいです。

本記事は、最短距離でOracle CloudのOracle Functionsを使用するための設定手順について簡潔にまとめています。

サーバレス

はじめに、サーバレスについて簡単に解説します。

一般的なサーバレスの技術は、FaaS(Function as a Service)として分類されます。
他のクラウドサービスで言うと、AWS Lambdaがメジャーです。

実行時間に応じて課金されるため、コード(関数)が実行されていないときには料金は発生しません。スクリプトの実行環境のみ提供されるので、IaaSに比べて大分保守コストは下がります。

実用的には、イベントに連動してトラフィックやパフォーマンスが求めれる、現代型のクラウドを使用したアーキテクチャと親和性が高い技術になります。

ホスティングするクラウドサービスも増えてきているので、サーバレスが進むと、システムの抽象化もより進み、インフラの概念は大きく変わることでしょう。

Oracle Functions

Oracle Functionsを使用するためには、Oracle FunctionsとOracle Cloud Infrastructure Eventsの設定が必要ですが、その他にも準備作業があります。

全体的に以下の作業が必要です。

  1. アクセス権の設定
  2. OCIRリポジトリの作成
  3. Oracle Functionsの作成
  4. Oracle Eventsの作成

本記事では、Oracle Functionsを使うために必要な上記、「アクセス権の設定」と「OCIRリポジトリの作成」について記載しています。

アクセス権の設定

ファンクションを作成するには、ユーザー・アカウントに、少なくとも1つのOCIRリポジトリと関連イメージに対するアクセス権が必要です。はじめに、アクセス権を設定するためのユーザを作成(※)します。

(※)既存ユーザを使用する場合は、ユーザ作成は不要

ユーザ

はじめに、Oracle Functionsで使用するユーザを作成します。
このユーザは、compartment単位で考えます。

また、APIの公開キーとトークンも合わせて設定します。

グループ

ユーザ作成後、ユーザが所属するグループを作成(※)し、グループに先ほど作成したユーザを追加します。

(※)既存グループを使用する場合は、ユーザ作成は不要

ポリシー

グループ作成後、親コンパートメントのポリシーに以下のポリシー・ステートメントを設定します。

allow group <グループ名> to manage repos in tenancy
allow group <グループ名> to manage cloudevents-rules in tenancy
  • 設定画面

スクリーンショット 2019-08-13 13.35.04.png

  • 設定後の画面例

スクリーンショット 2019-08-13 13.35.55.png

OCIRリポジトリの作成

次に、OCIRリポジトリと関連イメージを作成します。

OCIRリポジトリの作成

必要に応じて、OCIRリポジトリを作成します。
なお、OCIRリポジトリが存在しない場合は、docker pushコマンド実行時にリポジトリが作成されます。

スクリーンショット 2019-08-13 13.54.47.png

イメージのアップロード

以下のコマンドを実行し、Oracle Cloud Infrastructure Registryにログインします。

# docker login nrt.ocir.io

Username: <コンパートメント名>/<リポジトリ名>
Password: 
Login Succeeded

以下のコマンドを実行し、Oracle Cloud Infrastructure Registryにプッシュするタグをイメージに付けます。

# docker tag <コンテナID> nrt.ocir.io/<コンパートメント名>/<リポジトリ名>/<イメージ名>:<タグ名>

以下のコマンドを実行し、Oracle Cloud Infrastructure Registryにプッシュします・

# docker push nrt.ocir.io/<コンパートメント名>/<リポジトリ名>/<イメージ名>:<タグ名>

docker pushコマンドが失敗する場合は、ポリシーの設定に不備があります。ポリシーを設定しているコンパートメントの場所にも考慮が必要です。

  • docker pushコマンド失敗の例
denied: User UserId(ocid1.user.***) cannot UploadDockerLayer on resource mytenant/myproject

おわりに

上記、準備作業が終わったら、Oracle Functionsの作成とOracle Eventsの作成を行います。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした