View Source Plausible.S3 (Plausible v0.0.1)

Helper functions for S3 exports/imports.

Summary

Functions

Returns a presigned URL to download the exported Zip archive from S3. The URL expires in 300 seconds, which should be enough for a redirect.

Chunks and uploads Zip archive to the provided S3 destination.

Returns the pre-configured S3 bucket for CSV exports.

Returns access_key_id and secret_access_key to be used by ClickHouse during imports from S3.

Presigns an upload for an imported file.

Returns the pre-configured S3 bucket for CSV imports.

Functions

Link to this function

download_url(s3_bucket, s3_path)

View Source
@spec download_url(String.t(), Path.t()) :: :uri_string.uri_string()

Returns a presigned URL to download the exported Zip archive from S3. The URL expires in 300 seconds, which should be enough for a redirect.

In the current implementation the bucket always goes into the path component.

Link to this function

export_upload_multipart(stream, s3_bucket, s3_path, filename)

View Source
@spec export_upload_multipart(Enumerable.t(), String.t(), Path.t(), String.t()) :: :ok

Chunks and uploads Zip archive to the provided S3 destination.

In the current implementation the bucket always goes into the path component.

@spec exports_bucket() :: String.t()

Returns the pre-configured S3 bucket for CSV exports.

config :plausible, Plausible.S3,
  exports_bucket: System.fetch_env!("S3_EXPORTS_BUCKET")

Example:

iex> exports_bucket()
"test-exports"
Link to this function

import_clickhouse_credentials()

View Source
@spec import_clickhouse_credentials() :: %{
  access_key_id: String.t(),
  secret_access_key: String.t()
}

Returns access_key_id and secret_access_key to be used by ClickHouse during imports from S3.

Example:

iex> import_clickhouse_credentials()
%{access_key_id: "minioadmin", secret_access_key: "minioadmin"}
Link to this function

import_presign_upload(site_id, filename)

View Source

Presigns an upload for an imported file.

In the current implementation the bucket always goes into the path component.

Example:

iex> upload = import_presign_upload(_site_id = 123, _filename = "imported_browsers.csv")
iex> true = String.ends_with?(upload.s3_url, "/test-imports/123/imported_browsers.csv")
iex> true = String.contains?(upload.presigned_url, "/test-imports/123/imported_browsers.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&")
@spec imports_bucket() :: String.t()

Returns the pre-configured S3 bucket for CSV imports.

config :plausible, Plausible.S3,
  imports_bucket: System.fetch_env!("S3_IMPORTS_BUCKET")

Example:

iex> imports_bucket()
"test-imports"