1
1

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.

Azure OpenAI Service ワークショップに参加したので復習してみる(リソースの作成)

Last updated at Posted at 2023-12-19

はじめに

12/11に開催された「Azure OpenAI Service ワークショップ」に参加しました。
当日はARM テンプレートが用意されており、Azureリソースを一括で作成しておりました。
そこで復習をかねて1から作成してみることにしました。

参加したワークショップの内容👇

この記事でやること

当日は盛りだくさんの内容でした。

そこで1記事目は、CosmosDBのChange Feedを使ったAzure AI Searchへのインデックスの作成までを記事にしようとしていたのですが、普段使わない言語(Python)とリソース(CosmosDB)の作成が思った以上に大変でした。。。

ので、この記事では、PythonでのAzure Functionsローカル実行とCosmosDBの設定についてを備忘録として残します。

Pythonを使ってのAzure Functionsローカル実行

今回はまった大きな原因はAzure Functions Core Toolsのバージョンがおそらく良くなかったことです。
そこで以下のGitHubのissueに習い、現在のバージョンをアンインストールし、最新のAzure Functions Core Toolsをインストールすることでエラーを消すことができました。

こちらの公式ドキュメントにあるインストーラーから取得したAzure Functions Core Toolsを使って、この公式ドキュメント通りに作成していればここまではまることはなかったのではと後悔です…

以下の記事に沿って進めることで、ローカル実行のできるHTTP Triggerの作成までできました。
(下の記事ではTimer Triggerを作っていますが、HTTP Triggerを選択します。)

PythonのテンプレートではCosmosDB Triggerが見当たらなかったため、一度HTTP Triggerを作成した後に、CosmosDB Triggerに書き換えることにしました。
(参考記事にはCosmos DB Triggerがあるので自分の環境がいけないかも…)

CosmosDBのリソース作成とコンテナ作成

CosmosDBに関しては、私がまったく理解していなかったためにはまってしまいました。

ので、リソースの作成方法を1から記録します。

リソースの作成でAzure Cosmos DBを選択します。

image.png

今回はAPIオプションはコア(SQL) - 推奨を選びます。

image.png

今回はハンズオンのリソースと同じ内容になるように、この内容で作成しました。

image.png

各項目の詳しい説明

作成したCosmosDBのリソースに飛び、データエクスプローラーを選択してコンテナを作成します。

image.png

コンテナの内容は以下の通り
Conteiner idが「任意の名前のもの(監視対象コンテナ)」と「leases(リースコンテナ)」の2つが必要です。
(以降登場するFunctionsの引数のcreate_lease_container_if_not_exists=FalseTrueに変えれば、リースコンテナはいらないかもしれない)

image.png

image.png

CosmosDBトリガーの書き方

@app.cosmos_db_trigger(arg_name="items",
                       connection="COSMOS_CONNECTION",
                       database_name=COSMOS_DATABASE_NAME, 
                       container_name=COSMOS_CONTAINER_NAME, 
                       create_lease_container_if_not_exists=False,
                       feed_poll_delay=5000,
                       lease_container_name="leases")

リースコンテナがなんなのかわかっておらず、ずっと沼ってました😇

ここで引数にも注意が必要だったのですが、connection="COSMOS_CONNECTION"COSMOS_CONNECTIONだけはlocal.settings.jsonにかく必要があります。

おわりに

公式ドキュメントをちゃんと読んで、理解してリソースを作らないとだめですね。

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?