Updated on 2024-02-04 GMT+08:00

Billing

Billing Mode

OMS is a free service. You pay for migration resources used (bandwidth and API calls). After the free period expires, you will be billed only for data migrated by OMS. This billing mode allows you to easily and flexibly forecast migration costs.

During the migration, the APIs of the object storage services on the source and destination platforms are called to upload and download data. You will be charged for the API requests generated as well as data download and upload. For details about the fees, see API Requests and Data Download and Upload.

Data Download and Upload

OMS needs to download data from source buckets and then upload the data to the destination OBS buckets.

  • Any data download fees generated on the source platform are billed by the source cloud service provider. The total charges depend on the data size.
    • To save money, you can subscribe to a Content Delivery Network (CDN) traffic package from the source cloud service provider, and enable the traffic limit function of OMS to limit the traffic transmitted during peak hours.
    • If the automatic restoration function of OMS is used, you need to pay for archive data restoration and retrieval.
  • No fees are generated when data is uploaded to destination OBS buckets on Huawei Cloud.
  • No traffic fees are generated for migration in the same region, regardless of the migration is performed within the same account or across accounts.

API Requests

Before the migration, OMS compares objects in source and destination buckets. Then, OMS downloads objects from the source bucket and then uploads them to the destination bucket. After the migration, OMS verifies the objects that are migrated.

All these operations generate API requests. There are basic requests and common requests (for listing objects, uploading failed object lists, retrying upon network exceptions, and automatic restoration). The number of API requests varies depending on the scenarios.

  • If there is no object in the destination bucket with the same name as one in the source bucket, the source object will be migrated.
    • Source bucket: 2 HEAD and 1 GET requests
      • One HEAD request is used to check if the object exists in the source bucket and compare the object with those in the destination bucket.
      • One GET request is used to download the object from the source bucket.
      • One HEAD request is used to verify consistency.
    • Destination bucket: 2 HEAD and 2 PUT requests
      • One HEAD request is sent to check whether the object already exists in the destination bucket.
      • One PUT request is used to upload the object to the destination bucket.
      • One PUT request is used to configure the object storage class after the migration is complete.
      • One HEAD request is used to verify consistency.
  • If there is an object in the destination bucket with the same name and size as one in the source bucket, but the last modification time of the destination object is later than that of the source object, the source object will not be migrated.
    • Source bucket: 1 HEAD request
      • One HEAD request is used to check if the object exists in the source bucket and compare the object with those in the destination bucket.
    • Destination bucket: 1 HEAD request
      • One HEAD request is sent to check whether the object already exists in the destination bucket.
  • If there is an object in the destination bucket with the same name as one in the source bucket, but the object has a different size or its last modification time is earlier than that of the source object, the source object will be migrated, and the migrated object will overwrite the destination object.
    • Source bucket: 2 HEAD and 1 GET requests
      • One HEAD request is used to check if the object exists in the source bucket and compare the object with those in the destination bucket.
      • One GET request is used to download the object from the source bucket.
      • One HEAD request is used to verify consistency.
    • Destination bucket: 2 HEAD and 2 PUT requests
      • One HEAD request is sent to check whether the object already exists in the destination bucket.
      • One PUT request is used to upload the object to the destination bucket.
      • One PUT request is used to configure the object storage class after the migration is complete.
      • One HEAD request is used to verify consistency.

Any source object larger than 50 MB will be uploaded in multiple parts with each part of up to 50 MB, and each part will generate their own GET and PUT requests.

For example, a 200 MB object will be divided into four parts, so there will be four GET requests needed to down load them from the source bucket, four PUT requests needed to upload them to the destination bucket, and one additional PUT request for combining them at the end. That means a 200 MB object generates the following requests:

  • Source bucket: 2 HEAD and 4 GET requests
  • Destination bucket: 2 HEAD and 5 PUT requests (1 PUT for each of the four parts and 1 combination PUT)

The actual price of an API request depends on the cloud service provider. For details about the price of the API requests of Huawei Cloud OBS, see Product Pricing Details.

How to Estimate Migration Fees

Generally, the migration fees can be estimated using the following formula:

Migration fee = Number of source API requests x Unit price of source API requests + Number of destination API requests x Unit price of destination API requests + Total size of source objects x Unit price of outbound traffic on the source platform

  • Number of source API requests = (Total number of objects/1,000) + Number of objects x 4
  • Number of destination API requests = Total number of objects x 4
  • Unit price of outbound traffic on the source platform: determined by the source cloud service provider

    The fees of the destination API requests are billed by Huawei Cloud.