使用 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
选项来获取,而不能在凭证文件中进行设置。
高级语法命令
可以使用 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 还允许发出直接 API 调用,以提供与使用 s3api
命令发出直接 HTTP 请求相同的响应。
列出存储区:
$ 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
}
]
}
配置静态 Web 站点
aws --endpoint-url=https://<endpoint> s3 website s3://<bucketname>/ --index-document index.html --error-document error.html
后续步骤
可在 S3 兼容性 API 文档 或 配置 API 文档中找到 IBM Cloud Object Storage 的 RESTful API 的详细描述。