Skip to main content

How to Configure and Use s3cmd for Swift S3 API Access on OpenMetal

Objective​

This guide will show you how to configure and use the s3cmd CLI tool to interact with your OpenMetal clouds' Ceph-backed Object store via the Swift S3 API.

Prerequisites​

Install​

  • Create and/or activate your virtual environment:

    virtualenv .venv

    source .venv/bin/activate
  • Install s3cmd with pip:

    pip install s3cmd

Configure​

  • s3cmd --configure provides interactive configuration prompts. You will need to enter only Access Key, Secret Key, S3 Endpoint, and Use HTTPS protocol:

  • To gather your exact endpoint run the following command

openstack endpoint list --interface public --service object-store
  $ s3cmd --configure
[...]
Access Key: <access_key>
Secret Key: <secret_key>
[...]
S3 Endpoint: <cloud_ip_or_configured_domain:port>
[...]
DNS-style bucket+hostname:port template for accessing a bucket: <FQDN only (ie. mycloud.openmetal.cloud)>
[...]
Use HTTPS protocol: <yes/no determined by your clouds TLS status>
[...]
Test access with supplied credentials? [Y/n] y
[...]

Basic Usage​

  • List available buckets and bucket contents with s3cmd ls:

    $ s3cmd ls
    2022-11-01 16:08 s3://openmetal-bucket

    $ s3cmd ls s3://openmetal-bucket
    2022-11-01 16:12 37 s3://openmetal-bucket/important-file.txt
  • Create a new bucket with s3cmd mb:

    $ s3cmd mb s3://test-bucket
    Bucket 's3://test-bucket/' created
  • Upload a local file to your bucket with s3cmd put:

    $ s3cmd put important-archive.zip s3://test-bucket/important-archive.zip
    upload: 'important-archive.zip' -> 's3://test-bucket/important-archive.zip' [part 1 of 4, 15MB] [1 of 1]
    15728640 of 15728640 100% in 1s 9.45 MB/s done
    upload: 'important-archive.zip' -> 's3://test-bucket/important-archive.zip' [part 2 of 4, 15MB] [1 of 1]
    15728640 of 15728640 100% in 1s 11.71 MB/s done
    upload: 'important-archive.zip' -> 's3://test-bucket/important-archive.zip' [part 3 of 4, 15MB] [1 of 1]
    15728640 of 15728640 100% in 1s 13.89 MB/s done
    upload: 'important-archive.zip' -> 's3://test-bucket/important-archive.zip' [part 4 of 4, 122KB] [1 of 1]
    125565 of 125565 100% in 0s 170.41 KB/s done
  • Download a file from your bucket with s3cmd get:

    $ s3cmd get s3://test-bucket/important-file.txt
    download: 's3://test-bucket/important-file.txt' -> './important-file.txt' [1 of 1]
    37 of 37 100% in 0s 50.40 B/s done
  • Delete file from bucket with s3cmd rm:

    $ s3cmd rm s3://test-bucket/important-file.txt
    delete: 's3://test-bucket/important-file.txt'
  • Delete an empty bucket with s3cmd rb:

    $ s3cmd rb s3://test-bucket
    Bucket 's3://test-bucket/' removed

Reference​