0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OCI API Gateway経由でStreamingのメッセージを読み込む方法を確認する

Last updated at Posted at 2023-08-23

はじめに

こちらのチュートリアルを参考に、REST APIをコールして、API Gateway経由でStreamingのメッセージを読み込みます。

アーキテクチャはこのようになります。
StreamingはメッセージをPutするProducerとGetするConsumerが必要ですが、今回はStreaming自身がサンプルメッセージを生成して、それをGetするだけの簡単なアーキテクチャです。

image.png

Streamの作成

OCIコンソールのストリーミングからストリームの作成をクリックします。

任意の名称を設定して、Auto-Create a default stream poolを選択して、デフォルトストリームプールを合わせて作成します。

スクリーンショット 2023-08-22 16.46.57.png

作成後のコンソールに表示されるOCIDメッセージ・エンドポイントをメモしておきます。

スクリーンショット 2023-08-22 16.53.43.png

API Gatewayの作成

OCIコンソールのAPIゲートウェイからゲートウェイの作成をクリックします。
以下のようにしてAPI Gatewayを作成します。なお、VCN、サブネットは作成済みです。

スクリーンショット 2023-08-22 16.52.43.png

デプロイメント作成

作成したAPI Gatewayのコンソールからデプロイメント デプロイメントの作成をクリックします。

パス接頭辞は、先ほどメモしたストリームのOCIDと置き換えて、以下のようにします。

/20180418/streams/your_ocid_for_stream

スクリーンショット 2023-08-22 16.55.41.png

今回は認証なしにします。

スクリーンショット 2023-08-22 16.55.59.png

ルートは2つ設定します。
1のルーティングは以下のように設定します。
URLは以下の書式で、先ほどメモしたストリーミング・エンドポイントとストリームOCIDで置き換えます。

<streaming_endpoint>/20180418/streams/<stream_ocid>/groupCursors

スクリーンショット 2023-08-22 16.58.43.png

+別のルートをクリックして、2のルーティングを追加します。
URLは1のルーティングと同様ですが、最後の/groupCursors/messagesに置き換えます。

スクリーンショット 2023-08-22 17.00.47.png

動作確認

テストメッセージの作成

ストリームのコンソールでテスト・メッセージの生成をクリックします。

今回はとりあえずこのようなメッセージを作成します。

スクリーンショット 2023-08-23 10.57.48.png

同様にもう一つメッセージを作成しました。
メッセージのロードをクリックすると、作成したメッセージが表示されます。

スクリーンショット 2023-08-23 10.58.37.png

サンプルコードからのテスト

サンプルコードをダウンロードします。

$ wget https://docs.oracle.com/en/learn/oci-streaming-api-gateway/files/consume_rest_api_oci_lab.py
--2023-08-23 01:52:15--  https://docs.oracle.com/en/learn/oci-streaming-api-gateway/files/consume_rest_api_oci_lab.py
Resolving docs.oracle.com (docs.oracle.com)... 104.120.11.151, 2600:140b:4800:49a::af5, 2600:140b:4800:480::af5
Connecting to docs.oracle.com (docs.oracle.com)|104.120.11.151|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3253 (3.2K) [text/plain]
Saving to: 'consume_rest_api_oci_lab.py'

consume_rest_api_oci_lab.py                            100%[============================================================================================================================>]   3.18K  --.-KB/s    in 0s      

2023-08-23 01:52:15 (58.7 MB/s) - 'consume_rest_api_oci_lab.py' saved [3253/3253]

サンプルコードのうち、以下の2ヶ所を環境に合わせて修正します。

  • base_endpoint

    • API Gatewayのデプロイメントのエンドポイントのうち、streams/までを記載します。
      スクリーンショット 2023-08-23 16.59.36.png
  • stream_ID

    • ストリームのOCID
    73  # set your endpoint and stream OCID properly
    74  base_endpoint = 'https://evu5xxxxxxxxxmkyh2po3gg2u.apigateway.uk-london-1.oci.customer-oci.com/20180418/streams/'
    75  stream_ID = 'ocid1.stream.oc1.uk-london-1.amaaaaaassl65iqawvdfsa5xff574vrjwfsosv7pugxxxxxxxxxxxxxsrla'

Pythonのコードを実行してメッセージが表示されることを確認します。
下から3行目、4行目にメッセージが表示されています。

$ python3 consume_rest_api_oci_lab.py

