ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントに例の値を使用します。演習を終える際は、これらの値をクラウド環境に固有の値に置き換えてください。
OCI関数を使用したリソース・プリンシパル認証によるKafkaストリームへのメッセージのポスト
イントロダクション
リアルタイムのデータ・パイプラインのオーケストレーションにおいて、Oracle Cloud Infrastructure(OCI)FunctionsとOCI Streamingのシームレスな相乗効果を発見します。このチュートリアルでは、Oracleリソース・プリンシパル認証方法とシングルトン設計パターンを活用して、メッセージ生成に対するセキュアで効率的なアプローチについて説明します。リソース・プリンシパル認証により、OCIストリーミング・サービスでサーバーレス機能をシームレスに認証し、シングルトン・パターンによってリソース使用率を最適化し、メッセージ生成効率を向上させることで、セキュリティ管理をどのように簡素化するかをご覧ください。OCI FunctionsとOCI Streamingの融合を掘り下げ、開発者が堅牢でスケーラブルなイベント駆動型ソリューションを容易に設計できるようにします。
OCI Streaming: OCIには、クラウド内のデータを処理するためのツールが数多くあります。OCI Streamingは、高スループットのリアルタイム・データ・ストリーム向けにカスタマイズされたサービスです。開発者は、OCI Streamingを活用することで、データ・ストリームを効率的に取り込み、処理、配布するスケーラブルで信頼性の高いデータ・パイプラインを構築できます。
OCI Functions: OCI Functionsは、完全に管理された、マルチテナントでスケーラビリティが高いオンデマンドのファンクション・ア・サービス・プラットフォームです。エンタープライズグレードのOCI上に構築されており、Fn Projectオープン・ソース・エンジンによって強化されています。ビジネス・ニーズを満たすためのコードの作成に焦点を当てる場合は、OCI Functions (Functions、旧称Oracle Functions)を使用します。
リソース・プリンシパル認証:リソース・プリンシパルを使用して、OCIリソースを認証し、これにアクセスできます。リソース・プリンシパルは、OCI関数がOCIストリーミングなどの他のOCIサービスに対して自身を認証できるようにする一時セッション・トークンおよびセキュアな資格証明で構成されます。
ノート:
- このチュートリアルは、教育および研究目的でのみ設計されています。これは、学習者が制御された設定で実験し、実用的な経験を得るための環境を提供します。このチュートリアルで使用するセキュリティ構成および演習は、実際のシナリオには適していない場合があります。
- 実際のアプリケーションのセキュリティに関する考慮事項は、多くの場合、はるかに複雑で動的です。したがって、本番環境でここに示したいずれかの手法または構成を実装する前に、包括的なセキュリティ評価およびレビューを行うことが不可欠です。このレビューには、アクセス制御、暗号化、監視、コンプライアンスなど、セキュリティのすべての側面が含まれ、システムが組織のセキュリティ・ポリシーおよび標準に準拠していることを確認する必要があります。
- 演習環境から実際のデプロイメントに移行する場合、セキュリティは常に最優先事項である必要があります。
目的
- OCI Functionsを使用して、OCIストリーム・プール内のストリーミング・トピックにメッセージをシームレスに生成します。Oracleリソース・プリンシパル認証方法を活用し、Javaでシングルトン設計パターンを実装することで、Kafka APIを使用してサーバーレス関数を安全に認証し、リソース使用率を最適化して効率的なメッセージ生成を実現するプロセスをガイドします。
前提条件
-
Oracle Cloud Infrastructure
-
管理者レベルのアクセス権限を持つOracleアカウント。
-
リソースを作成するためのコンパートメント。
ノート:コンパートメント名とコンパートメントIDに注意してください。
-
プライベート・サブネットを持つVCN。詳細は、「Virtual Cloud Networkの作成」を参照してください。
-
VCNからのプライベート・サブネット上のストリーム・プール。詳細は、ストリーム・プールの作成を参照してください。
-
前述のストリーム・プールに作成された、
my-pvt-topic
というストリーム。詳細は、ストリームの作成を参照してください。
-
-
ローカル・マシン環境
-
プライベート・サブネット上のOracle Linuxコンピュート・インスタンス。これは、このチュートリアルでデプロイされるOCIストリーミングやファンクションなど、プライベート・サブネット上のリソースにアクセスするために重要です。
-
Oracle Linuxコンピュート・インスタンスに接続し、チュートリアルのタスクを実行するOCI要塞ホスト。詳細は、要塞の概要を参照してください。
-
ローカルOracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)設定。詳細は、CLIのインストールを参照してください。
-
イメージをビルドできるローカルDocker。Oracle Linuxを使用している場合は、Docker: Oracle Linux 8 (OL8)へのDockerのインストールを参照してください。
-
OCIにファンクションをデプロイできるようにするローカルFN CLI: FN ProjectのCLIのインストール
-
タスク1: 動的グループの設定
ドメインに移動し、「動的グループ」をクリックして、次のグループを作成します。
- グループ名:
MyFunctions
。
ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}
タスク2: ポリシーの作成
「ポリシー」に移動して、次のポリシーを作成します。
- ポリシー名:
FunctionsPolicies
。
Allow dynamic-group MyFunctions to {STREAM_INSPECT, STREAM_READ, STREAM_CONSUME, STREAM_PRODUCE} in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
タスク3: OCIコンテナ・レジストリの作成
-
「開発者サービス」に移動し、「コンテナ・レジストリ」をクリックして、Fnイメージのプライベート・リポジトリを作成します。
名前:
lab/fn-java-streaming
。 -
リポジトリを確認し、ネームスペースをノートにとります。
-
OCI CLIおよびDockerがインストールされているターミナル・シェルを開き、レジストリのログインを続行します。リージョンの正しいURLを確認します。このチュートリアルでは、レジストリURLが
gru.ocir.io
であるブラジル東部(サンパウロ)を使用しています。docker login gru.ocir.io Username: <your container namespace>/youruser Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
タスク4: メッセージを受信してOCIストリーミング・トピックに公開するためのJava OCI関数の作成
ノートストリーム・プールの同じサブネットであるプライベート・サブネットを選択してください。
-
「開発者サービス」の「ファンクション」で「アプリケーション」、「アプリケーションの作成」の順にクリックします。
-
OCIストリーミング設定を格納するためのいくつかの構成を作成します。
ノートこの構成変数は、ストリームにメッセージを生成できるように、このチュートリアルのJavaサンプル・コード内で使用され、環境から正しい構成変数を渡していることを確認してください。
シークレット名 Value BOOTSTRAP_SERVERS ストリーム・プールのブートストラップ・サーバーをポート9092に貼り付けます STREAM_POOL_OCID ストリーム・プールOCIDの貼付け STREAM_TOPIC_NAME ストリーム名を貼り付けます -
Docker、OCI CLI、Fn Project CLIがインストールされているターミナル・シェルに移動し、次のコマンドを実行してファンクションを初期化します。
ノート: タスクに従った場合、Dockerログイン・コマンドは現在までにすでに実行されています。実行されていない場合は、タスク3のDockerログイン・ステップに進みます。
fn create context oci-cloud --provider oracle fn use context oci-cloud fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
ノート: このチュートリアルでは、ブラジル東部(サンパウロ)リージョンを使用しています。別のリージョンを使用している場合は、api-urlおよびレジストリの場所を変更する必要があります。
-
Java関数のサンプル・コードをfn-java-streaming.zipから入手し、要塞コンソールのシェル・マシンで解凍します。
# check your file is there ls -lrt # unzip the file unzip fn-java-streaming.zip
この単純なJavaコード・プロジェクトは、ストリーム・プールから
my-pvt-topic
というトピックへのメッセージを生成します。ステップ3で作成したFn構成値を使用します。-
HelloFunction.java
. -
KafkaProducerSingleton.java
.
-
-
新しいコードを作成し、ファンクションをデプロイします。
cd fn-java-streaming ls -lrt fn deploy --app fn-lab
-
ファンクションを呼び出します。
# Invoke the function to check if it is working as expected. echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
ノート: 最初のコールでは、ファンクションのコールに最大1分かかる場合があります。
関連リンク
承認
- 著者 - Joao Tarla (Oracle LAD Aチーム・ソリューション・エンジニア)
その他の学習リソース
docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Post Messages to Kafka Stream with Resource Principal Authentication using OCI Functions
F93777-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.