2024-11-27 18:57:16 +01:00

4.1 KiB

title description ha_category ha_iot_class ha_release ha_codeowners ha_domain ha_integration_type ha_quality_scale
Minio Integration for interacting with Minio object storage.
Utility
Cloud Push 0.98
@tkislan
minio integration legacy

This integration adds interaction with Minio. It also enables listening for bucket notifications: see documentation

To download or upload files, folders must be added to allowlist_external_dirs.

Configuration

To enable the Minio integration in your installation, add the following to your {% term "configuration.yaml" %} file:

minio:
  host: localhost
  port: 9000
  access_key: ACCESS_KEY
  secret_key: SECRET_KEY
  secure: false

{% configuration %} host: description: Minio server host required: true type: string port: description: Minio server port required: true type: integer access_key: description: Minio server access key required: true type: string secret_key: description: Minio server secret key required: true type: string secure: description: Whether to use HTTP or HTTPS connection required: true type: boolean default: false listen: description: List of configurations to listen for events to required: false default: [] type: list keys: bucket: description: Bucket to use required: true type: string prefix: description: What prefix to use to filter file events required: false type: string default: "" suffix: description: What file suffix to use to filter file events required: false type: string default: "." events: description: What file required: false type: string default: "s3:ObjectCreated:" {% endconfiguration %}

Automations

Automations can be triggered on new files created on the Minio server using the data_template.

{% raw %}

#Automatically upload new local files
automation:
- alias: "Upload camera snapshot"
  triggers:
    - trigger: event
      event_type: folder_watcher
      event_data:
        event_type: created
  actions:
    - delay: "00:00:01"
    - action: minio.put
      data:
        file_path: "{{ trigger.event.data.path }}"
        bucket: "camera-image-object-detection"
        key: "input/{{ now().year }}/{{ (now().month | string).zfill(2) }}/{{ (now().day | string).zfill(2) }}/{{ trigger.event.data.file }}"
    - delay: "00:00:01"
    - action: shell_command.remove_file
      data:
        file: "{{ trigger.event.data.path }}"

- alias: "Download new Minio file"
  triggers:
    - trigger: event
      event_type: minio

  conditions: []
  actions:
    - action: minio.get
      data:
        bucket: "{{trigger.event.data.bucket}}"
        key: "{{trigger.event.data.key}}"
        file_path: "/tmp/{{ trigger.event.data.file_name }}"

{% endraw %}

Actions

These actions are provided:

  • get
  • put
  • remove

Action minio.get

Download file.

Data attribute Required Description
bucket yes Bucket to use
key yes Object key of the file
file_path yes File path on the local file system

Action minio.put

Upload file.

Data attribute Required Description
bucket yes Bucket to use
key yes Object key of the file
file_path yes File path on the local file system

Action minio.remove

Delete file.

Data attribute Required Description
bucket yes Bucket to use
key yes Object key of the file