S3¶
omni_aws
provides functionality for accessing S3 and compatible storages.
Limited API coverage
Please note that only a bare minimum of the API is covered at this time.
API calls¶
S3 calls are prepared in a functional manner before they are executed. This allow s us to execute multiple calls at the same time using the same event loop.
Functions listed below form requests to be executed with omni_aws.aws_execute
.
s3_create_bucket
(CreateBucket)¶
Create a bucket.
Parameter | Type | Description |
---|---|---|
bucket | text | Bucket name. Required. |
region | text | Region override. Optional. |
s3_list_objects_v2
(ListObjectsV2)¶
List objects in a bucket.
Parameter | Type | Description |
---|---|---|
bucket | text | Bucket nane. Required. |
path | text | Path (can have a leading slash). Optional. |
continuation_token | text | Continuation token. Optional. |
delimiter | text | Delimiter. Optional. |
encoding_type | text | Encoding type. Optional. |
fetch_owner | bool | Fetch owner? Defaults to false. |
max_keys | int8 | Maximum number of keys. Optional. |
start_after | text | Start after key. Optional. |
region | text | Region override. Optional |
s3_put_object
(PutObject)¶
Put object into a bucket.
Parameter | Type | Description |
---|---|---|
bucket | text | Bucket name. Required. |
path | text | Path (can have a leading slash). Required. |
payload | bytea | Content of the object. Required. |
content_type | text | Content type. Defaults to application/octet-stream |
region | text | Region override. Optional. |
API calls execution¶
The above API calls can be executed using omni_aws.aws_execute
that follows the
same patterns.
Singular request¶
This one is used for executing one request at a time (where TYPE
is s3_create_bucket
,
s3_list_objects_v2
and so on):
Parameter | Type | Description |
---|---|---|
access_key_id | text | Access Key ID. Required. |
secret_access_key | text | Secret Acces Key. Required. |
request | TYPE |
Request of TYPE . Required. |
content_type | text | Content type. Defaults to application/octest-stream |
endpoint | text | Custom endpoint. Optional. |
region | text | Default region. Defaults to us-east-1. |
These functions raise exceptions on error.
Multiple request¶
This one is used for executing ma
ny requests at a time (where TYPE
is s3_create_bucket
,
s3_list_objects_v2
and so on) for efficiency reasons:
Parameter | Type | Description |
---|---|---|
access_key_id | text | Access Key ID. Required. |
secret_access_key | text | Secret Acces Key. Required. |
requests | TYPE[] |
Requests of TYPE . Required. |
content_type | text | Content type. Defaults to application/octest-stream |
endpoint | text | Custom endpoint. Optional. |
region | text | Default region. Defaults to us-east-1. |
These functions include errors in their output.
Return value of aws_execute
for s3_create_bucket
¶
Returns void
for singular form and a table with error
column (of type text
)
for multiple form.
Return value of aws_execute
for s3_list_objects_v2
¶
Column | Type | Description |
---|---|---|
key | text | Object key |
etag | text | ETag (quoted) |
last_modified | timestamp | Last modified time. |
storage_class | s3_storage_class | Storage class |
checksum_algorithm | s3_checksum_algorithm | Checksum algorithm |
owner | s3_owner | Object owner (only if fetch_owner was set to true ) |
restore_status | s3_restore_status | Restore status |
meta | s3_list_objects_v2_meta | Response meta-information (continuation token, etc.) |
error | text | Error if any (only in the multiple request form) |
Return value of aws_execute
for s3_put_object
¶
Returns void
for singular form and a table with error
column (of type text
)
for multiple form.
Utility functions¶
Pre-signed URL¶
s3_presigned_url
can be used to create a pre-signed URL. It returns a URL as a
text
.
Parameter | Type | Description |
---|---|---|
bucket | text | Bucket name. Required. |
path | text | Path to object. Required |
access_key_id | text | Access Key ID. Required. |
secret_access_key | text | Secret Acces Key. Required. |
expires | int | Expiration in seconds. Defaults to 604800 (7 days) |
region | text | Default region. Defaults to us-east-1. |
endpoint | text | Custom endpoint. Optional. |
Endpoints¶
By default, this extension works with AWS S3. However, it also works with other providers like DigitalOcean or software like MinIO.
DigitalOcean Spaces¶
In order to use DigitalOcean Spaces, simply pass omni_aws.digitalocean_s3_endpoint()
to endpoint
parameter (where
accepted).
select *
from
omni_aws.aws_execute(access_key_id => 'ACCESS_KEY_ID',
secret_access_key => 'SECRET_ACCESS_KEY',
request => omni_aws.s3_list_objects_v2(bucket => 'BUCKET', path => '/',
region => 'nyc3'),
endpoint => omni_aws.digitalocean_s3_endpoint());
Ensure you specify region
Region names are different in DigitalOcean spaces and if you omit it, it'll set default to us-east-1
.
Custom¶
Custom endpoints can be specified with omni_aws.s3_endpoint()
:
Parameter | Type | Description |
---|---|---|
url | text | URL pattern with ${region} and ${bucket} variables. Required. |
path_style | text | Append url pattern with /${bucket} for convenience. Optional, defaults to true |
This way one can use it with, for example, MinIO: