Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@Brutus

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

More than 1 year has passed since last update.

はじめに

本記事は、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の作成を行います。

参考

1
Help us understand the problem. What is going on with this article?
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
Brutus
DevOpsとAIの二刀流を目指すLinuxエンジニア。Python、RaspberryPi、Linux、Docker、k8s、セキュリティ、Oracle Cloud、Terraform、Ansible等について発信しています。
infra-workshop
インフラ技術を勉強したい人たちのためのオンライン勉強会です

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?