Skip to content

21. Managed Object Storage

Object Storage is a computer data storage architecture that manages data as objects as opposed to block storage which manages data as blocks within sectors and tracks. Managed Object storage is commonly used to manage large amounts of unstructured data for example storing large datasets like photos, music, or files in online collaboration services. All customers data is encrypted by default using encryption at rest.

Managed Object Storage API commands allow creation, management and deletion of Object Storage devices as well as viewing Object Storage network data usage. Managed Object Storage is fully S3-compliant allowing file and bucket management using existing S3 clients.

API follows JSON Merge Patch semantics. Note when modifying nested structures payload should contain entire array, which in a sense is PUT within PATCH for them. JSON Merge Patch uses null to explicitly indicate property deletion while absent properties are ignored, i.e. not modified.

List regions

Returns a list of available managed object storage regions.

Request

GET /1.3/object-storage-2/regions HTTP/1.1

Normal response

HTTP/1.1 200 OK
[
    {
        "name": "europe-1",
        "primary_zone": "fi-hel1",
        "zones": [
            {
                "name": "fi-hel1"
            },
            {
                "name": "de-fra1"
            }
        ]
    }
]

Get region details

Returns object storage region details by given {name}.

Request

GET /1.3/object-storage-2/regions/{name} HTTP/1.1

Normal response

HTTP/1.1 200 OK
{
    "name": "europe-1",
    "primary_zone": "fi-hel1",
    "zones": [
        {
            "name": "fi-hel1"
        },
        {
            "name": "de-fra1"
        }
    ]
}

Create service

Creates a new object storage service.

Request

POST /1.3/object-storage-2 HTTP/1.1
{
    "name": "example-service",
    "region": "example",
    "configured_status": "started",
    "networks": [
        {
            "name": "example-public-network",
            "type": "public",
            "family": "IPv4"
        },
        {
            "name": "example-private-network",
            "uuid": "03aa7245-2ff9-49c8-9f0e-7ca0270d71a4",
            "type": "private",
            "family": "IPv4"
        }
    ]
}

Attributes

Attribute Accepted value Required Description
name 1-64 characters, regexp pattern ^[a-zA-Z0-9_-]+$ yes The name of the service must be unique within customer account.
region A valid region identifier, e.g. europe-1 yes Region in which the service will be hosted, see regions.
configured_status started / stopped yes Service status managed by the customer.
networks An array of 0-8 network objects no Attached networks from where object storage can be used. Private networks must reside in object storage region.
labels An array of 0-255 labels objects no Labels used for service filtering, see labels usage

Normal response

HTTP/1.1 201 Created

Error response

HTTP status Error code Description
402 Payment required INSUFFICIENT_CREDITS Customer account does not have enough credits for the requested action.
400 Bad Request INVALID_REQUEST Validation error.

List services

Returns a list of object storage services.

Request

GET /1.3/object-storage-2 HTTP/1.1

Query parameters

Attribute Accepted value Default value Required Description
limit 0-100 10 no Number of entries to receive at most.
offset >= 0 0 no Offset for retrieved results.
sort created_at,-created_at -created_at no Order of returned results.

Normal response

HTTP/1.1 200 OK
[
    {
        "configured_status": "started",
        "created_at": "2023-05-07T15:55:24.655776Z",
        "endpoints": [
            {
                "domain_name": "7mf5k.upbucket.com",
                "iam_url": "https://7mf5k.upbucket.com:4443/iam",
                "sts_url": "https://7mf5k.upbucket.com:4443/sts",
                "type": "public"
            },
            {
                "domain_name": "7mf5k-private.upbucket.com",
                "iam_url": "https://7mf5k-private.upbucket.com:4443/iam",
                "sts_url": "https://7mf5k-private.upbucket.com:4443/sts",
                "type": "private"
            }
        ],
        "name": "example-service",
        "networks": [
            {
                "family": "IPv4",
                "name": "example-public-network",
                "type": "public"
            },
            {
                "family": "IPv4",
                "name": "example-private-network",
                "type": "private",
                "uuid": "03aa7245-2ff9-49c8-9f0e-7ca0270d71a4"
            }
        ],
        "operational_state": "running",
        "region": "europe-1",
        "updated_at": "2023-05-07T21:38:15.757405Z",
        "uuid": "1200ecde-db95-4d1c-9133-6508f3232567"
    }
]

Notes:

Get service details

Returns object storage service details by given {service_uuid}.

Request

GET /1.3/object-storage-2/{service_uuid} HTTP/1.1

Normal response

HTTP/1.1 200 OK
{
    "configured_status": "started",
    "created_at": "2023-05-07T15:55:24.655776Z",
    "endpoints": [
        {
            "domain_name": "7mf5k.upbucket.com",
            "iam_url": "https://7mf5k.upbucket.com:4443/iam",
            "sts_url": "https://7mf5k.upbucket.com:4443/sts",
            "type": "public"
        },
        {
            "domain_name": "7mf5k-private.upbucket.com",
            "iam_url": "https://7mf5k-private.upbucket.com:4443/iam",
            "sts_url": "https://7mf5k-private.upbucket.com:4443/sts",
            "type": "private"
        }
    ],
    "name": "example-service",
    "networks": [
        {
            "family": "IPv4",
            "name": "example-public-network",
            "type": "public"
        },
        {
            "family": "IPv4",
            "name": "example-private-network",
            "type": "private",
            "uuid": "03aa7245-2ff9-49c8-9f0e-7ca0270d71a4"
        }
    ],
    "operational_state": "running",
    "region": "europe-1",
    "updated_at": "2023-05-07T21:38:15.757405Z",
    "users": [
        {
            "access_keys": [
                {
                    "access_key_id": "AKIA63F41D01345BB477",
                    "created_at": "2023-05-07T20:52:19.705405Z",
                    "last_used_at": "2023-05-07T20:52:17Z",
                    "status": "Active"
                }
            ],
            "arn": "urn:ecs:iam::123bbb5c6a4240409e07f7d89fe28891:user/example_user",
            "created_at": "2023-05-07T15:55:24.655776Z",
            "policies": [
              {
                "arn": "urn:ecs:iam:::policy/ECSS3FullAccess",
                "name": "ECSS3FullAccess"
              },
              {
                "arn": "urn:ecs:iam:::policy/IAMFullAccess",
                "name": "IAMFullAccess"
              }
            ],
            "username": "example_user"
        }
    ],
    "uuid": "1200ecde-db95-4d1c-9133-6508f3232567"
}

Notes:

Replace service

Replaces existing object storage service by given {service_uuid}.

Request

PUT /1.3/object-storage-2/{service_uuid} HTTP/1.1
{
    "name": "example-service",  
    "configured_status": "started",
    "networks": [
        {
            "name": "example-public-network",
            "type": "public",
            "family": "IPv4"
        },
        {
            "name": "example-private-network",
            "uuid": "03aa7245-2ff9-49c8-9f0e-7ca0270d71a4",
            "type": "private",
            "family": "IPv4"