😸
【Dapr/Azure BlobStorage】- Bindingsを実装する①(Local環境)
執筆日
2024/11/11
やること
FlaskでAPIを作成して、その結果をDaprの仕組みを使ってBlobのコンテナーに保存する
参考資料
手順
- Dapr CLIのインストール
- Blob Storage/コンテナを構築する
- アプリケーションを作成
- 動作確認
Dapr CLIのインストール
Dapr CLI のインストール:
公式ドキュメントを参考にインストールしてください。
Blob Storage/コンテナを構築する
- 以下を参考にし、Blob Storage/コンテナを構築する
Azure Blob Storageのコンテナ作成
アプリケーションを作成
- 以下のフォルダー構成でアプリを作成する
dapr/
├── app.py
├── requirements.txt
├── components
└─── my-blob-storage.yaml
app.py
from flask import Flask, jsonify
import requests
import json
from datetime import datetime
app = Flask(__name__)
@app.route("/save-time", methods=["POST"])
def save_time():
try:
current_time = datetime.utcnow().isoformat() + "Z"
data = {"time": current_time}
url = "http://localhost:3500/v1.0/bindings/my-blob-storage"
payload = {
"data": data,
"metadata": {
"blobName": f'time_{datetime.utcnow().strftime("%Y%m%d%H%M%S")}.json'
},
"operation": "create",
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, data=json.dumps(payload), headers=headers)
if response.status_code == 200:
return jsonify({"message": "Time saved successfully"}), 200
else:
app.logger.error(f"Failed to save time: {response.text}")
return jsonify({"message": "Failed to save time"}), 500
except Exception as e:
app.logger.error(f"Exception occurred: {str(e)}")
return jsonify({"message": "Internal server error"}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
requirements.txt
Flask
requests
my-blob-storage.yaml
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: my-blob-storage
namespace: default
spec:
type: bindings.azure.blobstorage
version: v1
metadata:
- name: storageAccount
value: <Storage Account名>
- name: storageAccessKey
value: <storage account key>
- name: container
value: <コンテナ名>
動作確認
- 以下のコマンドを実行し、ライブラリーをインストールする
pip install -r requirements.txt
- 以下のコマンドを実行し、Daprを立ち上げる
dapr init
dapr run --app-id flaskapp --app-port 5000 --dapr-http-port 3500 --components-path ./components python app.py
- 別のターミナルで以下を実行する
curl -X POST http://localhost:5000/save-time
4. Blobのコンテナーを確認し、作成されていることを確認する
まとめ
DaprのBindingを実装してみました。
次はAKSにデプロイして動作確認してみようかなと。
Discussion