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

160 lines
4.3 KiB
Markdown

---
title: Minio
description: Integration for interacting with Minio object storage.
ha_category:
- Utility
ha_iot_class: Cloud Push
ha_release: 0.98
ha_codeowners:
- '@tkislan'
ha_domain: minio
ha_integration_type: integration
---
This integration adds interaction with [Minio](https://min.io).
It also enables listening for bucket notifications: [see documentation](https://docs.min.io/docs/minio-client-complete-guide.html#watch)
To download or upload files, folders must be added to [allowlist_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:
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 |