Starting new HTTPS connection (1): evu54qn2bo37z2u.apigateway.uk-london-1.oci.customer-oci.com:443
send: b'POST /20180418/streams/ocid1.stream.oc1.uk-london-1.amaaaaaassl65iqawvdfsa5sosv7pug5qzzprfpf275wusrla/groupCursors HTTP/1.1\r\nuser-agent: python-requests/2.20.0\r\naccept-encoding: gzip, deflate\r\naccept: */*\r\nconnection: keep-alive\r\nContent-Length: 56\r\ncontent-type: application/json\r\ndate: Wed, 23 Aug 2023 01:56:24 GMT\r\nhost: evu54qn2bo37z2mkyh2po3gg2u.apigateway.uk-london-1.oci.customer-oci.com\r\nx-content-sha256: 32DcAKNbkZhzjroRYHgDS2QQx2YBKOtQRNtqcDowh+E=\r\nauthorization: Signature algorithm="rsa-sha256",headers="date (request-target) content-length content-type x-content-sha256",keyId="ocid1.tenancy.oc1..aaaaaaaa3mb7wrcy2ls3u3jsy2soq5ck3lc3q4mczitpdaymbuazc5tkguca/ocid1.user.oc1..aaaaaaaa4scxbela7cohxnxpj3vmi46b6uaar2fmcfs7pnbqxpqno6pgasfa/2a:9a:80:b0:bb:82:57:dc:99:e1:e2:95:dc:7b:4a:a6",signature="BczrLcEQdFUOn4ynCeMoITFeIxeSzD1bHGCiNcBgIMY3oevNtyXhQq+IX74UjhAuatbkLnKHgz32mvmG1wqJ2lfYagYnVAzKqITgnH+Jd+Us20Fwdy/uSn2qLOLRxoJC0rGvmsJiZmc7hkqJRDXcsHOSOIuyCUX3I2DWbTgSQqzRlQgEZl72lM/ueiCJlQM9QNBpacd/lbIqEohqUt+i/C2dl3RAIS5DE1MJhfpvQHE0WD3F5kxppoL7nDJjMIFJfZE8DZDxXvbckOe5Bu7SuBH8ppik8dYzjjDw==",version="1"\r\n\r\n'
send: b'{"groupName": "MyTestGroupName", "type": "TRIM_HORIZON"}'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Wed, 23 Aug 2023 01:56:25 GMT
header: Content-Type: application/json
header: Connection: keep-alive
header: Content-Length: 444
header: Server: Oracle API Gateway
header: X-Frame-Options: sameorigin
header: access-control-allow-methods: POST, PUT, GET, HEAD, DELETE, OPTIONS
header: opc-request-id: /00DE2CD06B1E0FCFC811FC8FEA8215BB/6AF0037D72FDA961117D209E9C892F8F
header: access-control-expose-headers: access-control-allow-credentials, access-control-allow-methods, access-control-allow-origin, connection, content-length, content-type, opc-client-info, opc-request-id
header: Strict-Transport-Security: max-age=31536000
header: access-control-allow-origin: *
header: X-Content-Type-Options: nosniff
header: X-XSS-Protection: 1; mode=block
header: access-control-allow-credentials: true
https://evu54qn2bo37z2mkyh2po3gg2u.apigateway.uk-london-1.oci.customer-oci.com:443 "POST /20180418/streams/ocid1.stream.oc1.uk-london-1.amaaaaaassl65iqaff574vrjwfsosv7pug5qzzprfpf275wusrla/groupCursors HTTP/1.1" 200 444
Starting new HTTPS connection (1): evu54qn2bo37z2m2u.apigateway.uk-london-1.oci.customer-oci.com:443
send: b'GET /20180418/streams/ocid1.stream.oc1.uk-london-1.amaaaaaassl65iqa574vrjwfsosv7pug5qzzprfpf275wusrla/messages?cursor=eyJjdXJzb3JUeXBlIjoiZ3JvdXAiLCJzdHJlYW1JZCI6Im9jaWQxLnN0cmVhbS5vYzEudWstbG9uZG9uLTEuYW1hYWFhYWFzc2w2NWlxYXd2ZGZzYTV4ZmY1NzR2cmp3ZnNvc3Y3cHVnNXF6enByZnBmMjc1d3VzcmxhIiwiZXhwaXJhdGlvbiI6MTY5MjAtMGU2MS00Y2RkLThlMTUtMDExOGQ5OWYzNDVkIiwib2Zmc2V0cyI6e30sImNvbW1pdE9uR2V0Ijp0cnVlLCJnZW5lcmF0aW9uIjowLCJ0aW1lb3V0SW5NcyI6MzAwMDAsImN1cnNvclR5cGUiOiJncm91cCJ9&limit=1000 HTTP/1.1\r\nuser-agent: python-requests/2.20.0\r\naccept-encoding: gzip, deflate\r\naccept: */*\r\nconnection: keep-alive\r\ncontent-type: application/json\r\ndate: Wed, 23 Aug 2023 01:56:25 GMT\r\nhost: evu54qn2bo37z2mkyh2po3gg2u.apigateway.uk-london-1.oci.customer-oci.com\r\nauthorization: Signature algorithm="rsa-sha256",headers="date (request-target)",keyId="ocid1.tenancy.oc1..aaaaaaaa3mb7wrcy2ls3u3jsy2soq5ck3lc3q4mczitpdaymbuazc5tkguca/ocid1.user.oc1..aaaaaaaa4scxbelai46b6uaar2fmcfs7pnbqxpqno6pgasfa/2a:9a:80:b0:bb:82:57:dc:99:e1:e2:95:dc:7b:4a:a6",signature="OyRE5seRVO1QpG8B2ZRPN5Pva+TNk4Rhey89pFn/+BTn2EIKBYz1ro16xG/IAWcxeLMyHA8d6gpvKpOU2EZdw7DUS4czsrr2DVyVDfjANcfyWqauxeveGuSxfaj7FLEuqX2TQKvdhl/wtV2EiEZ7d9i1ahTsL0C591dB7XEMZyUtXLOY4Whyl0jBWqpFie/F3RHaSeWfYP8pUR/bB1+re2eiCkIkFU72iawMaFZLsGv2FhRmovF40tLYcbLJU/ELE7AdUT9o5LAtJm2Gp/a03Nr40xkFz/Di9JgyvRJsg0AsDvrrnsMI6f3NyUjtDE/Qw7NaXJvJg==",version="1"\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
header: Date: Wed, 23 Aug 2023 01:56:26 GMT
header: Content-Type: application/json
header: Connection: keep-alive
header: Content-Length: 333
header: Server: Oracle API Gateway
header: opc-next-cursor: eyJjdXJzb3JUeXBlIjoiZ3JvdXAiLCJzdHJlYW1JZCI6Im9jaWQxLnN0cmVhbS5vYzEudWstbG9uZG9uLTEuYW1hYWFhYWFzc2w2NWlxYXd2ZGZzYTV4ZmY1NzR2cmp3ZnNvc3Y3cHVnNXF6enByZnBmMjc1d3VzcmxhIiwiZXhwaXJhdGlvbiI6MTY5Mjc1NjA4NjQ2MiwiZ3JvdXBOYW1lIjoiTXlUZXN0R3JvdXBOYW1lIiwiaW5zdGFuY2VOYW1lIjoiMzQ2MzhmMjAtMGU2MS0pb24iOjAsInRpbWVvdXRJbk1zIjozMDAwMCwiY3Vyc29yVHlwZSI6Imdyb3VwIn0=
header: X-Frame-Options: sameorigin
header: access-control-allow-methods: POST, PUT, GET, HEAD, DELETE, OPTIONS
header: opc-request-id: /DC59F76DB071CDAE8332390F33AC64A8/ECF570E1F2787580F2357D
header: access-control-expose-headers: access-control-allow-credentials, access-control-allow-methods, access-control-allow-origin, connection, content-length, content-type, opc-client-info, opc-next-cursor, opc-request-id
header: Strict-Transport-Security: max-age=31536000
header: access-control-allow-origin: *
header: X-Content-Type-Options: nosniff
header: X-XSS-Protection: 1; mode=block
header: access-control-allow-credentials: true
https://evu54qn2bo37z2mkyh2po3gg2u.apigateway.uk-london-1.oci.customer-oci.com:443 "GET /20180418/streams/ocid1.stream.oc1.uk-london-1.amaaaaaassl65iqawvdfsa5xff574vrjwfsosv7pug5qzzprfpf275wusrla/messages?cursor=eyJjdXJzb3JUeXBlIjoiZ3JvdXAiLCJzdHJlYW1JZCI6Im9jaWQxLnN0cmVhbS5vYzEudWstbG9uZG9uLTEuYW1hYWFhYWFzc2w2NWlxYXd2ZGZzYTV4ZmY1NzR2cmp3ZnNvc3Y3cHVnNXF6enByZnBmMjc1d3VzcmxhIiwiZXhwaXJhdGlvbiI6MzQ2MzhmMjAtMGU2MS00Y2RkLThlMTUtMDExOGQ5OWYzNDVkIiwib2Zmc2V0cyI6e30sImNvbW1pdE9uR2V0Ijp0cnVlLCJnZW5lcmF0aW9uIjowLCJ0aW1lb3V0SW5NcyI6MzAwMDAsImN1cnNvclR5cGUiOiJncm91cCJ9&limit=1000 HTTP/1.1" 200 333
[MESSAGE] This is test message1 from streaming.
[MESSAGE] This is test message2 from streaming.
Next Cursor for calling: 
eyJjdXJzb3JUeXBlIjoiZ3JvdXAiLCJzdHJlYW1JZCI6Im9jaWQxLnN0cmVhbS5vYzEudWstbG9uZG9uLTEuYW1hYWFhYWFzc2w2NWlxYXd2ZGZzYTV4ZmY1NzR2cmp3ZnNvc3Y3cHVnNXF6enByZnBmMjc1d3VzcmxhIiwiZXhwaXJhdGlvbiI6MTY5Mjc1NjA4NjQ2MiwiZ3JvdXBOYW1lIjoiTXlUZXN0R3JvdXBOYW1lIiwiaW5zdGFuY2VOYW1lIjoiMzQ2Mz25HZXQiOnRydWUsImdlbmVyYXRpb24iOjAsInRpbWVvdXRJbk1zIjozMDAwMCwiY3Vyc29yVHlwZSI6Imdyb3VwIn0=
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?