diff --git a/source/_components/minio.markdown b/source/_components/minio.markdown new file mode 100644 index 00000000000..e4bba03e2ea --- /dev/null +++ b/source/_components/minio.markdown @@ -0,0 +1,153 @@ +--- +title: "Minio" +description: "Integration for interacting with Minio object storage." +logo: minio.png +ha_category: Utility +ha_iot_class: Cloud Push +ha_release: 0.98 +--- + +This integration adds interaction with [Minio](https://min.io). +Also enables to listen for bucket notifications: [watch docs](https://docs.min.io/docs/minio-client-complete-guide.html#watch) + +To download or upload files, folders must be added to [whitelist_external_dirs](/docs/configuration/basic/). + +## Configuration + +To enable the Minio integration in your installation, add the following to your `configuration.yaml` file: + +```yaml +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 %} +```yaml +#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_template: + 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_template: + file: "{{ trigger.event.data.path }}" + +- alias: Download new Minio file + trigger: + - platform: event + event_type: minio + + condition: [] + action: + - service: minio.get + data_template: + 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 | diff --git a/source/images/supported_brands/minio.png b/source/images/supported_brands/minio.png new file mode 100644 index 00000000000..38f6ff9f01d Binary files /dev/null and b/source/images/supported_brands/minio.png differ