---
name: cephaas-aws_cli
title: Using the AWS CLI
description: The official command-line interface for AWS is compatible with the IBM Storage Ceph as a Service S3 API.
last-updated: 2026-06-12
---

> ## Documentation Index
> The table of contents for this documentation set is at https://cloud.ibm.com/docs/cephaas?format=markdown
> The index for all IBM Cloud docs is at: https://cloud.ibm.com/docs/llms.txt
> Use these files to discover more information as needed.

# Using the AWS CLI
{: #aws-cli}

The official command-line interface for AWS is compatible with the IBM Storage Ceph as a Service S3 API.
{: shortdesc}

Written in Python, it can be installed from the Python Package Index by using `pip install awscli`. By default, access keys are sourced from `~/.aws/credentials`, but can also be set as environment variables.

These examples were generated by using version 1.14.2 of the CLI. To check the version installed, run `aws --version`.

## Configure the CLI to connect to Object Storage
{: #aws-cli-config}

To configure the AWS CLI, type `aws configure` and provide your [HMAC credentials](https://cloud.ibm.com/docs/cephaas?topic=cephaas-about-object-storage&format=markdown#about-hmac-creds).


```sh
aws configure
AWS Access Key ID [None]: {Access Key ID}
AWS Secret Access Key [None]: {Secret Access Key}
Default region name [None]: {Region name}
Default output format [None]: json
```

This action creates two files:

 `~/.aws/credentials`:

```sh
[default]
aws_access_key_id = {Access Key ID}
aws_secret_access_key = {Secret Access Key}
```
{: codeblock}

`~/.aws/config`:

```sh
[default]
region = {Region name}
output = json
endpoint_url = {endpoint}
ca_bundle = {CA certificate location}
```
{: codeblock}

The IBM CephaaS endpoint must be sourced by using the `--endpoint-url` option, and can be set in the aws config file.

Add your endpoint and CA Certificate location in this `~/.aws/config` config file instead of using it in all of your AWS requests.
{: tip}

You can also use environment variables to set HMAC credentials:

```sh
export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"
```
{: codeblock}



## High-level syntax commands
{: #aws-cli-high-level}

Simple use cases can be accomplished by using `aws s3 <command>`. For more information about endpoints, see [Endpoints and storage locations](https://cloud.ibm.com/docs/cephaas?topic=cephaas-endpoints&format=markdown). Objects are managed by using familiar shell commands, such as `ls`, `mv`, `cp`, and `rm`. Buckets can be created by using `mb` and deleted by using `rb`.

### List all buckets within a service instance
{: #aws-cli-high-level-list-buckets}

```sh
aws s3 ls
2016-09-09 12:48  s3://bucket-1
2016-09-16 21:29  s3://bucket-2
```

### List objects within a bucket
{: #aws-cli-high-level-list-objects}

```sh
aws s3 ls s3://bucket-1
2016-09-28 15:36       837   s3://bucket-1/c1ca2-filename-00001
2016-09-09 12:49       533   s3://bucket-1/c9872-filename-00002
2016-09-28 15:36     14476   s3://bucket-1/98837-filename-00003
2016-09-29 16:24     20950   s3://bucket-1/abfc4-filename-00004
```

### Make a new bucket
{: #aws-cli-high-level-new-bucket}

Personally Identifiable Information (PII): When you are _naming_ buckets or objects, do not use any information that can identify any user (natural person) by name, location, or any other means.
{: tip}



```sh
aws s3 mb s3://bucket-1
make_bucket: s3://bucket-1/
```



### Add an object to a bucket
{: #aws-cli-high-level-upload}

```sh
aws s3 cp large-dataset.tar.gz s3://bucket-1
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset.tar.gz
```

You can also set a new object key that is different from the file name:

```sh
aws s3 cp large-dataset.tar.gz s3://bucket-1/large-dataset-for-project-x
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset-for-project-x
```

### Copying an object from one bucket to another
{: #aws-cli-high-level-copy}

```sh
$ aws s3 cp s3://bucket-1/new-file s3://bucket-2/
copy: s3://bucket-1/new-file to s3://bucket-2/new-file
```

### Delete an object from a bucket
{: #aws-cli-high-level-delete-object}

```sh
aws s3 rm s3://mybucket/argparse-1.2.1.tar.gz
delete: s3://mybucket/argparse-1.2.1.tar.gz
```


### Remove a bucket
{: #aws-cli-high-level-delete-bucket}

```sh
aws s3 rb s3://bucket-1
remove_bucket: s3://bucket-1/
```


## Low-level syntax commands
{: #aws-cli-low-level}

The AWS CLI also allows direct API calls that provide the same responses as direct HTTP requests by using the `s3api` command.

### Listing buckets
{: #aws-cli-low-level-list-buckets}

```sh
aws s3api list-buckets
{
    "Owner": {
        "DisplayName": "{storage-account-uuid}",
        "ID": "{storage-account-uuid}"
    },
    "Buckets": [
        {
            "CreationDate": "2016-09-09T12:48:52.442Z",
            "Name": "bucket-1"
        },
        {
            "CreationDate": "2016-09-16T21:29:00.912Z",
            "Name": "bucket-2"
        }
    ]
}
```

### Listing objects within a bucket
{: #aws-cli-low-level-list-objects}

```sh
aws s3api list-objects --bucket bucket-1
```

```json
{
    "Contents": [
        {
            "LastModified": "2016-09-28T15:36:56.807Z",
            "ETag": "\"13d567d518c650414c50a81805fff7f2\"",
            "StorageClass": "STANDARD",
            "Key": "c1ca2-filename-00001",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 837
        },
        {
            "LastModified": "2016-09-09T12:49:58.018Z",
            "ETag": "\"3ca744fa96cb95e92081708887f63de5\"",
            "StorageClass": "STANDARD",
            "Key": "c9872-filename-00002",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 533
        },
        {
            "LastModified": "2016-09-28T15:36:17.573Z",
            "ETag": "\"a54ed08bcb07c28f89f4b14ff54ce5b7\"",
            "StorageClass": "STANDARD",
            "Key": "98837-filename-00003",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 14476
        },
        {
            "LastModified": "2016-10-06T14:46:26.923Z",
            "ETag": "\"2bcc8ee6bc1e4b8cd2f9a1d61d817ed2\"",
            "StorageClass": "STANDARD",
            "Key": "abfc4-filename-00004",
            "Owner": {
                "DisplayName": "{storage-account-uuid}",
                "ID": "{storage-account-uuid}"
            },
            "Size": 20950
        }
    ]
}
```



## Next Steps
{: #aws-cli-next-steps}

The detailed description of the RESTful API for IBM Storage Ceph as a Service can be found in the [API Documentation](https://cloud.ibm.com/docs/apis/object-storage){: external}.