ノート:

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サービスに対して自身を認証できるようにする一時セッション・トークンおよびセキュアな資格証明で構成されます。

ノート:

目的

前提条件

タスク1: 動的グループの設定

ドメインに移動し、「動的グループ」をクリックして、次のグループを作成します。

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

タスク2: ポリシーの作成

「ポリシー」に移動して、次のポリシーを作成します。

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コンテナ・レジストリの作成

  1. 「開発者サービス」に移動し、「コンテナ・レジストリ」をクリックして、Fnイメージのプライベート・リポジトリを作成します。

    名前: lab/fn-java-streaming

    T3_1

  2. リポジトリを確認し、ネームスペースをノートにとります。

    T3_1

  3. OCI CLIおよびDockerがインストールされているターミナル・シェルを開き、レジストリのログインを続行します。リージョンの正しいURLを確認します。このチュートリアルでは、レジストリURLがgru.ocir.ioであるブラジル東部(サンパウロ)を使用しています。

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

タスク4: メッセージを受信してOCIストリーミング・トピックに公開するためのJava OCI関数の作成

ノートストリーム・プールの同じサブネットであるプライベート・サブネットを選択してください。

  1. 「開発者サービス」「ファンクション」「アプリケーション」「アプリケーションの作成」の順にクリックします。

    T9_1

  2. OCIストリーミング設定を格納するためのいくつかの構成を作成します。

    ノートこの構成変数は、ストリームにメッセージを生成できるように、このチュートリアルのJavaサンプル・コード内で使用され、環境から正しい構成変数を渡していることを確認してください。

    シークレット名 Value
    BOOTSTRAP_SERVERS ストリーム・プールのブートストラップ・サーバーをポート9092に貼り付けます
    STREAM_POOL_OCID ストリーム・プールOCIDの貼付け
    STREAM_TOPIC_NAME ストリーム名を貼り付けます

    T4_2

  3. 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およびレジストリの場所を変更する必要があります。

  4. Java関数のサンプル・コードをfn-java-streaming.zipから入手し、要塞コンソールのシェル・マシンで解凍します。

    # check your file is there
    ls -lrt
    # unzip the file
    unzip fn-java-streaming.zip
    

    T9_1

    この単純なJavaコード・プロジェクトは、ストリーム・プールからmy-pvt-topicというトピックへのメッセージを生成します。ステップ3で作成したFn構成値を使用します。

    • HelloFunction.java.

      T9_1

    • KafkaProducerSingleton.java.

      T9_1

  5. 新しいコードを作成し、ファンクションをデプロイします。

    cd fn-java-streaming
    ls -lrt
    fn deploy --app fn-lab
    

    T9_1

    T9_1

  6. ファンクションを呼び出します。

    # Invoke the function to check if it is working as expected.
    echo -n 'Hello from OSS' | fn invoke fn-lab fn-java-streaming
    

    T9_1

    ノート: 最初のコールでは、ファンクションのコールに最大1分かかる場合があります。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボをご覧いただくか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。