Azure Container Apps & Dapr
今回は Azure Container Apps (ACA) で Dapr Component を使用してみた感想を紹介する。ACAでのDaprを使うときに参考になる公式ドキュメントはこちら。Dapr には 様々な Component があり、それらを組み合わせて利用することで、柔軟な構成が可能となっている。
良かったこと
-
Azure Storage Queues binding
- Queue binding を利用することで、ACAでQueueトリガーが使用可能になった。
- また、上記bindingがenqueue/dequeueを担ってくれるため、アプリケーションにAzure Blob Storage SDK等をinstallする必要がなくなり、enqueue/dequeue の処理を自分で書かなくて済んだ。
-
Azure Key Vault secret store
- ACA自体にSecret管理機能はあるが、それを使わずに Dapr Secret Component を使った。
- Dapr Secret Component で Azure KeyVaultを選択すると、kv上のsecretを名称を指定して、Dapr経由で参照できるようになる。
- ACAのUser Identityに Key Vault Secrets User を与えることで、ACA上のアプリがDapr経由でkv secretにアクセスできるようになる。
- そのため、secretをKey Vaultで集中管理することができる。
- なお、
Key Vault Secrets User
を使うことになるため、Key VaultでRBACが使えるようにしてあげる必要がある
- terraformの場合はenable_rbac_authorization: true
を指定する。
- azurerm_key_vault
物足りなかったこと
-
Azure Blob Storage binding
- Daprでblobの操作をするComponentはあるのだが、単純なCRUDしかできず、Azure Blob Storage SDKで使えるような細かい要求を満たすということができないケースがある。
- 例えば、blobをstreamで取得したい時など
- 今回のアプリでは使用を見送った。
- Daprでblobの操作をするComponentはあるのだが、単純なCRUDしかできず、Azure Blob Storage SDKで使えるような細かい要求を満たすということができないケースがある。
ハマったところ
- queue binding でenqueue(input)/dequeue(output)の両方を実施しようとした場合、ACAのIdentityに Storage Queue Data Contributor を与える必要がある。
- 最初は Storage Queue Data Message ProcessorとStorage Queue Data Message Senderを与えていたのだが、ACAでenqueue/dequeue時に403エラーが発生したため
Contributor
に変更した。
- 最初は Storage Queue Data Message ProcessorとStorage Queue Data Message Senderを与えていたのだが、ACAでenqueue/dequeue時に403エラーが発生したため