UH27 S3 Object Storage (`uh27.nl`)

Read-only access instructions for downloading and listing datasets from the UH27 S3 instance.

Connection Details

SettingValue
S3 Endpointhttps://s3.uh27.nl
Web Consolehttps://console.uh27.nl
Regionus-east-1
Addressing StylePath-style (https://s3.uh27.nl/<bucket>/<key>)

1. Direct HTTPS / cURL (Public Read-Only Buckets)

# Download a file directly (supports resuming large >150 GB files with -C -)
curl -fLOC - https://s3.uh27.nl/<bucket-name>/<path/to/file>

2. AWS CLI

Public read-only bucket (no credentials required):

# List objects in a bucket
aws --endpoint-url https://s3.uh27.nl --no-sign-request s3 ls s3://<bucket-name>/

# Download a file or directory
aws --endpoint-url https://s3.uh27.nl --no-sign-request s3 cp s3://<bucket-name>/<file> .
aws --endpoint-url https://s3.uh27.nl --no-sign-request s3 sync s3://<bucket-name>/ ./local-dir/

With read-only access keys:

export AWS_ACCESS_KEY_ID="<READONLY_ACCESS_KEY>"
export AWS_SECRET_ACCESS_KEY="<READONLY_SECRET_KEY>"
export AWS_DEFAULT_REGION="us-east-1"

aws --endpoint-url https://s3.uh27.nl s3 ls s3://<bucket-name>/
aws --endpoint-url https://s3.uh27.nl s3 cp s3://<bucket-name>/<file> .

3. MinIO Client (mc)

# Configure alias (use empty strings "" "" for anonymous public buckets)
mc alias set uh27 https://s3.uh27.nl "<READONLY_ACCESS_KEY>" "<READONLY_SECRET_KEY>"

# List and copy files
mc ls uh27/<bucket-name>/
mc cp --recursive uh27/<bucket-name>/ ./local-dir/

4. Python (boto3)

import boto3
from botocore import UNSIGNED
from botocore.client import Config

# For public read-only bucket (anonymous):
s3 = boto3.client(
    "s3",
    endpoint_url="https://s3.uh27.nl",
    region_name="us-east-1",
    config=Config(signature_version=UNSIGNED, s3={"addressing_style": "path"}),
)

# Or with read-only credentials:
# s3 = boto3.client(
#     "s3",
#     endpoint_url="https://s3.uh27.nl",
#     aws_access_key_id="<READONLY_ACCESS_KEY>",
#     aws_secret_access_key="<READONLY_SECRET_KEY>",
#     region_name="us-east-1",
#     config=Config(s3={"addressing_style": "path"}),
# )

for obj in s3.list_objects_v2(Bucket="<bucket-name>").get("Contents", []):
    print(obj["Key"], obj["Size"])

s3.download_file("<bucket-name>", "<object-key>", "local_filename")