AWS S3

Configuration for the AWS S3 and S3-compatible Binary Store component

The AWS S3 Binary Store stores files as objects in an Amazon S3 bucket. It can also connect to S3-compatible services such as MinIO, Ceph, or Cloudflare R2. The component is alpha and uses Dapr’s built-in AWS authentication profile.

Component format

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: s3-files
spec:
  type: binarystore.aws.s3
  version: v1
  metadata:
  - name: bucket
    value: "binary-files"
  - name: prefix
    value: "uploads"

Configure AWS credentials for the sidecar through the AWS authentication profile and your AWS environment or workload identity. Avoid putting access keys directly in the component manifest.

Spec metadata fields

FieldRequiredDetailsExample
bucketYName of the S3 bucket. The component needs s3:PutObject and s3:DeleteObject; it also needs s3:GetObject for retrieval and delete existence checks. To report a missing object as not found during deletion, grant s3:ListBucket as well. Without the permissions needed for the existence check, deletion may report success without determining whether the object existed."binary-files"
prefixNPrefix prepended to each file name. If configured, it must not start with /."uploads"
partSizeNMultipart upload part size, specified as a byte count or byte-size string. Defaults to 16Mi; must be between 5 MiB and 5 GiB. S3 limits uploads to 10,000 parts; larger parts can increase the maximum upload size (up to 50 TB) but use more memory per in-flight upload."64Mi"
endpointNCustom endpoint for an S3-compatible service or emulator. Do not set this for production Amazon S3."http://localhost:9000"
forcePathStyleNDefaults to false (virtual-hosted style). Set to true to use path-style requests; many S3-compatible services require it."true"
disableSSLNDefaults to false. Allows connecting to a non-HTTPS endpoint."true"
insecureSSLNDefaults to false. Accepts self-signed or invalid certificates for HTTPS endpoints. This weakens transport security."true"

Size values can be provided as a string containing the number of bytes (for example, "16777216") or as a size with a unit such as "16Mi".