How-tos

Accessing Bluemix Object Storage using OpenStack Swift Client

Share this post:

Update 06/26/18: As of August 1, 2018, no new instances of Object Storage OpenStack Swift (PaaS) can be created. This does not apply to Object Storage OpenStack Swift (Infrastructure) that is offered through the IBM Cloud Infrastructure. Migrate to the latest generation of IBM Cloud Object Storage to take advantage of all the new features and integrations with IBM Cloud services. Learn more.


You can access Bluemix Object Storage from any environment as long as the environment has internet access. Common use cases for Object Storage include:

  • Backing up volume data from your instances
  • Using as an intermediary location when transferring large amounts of data
  • Transferring data between environments that are not directly connected
  • Acting as a central repository

Bluemix Object Storage is based on OpenStack Swift and can be accessed using any compatible client application. This article describes how to use the Python Swift client to work with containers and files.

Installing the Swift client

Install the Python Swift client using Python pip::

$ sudo pip install python-keystoneclient
$ sudo pip install python-swiftclient

Setting up the client

The Swift client takes the authentication information from the environment variables ST_AUTH, ST_USER, and ST_KEY for the endpoint URL, username, and password respectively. If you’re accessing Object Storage from the IBM Cloud OpenStack Services guest network, make sure that you use the private endpoint which has a FQDN like this: .objectstorage.service.networklayer.com.
Set authentication information

$ export ST_AUTH=https://.objectstorage.service.networklayer.com/auth/v1.0/
$ export ST_USER=
$ export ST_KEY=Working with containers

Working with containers
Listing containers

$ swift list

Creating a new container

$ swift post

Listing the content of a container

$ swift list

Working with objects
Adding a file to a container

$ swift upload

If you are uploading a file that is larger than 5GB, you must split it into smaller chunks. You can instruct the Swift client to handle this by supplying the -segment-size parameter::

$ swift upload –segment-size

Each segment is uploaded in parallel into a separate container named _segments. Once all the segments are uploaded, Swift creates a manifest file so that the segments can be downloaded in a single file named .
Adding a directory to a container

$ swift upload

This will upload the full directory structure as a relative path. For example, if you specify /mnt/volume1, the directory structure mnt/volume1 will be attached to all the file names to indicate the directory structure.
Downloading a file

$ swift download

Downloading a directory

Swift does not have a true directory structure, but uses the naming to represent a directory layout. To download a directory structure, use the -prefix parameter to indicate the directory or directory structure you want to download.:

$ swift download –prefix

Deleting a file

$ swift delete

As you can see, it pretty easy to use Bluemix Object Storage using the OpenStack Swift Client. You can easily starts backing up files to the Cloud!

Next we will see how you can share the content you have uploaded into the cloud using temporary URLs.

More stories
May 1, 2019

Two Tutorials: Plan, Create, and Update Deployment Environments with Terraform

Multiple environments are pretty common in a project when building a solution. They support the different phases of the development cycle and the slight differences between the environments, like capacity, networking, credentials, and log verbosity. These two tutorials will show you how to manage the environments with Terraform.

Continue reading

April 29, 2019

Transforming Customer Experiences with AI Services (Part 1)

This is an experience from a recent customer engagement on transcribing customer conversations using IBM Watson AI services.

Continue reading

April 26, 2019

Analyze Logs and Monitor the Health of a Kubernetes Application with LogDNA and Sysdig

This post is an excerpt from a tutorial that shows how the IBM Log Analysis with LogDNA service can be used to configure and access logs of a Kubernetes application that is deployed on IBM Cloud.

Continue reading