2022-03-30 21:50:39 +02:00

4.3 KiB

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

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 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"
  trigger:
    platform: event
    event_type: folder_watcher
    event_data:
      event_type: created
  action:
    - delay: "00:00:01"
    - service: 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"
    - service: shell_command.remove_file
      data:
        file: "{{ trigger.event.data.path }}"

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

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

{% endraw %}

Platform Services

These services are provided:

  • get
  • put
  • remove

Service minio.get

Download file.

Service 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

Service minio.put

Upload file.

Service 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

Service minio.remove

Delete file.

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