使用 AWS CLI
AWS 的正式指令行介面與 IBM Cloud® Object Storage S3 API 相容。
它以 Python 撰寫,可以透過 pip install awscli
從 Python Package Index 進行安裝。 依預設,存取金鑰是從 ~/.aws/credentials
讀取,但也可以設為環境變數。
這些範例是使用 CLI V1.14.2 產生的。 若要檢查已安裝的版本,請執行 aws --version
。
配置 CLI 以連接至 Object Storage
若要配置 AWS CLI,請鍵入 aws configure
。 提供 HMAC 認證和預設地區名稱。 AWS S3 使用的「地區名稱」對應於 Object Storage 用來定義儲存空間類別的代碼 (LocationConstraint
)。
可以在 儲存空間類別手冊 中參照 LocationConstraint
的有效代碼清單。
aws configure
AWS Access Key ID [None]: {Access Key ID}
AWS Secret Access Key [None]: {Secret Access Key}
Default region name [None]: {Provisioning Code}
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 = {Provisioning Code}
output = json
您也可以使用環境變數來設定 HMAC 認證:
export AWS_ACCESS_KEY_ID="{Access Key ID}"
export AWS_SECRET_ACCESS_KEY="{Secret Access Key}"
IBM COS 端點必須使用 --endpoint-url
選項來取得,而且無法在 credentials 檔中設定。
高階語法指令
簡式使用案例可以使用 aws --endpoint-url {endpoint} s3 <command>
來達成。 如需端點的相關資訊,請參閱端點及儲存空間位置。 管理物件時,可使用您熟悉的 Shell 指令,例如 ls
、mv
、cp
和 rm
。 儲存區可以使用 mb
來建立,並使用 rb
予以刪除。
列出服務實例內的所有儲存區
aws --endpoint-url {endpoint} s3 ls
2016-09-09 12:48 s3://bucket-1
2016-09-16 21:29 s3://bucket-2
列出儲存區內的物件
aws --endpoint-url {endpoint} 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/config
檔案中的預設地區對應於與所選擇端點相同的位置,則儲存區建立作業是直接明確的。
aws --endpoint-url {endpoint} s3 mb s3://bucket-1
make_bucket: s3://bucket-1/
將物件新增至儲存區
aws --endpoint-url {endpoint} s3 cp large-dataset.tar.gz s3://bucket-1
upload: ./large-dataset.tar.gz to s3://bucket-1/large-dataset.tar.gz
您也可以設定不同於檔案名稱的新物件金鑰:
aws --endpoint-url {endpoint} 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 --endpoint-url {endpoint} s3 cp s3://bucket-1/new-file s3://bucket-2/
copy: s3://bucket-1/new-file to s3://bucket-2/new-file
從儲存區刪除物件
aws --endpoint-url {endpoint} s3 rm s3://mybucket/argparse-1.2.1.tar.gz
delete: s3://mybucket/argparse-1.2.1.tar.gz
移除儲存區
aws --endpoint-url {endpoint} s3 rb s3://bucket-1
remove_bucket: s3://bucket-1/
建立預先簽署的 URL
CLI 可以建立預先簽署的 URL。 這些 URL 容許暫時的物件公用存取權,而不會變更任何現有存取控制措施。
$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file
您也可以設定 URL 的存活時間(以秒為單位,預設值為 3600):
$ aws --endpoint-url {endpoint} s3 presign s3://bucket-1/new-file --expires-in 600
低階語法指令
AWS CLI 也容許透過使用 s3api
指令,提供與直接 HTTP 要求相同回應的直接 API 呼叫。
列出儲存區:
$ aws --endpoint-url {endpoint} 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 --endpoint-url {endpoint} 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
}
]
}
配置靜態網站
aws --endpoint-url=https://<endpoint> s3 website s3://<bucketname>/ --index-document index.html --error-document error.html
後續步驟
IBM Cloud Object Storage RESTful API 的詳細說明可在 S3 相容性 API 文件 或 配置 API 文件中找到。