docs

Dapr用户文档

View project on GitHub

Setup Azure CosmosDB

Creating an Azure CosmosDB account

Follow the instructions from the Azure documentation on how to create an Azure CosmosDB account.

In order to setup CosmosDB as a state store, you will need the following properties:

  • URL: the CosmosDB url. for example: https://**.documents.azure.com:443/
  • Master Key: The key to authenticate to the CosmosDB account
  • Database: The name of the database
  • Collection: The name of the collection

Create a Dapr component

The next step is to create a Dapr component for CosmosDB.

Create the following YAML file named cosmos.yaml:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <name>
spec:
  type: state.azure.cosmosdb
  metadata:
  - name: url
    value: <REPLACE-WITH-URL>
  - name: masterKey
    value: <REPLACE-WITH-MASTER-KEY>
  - name: database
    value: <REPLACE-WITH-DATABASE>
  - name: collection
    value: <REPLACE-WITH-COLLECTION>

The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here

The following example uses the Kubernetes secret store to retrieve the secrets:

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <name>
spec:
  type: state.azure.cosmosdb
  metadata:
  - name: url
    value: <REPLACE-WITH-URL>
  - name: masterKey
    secretKeyRef:
      name: <KUBERNETES-SECRET-NAME>
      key: <KUBERNETES-SECRET-KEY>
  - name: database
    value: <REPLACE-WITH-DATABASE>
  - name: collection
    value: <REPLACE-WITH-COLLECTION>

Apply the configuration

In Kubernetes

To apply the CosmosDB state store to Kubernetes, use the kubectl CLI:

kubectl apply -f cosmos.yaml

Running locally

The Dapr CLI will automatically create a directory named components in your current working directory with a Redis component. To use CosmosDB, replace the redis.yaml file with cosmos.yaml file above.

Partition keys

The Azure CosmosDB state store will use the key property provided in the requests to the Dapr API to determine the partition key. For example, the following operation will use the key nihilus as the partition key:

curl -X POST http://localhost:3500/v1.0/state \
  -H "Content-Type: application/json"
  -d '[
        {
          "key": "nihilus",
          "value": "darth"
        }
      ]'