Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lostkobrakai/minio_server
Elixir package to manage minio server instances.
https://github.com/lostkobrakai/minio_server
elixir elixir-lang minio minio-server
Last synced: 2 months ago
JSON representation
Elixir package to manage minio server instances.
- Host: GitHub
- URL: https://github.com/lostkobrakai/minio_server
- Owner: LostKobrakai
- License: other
- Created: 2020-03-27T15:19:20.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-24T06:56:32.000Z (3 months ago)
- Last Synced: 2024-10-30T07:45:19.627Z (2 months ago)
- Topics: elixir, elixir-lang, minio, minio-server
- Language: Elixir
- Homepage:
- Size: 55.7 KB
- Stars: 9
- Watchers: 4
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Minio Server
Elixir wrapper around [Minio](https://min.io/). It starts the minio server alongside
your elixir application.```elixir
# Config can be used directly with :ex_aws/:ex_aws_s3
s3_config = [
access_key_id: "minio_key",
secret_access_key: "minio_secret",
scheme: "http://",
region: "local",
host: "127.0.0.1",
port: 9000,
# Minio specific
minio_path: "data" # Defaults to ./minio in your mix project
]# In a supervisor
children = [
{MinioServer, s3_config}
]# or manually
{:ok, _} = MinioServer.start_link(s3_config)
```## Minio binary
The minio binary is not included in the package to save on space. But you can
easily download them using a mix task:```sh
# with menu to select arch / version
mix minio_server.download# download the latest SERVER binary for darwin-amd64
mix minio_server.download --arch darwin-amd64 --version latest# download the latest CLIENT binary for darwin-amd64
mix minio_server.download --client --arch darwin-amd64 --version latest
```## Minio Versions (dev)
To simplify updating available versions for client / server binaries, there are following commands available:
```elixir
MinioServer.Versions.create_versions_file(:client)
MinioServer.Versions.create_versions_file(:server)
```## Livecycle Configuration
Minio does support lifecycle configuration, which I'm using to expire abandoned
uploads / multipart chunks.### Example
Setup of a new bucket with `temp/` folder.
```elixir
config = s3(){:ok, _} =
ExAws.S3.put_bucket("default", Keyword.fetch!(config, :region))
|> ExAws.request(config)livecycle_rules = [
%{
id: "temp-folder-cleanup",
enabled: true,
filter: %{
prefix: "temp/"
},
actions: %{
expiration: %{
trigger: {:days, 1},
expired_object_delete_marker: true
},
abort_incomplete_multipart_upload: %{
trigger: {:days, 1}
}
}
}
]{:ok, _} =
ExAws.S3.put_bucket_lifecycle("default", livecycle_rules)
|> ExAws.request(config)
```## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed
by adding `minio_server` to your list of dependencies in `mix.exs`:```elixir
def deps do
[
{:minio_server, "~> 0.1.0"}
]
end
```Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/minio_server](https://hexdocs.pm/minio_server).