使用 AWS CLI

AWS 的正式指令行介面與 IBM Storage Ceph as a Service S3 API 相容。

以 Python 撰寫,可透過 pip install awscli 從 Python 套件索引中安裝。 依預設,存取金鑰是從 ~/.aws/credentials 讀取,但也可以設為環境變數。

這些範例是使用 CLI V1.14.2 產生的。 若要檢查已安裝的版本,請執行 aws --version

設定 CLI 連線至 Object Storage

若要設定 AWS CLI,請輸入 aws configure 並提供您的 HMAC 認證

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

此動作會建立兩個檔案:

~/.aws/credentials:

[default]
aws_access_key_id = {Access Key ID}
aws_secret_access_key = {Secret Access Key}

~/.aws/config:

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

IBM CephaaS 端點的來源必須使用 --endpoint-url 選項,並可在 aws 配置檔案中設定。

在此 ~/.aws/config 配置檔案中加入您的端點和 CA 憑證位置,而不是在所有 AWS 請求中使用。

您也可以使用環境變數來設定 HMAC 認證:

export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"

高階語法指令

簡單的用例可以使用 aws s3 <command> 完成。 如需端點的相關資訊,請參閱端點及儲存空間位置。 管理物件時,可使用您熟悉的 Shell 指令,例如 lsmvcprm。 儲存區可以使用 mb 來建立,並使用 rb 予以刪除。

列出服務實例內的所有儲存區

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

列出儲存區內的物件

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

建立新的儲存區

個人識別資訊 (PII):當您_命名_水桶或物件時,請勿使用任何可透過姓名、位置或任何其他方式識別任何使用者(自然人)的資訊。

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

將物件新增至儲存區

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

您也可以設定不同於檔案名稱的新物件金鑰:

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

將物件從一個水桶複製到另一個水桶

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

從儲存區刪除物件

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

移除儲存區

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

低階語法指令

AWS CLI 也容許透過使用 s3api 指令,提供與直接 HTTP 要求相同回應的直接 API 呼叫。

列出水桶

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"
        }
    ]
}

列出儲存區內的物件

aws s3api list-objects --bucket bucket-1
{
    "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
        }
    ]
}

後續步驟

IBM Storage Ceph as a Service 的 RESTful API 詳細說明,請參閱 API 文件