Skip to content

AWSCLI使用手册

运行环境

您需要 Python 2.6.3 或更高版本才能运行AWSCLI工具。

安装awscli

awscli可以使用python-pip工具或其他包管理器下载,也可以使用amazonaws官网提供的安装包进行安装,本文使用python-pip进行安装,其他安装方式见amazonaws官网

执行安装命令

shell
pip install awscli

校验是否安装

执行以下命令会打印awscli的版本信息。

shell
aws --version

如果输入如下或类似信息即说明安装成功。

shell
aws-cli/2.15.2 Python/3.11.6 Linux/3.10.0-1160.76.1.el7.x86_64 exe/x86_64.centos.7 prompt/off

配置aws

执行以下命令

配置认证信息

shell
aws configure

如果显示如下的信息即可配置认证信息。

shell
AWS Access Key ID [None]: {Args1}
AWS Secret Access Key [None]: {Args2}
Default region name [None]: {Args3}
Default output format [None]: {Args4}

配置参数如下:

参数名称描述
Args1AWS 账户的访问密钥ID,如:PIM9Z4LAahZtba1BeLW2
Args2AWS 账户的密钥,如:LADiAZZeHF0bLHamidpy
Args3默认的 AWS 区域名称
Args4默认的输出格式。可选项包括 json, text, table 等

设置签名版本

shell
aws configure set default.s3.signature_version s3v4

s3 指令

移动对象

指令:

shell
aws s3 mv {Args1} {Args2} [Options] --endpoint-url {OSSUrl}
参数名称描述
Args1指定源对象的路径
Args2指定目标路径
Options可选参数,如:--recursive、--expires-in 有效期秒数
OSSUrl访问终端节点URL

桶移动到本地

指令:

shell
aws s3 mv s3://20001-cbq2/2config.ini /home/ --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
move: s3://20001-cbq2/2config.ini to ../home/2config.ini

本地移动到桶

指令:

shell
aws s3 mv /home/obj.txt s3://20001-cbq2/ --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
move: ../home/obj.txt to s3://20001-cbq2/obj.txt

桶移动到桶

指令:

shell
aws s3 mv s3://20001-cbq2/obj.txt s3://20001-cbq2/obj3.txt --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
move: s3://20001-cbq2/obj.txt to s3://20001-cbq2/obj3.txt

可选参数:--recursive

递归地移动目录和所有子目录

指令:

shell
aws s3 mv /home/user/ s3://20001-cbq2/ --endpoint-url fgws3-ocloud.ihep.ac.cn --recursive

结果:

shell
move: ../home/user/myfile.txt to s3://20001-cbq2/myfile.txt      
move: ../home/user/myfile1.txt to s3://20001-cbq2/myfile1.txt

生成预签名

指令:

shell
aws --endpoint-url {OSSUrl} s3 presign {Args1} [Options]
参数名称描述
Args1要生成预签名 URL 的 S3 对象的路径
Options可选参数,如:--expires-in 有效期秒数、--region 区域、--profile 配置文件名
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 presign s3://20001-cbq/2config.ini

结果:

shell
fgws3-ocloud.ihep.ac.cn/20001-cbq/2config.ini?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=PIM9Z4LAahZtba1BeLW2%2F20231209%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231209T090805Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f175942dd41bb9a890c3bdb35c6d60d50fcdfca83c029097b72eaddc1f58bc2a

可选参数:--expires-in value

指定 URL 的有效期(以秒为单位)。默认情况下,URL 的有效期为 3600 秒(1 小时)

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 presign s3://20001-cbq/2config.ini --expires-in 600

结果:

shell
fgws3-ocloud.ihep.ac.cn/20001-cbq/2config.ini?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=PIM9Z4LAahZtba1BeLW2%2F20231211%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231211T062719Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=764ed0455ed7b54eda786046f7d8dec045514cc165cddc81d4dc6fdfe8c73e79

列举桶内对象

指令:

shell
aws --endpoint-url {OSSUrl} s3 ls {Args1} [Options]
参数名称描述
Args1要列出对象的路径
Options可选参数,如:--human-readable、--summarize、--recursive
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 ls s3://20001-cbq2

结果:

shell
2023-12-08 06:58:24          7 obj.txt

可选参数:--human-readable

以易读的格式显示文件大小

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 ls s3://20001-cbq2 --human-readable

结果:

shell
2023-12-11 03:56:27  293 Bytes .editorconfig
2023-12-11 01:53:41    0 Bytes 
2023-12-11 03:56:27  280 Bytes 2config.ini
2023-12-11 03:56:27    6.8 MiB my-object
2023-12-11 03:56:27    7.2 KiB pom.xml
2023-12-09 08:56:37    0 Bytes 
2023-12-11 01:53:41    0 Bytes 
2023-12-11 01:53:41    0 Bytes

可选参数:--summarize

在输出的末尾添加一个摘要行,显示列出的对象总数和总大小

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 ls s3://20001-cbq2 --summarize

结果:

shell
2023-12-11 03:56:27        293 .editorconfig
2023-12-11 01:53:41          0 
2023-12-11 03:56:27        280 2config.ini
2023-12-11 03:56:27    7141345 my-object
2023-12-11 03:56:27       7401 pom.xml
2023-12-09 08:56:37          0 
2023-12-11 01:53:41          0 
2023-12-11 01:53:41          0 

Total Objects: 8
   Total Size: 7149319

可选参数:--recursive

递归地列出指定存储桶下的所有对象

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 ls s3://20001-cbq2 --recursive

结果:

shell
2023-12-11 03:56:27        293 .editorconfig
2023-12-11 01:53:41          0 .vscode/
2023-12-11 03:56:27        698 .vscode/settings.json
2023-12-11 03:56:27        280 2config.ini
2023-12-11 03:56:27    7141345 my-object
2023-12-11 03:56:27       7401 pom.xml
2023-12-09 08:56:37          0 root/
2023-12-11 03:56:27        359 root/nohup.out
2023-12-11 01:53:41          0 src/
2023-12-11 01:53:41          0 src/main/
2023-12-11 01:53:41          0 src/main/java/
2023-12-11 01:53:41          0 src/main/java/com/
2023-12-11 01:53:41          0 src/main/java/com/example/
2023-12-11 03:56:27       1805 src/main/java/com/example/App.java
2023-12-11 01:53:41          0 src/test/
2023-12-11 01:53:41          0 src/test/java/
2023-12-11 01:53:41          0 src/test/java/com/
2023-12-11 01:53:41          0 src/test/java/com/example/
2023-12-11 03:56:27        296 src/test/java/com/example/AppTest.java
2023-12-11 01:53:41          0 target/
2023-12-11 03:56:27        299 target/checkstyle-cachefile
2023-12-11 03:56:27       7225 target/checkstyle-checker.xml
2023-12-11 03:56:27        223 target/checkstyle-result.xml
2023-12-11 01:53:41          0 target/classes/
2023-12-11 01:53:41          0 target/classes/com/
2023-12-11 01:53:41          0 target/classes/com/example/
2023-12-11 03:56:27       2469 target/classes/com/example/App.class
2023-12-11 01:53:41          0 target/test-classes/
2023-12-11 01:53:41          0 target/test-classes/com/
2023-12-11 01:53:41          0 target/test-classes/com/example/
2023-12-11 03:56:27        488 target/test-classes/com/example/AppTest.class

复制对象

指令:

shell
aws --endpoint-url {OSSUrl} s3 cp {Args1} {Args2} [Options]
参数名称描述
Args1源路径:表示要复制的文件或目录的路径
Args2目标路径:表示复制后的文件或目录的路径
Options可选参数,如:--recursive、--exclude
OSSUrl访问终端节点URL

本地复制到存储桶

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 cp /home/obja.txt s3://20001-cbq2

结果:

shell
upload: ./obj.txt to s3://20001-cbq2/obj.txt

存储桶复制到本地

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 cp s3://20001-cbq2/obj.txt /home/tong/

结果:

shell
download: s3://20001-cbq2/obj.txt to ../home/tong/obj.txt

存储桶之间进行复制

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 cp s3://20001-cbq2/obj.txt s3://20001-cbq2/obj3.txt

结果:

shell
copy: s3://20001-cbq2/obj.txt to s3://20001-cbq2/obj3.txt

可选参数:--recursive

递归地复制目录中的所有文件和子目录,且是全量复制

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 cp s3://20001-cbq2 /home/tong/ --recursive

结果:

shell
download: s3://20001-cbq2/.editorconfig to ../home/tong/.editorconfig               
download: s3://20001-cbq2/2config.ini to ../home/tong/2config.ini                   
download: s3://20001-cbq2/.vscode/settings.json to ../home/tong/.vscode/settings.json
download: s3://20001-cbq2/abc.txt to ../home/tong/abc.txt                         
download: s3://20001-cbq2/obj.txt to ../home/tong/obj.txt                         
download: s3://20001-cbq2/pom.xml to ../home/tong/pom.xml                          
download: s3://20001-cbq2/obja.txt to ../home/tong/obja.txt                        
download: s3://20001-cbq2/root/nohup.out to ../home/tong/root/nohup.out             
download: s3://20001-cbq2/target/checkstyle-result.xml to ../home/tong/target/checkstyle-result.xml
download: s3://20001-cbq2/target/checkstyle-cachefile to ../home/tong/target/checkstyle-cachefile
download: s3://20001-cbq2/src/test/java/com/example/AppTest.java to ../home/tong/src/test/java/com/example/AppTest.java
download: s3://20001-cbq2/src/main/java/com/example/App.java to ../home/tong/src/main/java/com/example/App.java
download: s3://20001-cbq2/target/classes/com/example/App.class to ../home/tong/target/classes/com/example/App.class
download: s3://20001-cbq2/target/test-classes/com/example/AppTest.class to ../home/tong/target/test-classes/com/example/AppTest.class
download: s3://20001-cbq2/target/checkstyle-checker.xml to ../home/tong/target/checkstyle-checker.xml
download: s3://20001-cbq2/my-object to ../home/tong/my-object

可选参数:--exclude

排除文件

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3 cp s3://20001-cbq s3://20001-cbq2 --recursive --exclude "*.txt"

结果:

shell
copy: s3://20001-cbq/.editorconfig to s3://20001-cbq2/.editorconfig
copy: s3://20001-cbq/2config.ini to s3://20001-cbq2/2config.ini  
copy: s3://20001-cbq/.vscode/settings.json to s3://20001-cbq2/.vscode/settings.json
copy: s3://20001-cbq/src/main/java/com/example/App.java to s3://20001-cbq2/src/main/java/com/example/App.java
copy: s3://20001-cbq/root/nohup.out to s3://20001-cbq2/root/nohup.out
copy: s3://20001-cbq/target/classes/com/example/App.class to s3://20001-cbq2/target/classes/com/example/App.class
copy: s3://20001-cbq/target/checkstyle-checker.xml to s3://20001-cbq2/target/checkstyle-checker.xml
copy: s3://20001-cbq/pom.xml to s3://20001-cbq2/pom.xml         
copy: s3://20001-cbq/target/test-classes/com/example/AppTest.class to s3://20001-cbq2/target/test-classes/com/example/AppTest.class
copy: s3://20001-cbq/target/checkstyle-result.xml to s3://20001-cbq2/target/checkstyle-result.xml
copy: s3://20001-cbq/src/test/java/com/example/AppTest.java to s3://20001-cbq2/src/test/java/com/example/AppTest.java
copy: s3://20001-cbq/target/checkstyle-cachefile to s3://20001-cbq2/target/checkstyle-cachefile
copy: s3://20001-cbq/my-object to s3://20001-cbq2/my-object

递归删除

指令:

shell
aws s3 rm {Args1} [Options] --endpoint-url {OSSUrl}
参数名称描述
Args1源路径:表示要复制的文件或目录的路径
Options可选参数,如:--recursive
OSSUrl访问终端节点URL

例子:

shell
aws s3 rm s3://20001-cbq2/ --recursive --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
delete: s3://20001-cbq2/.editorconfig
delete: s3://20001-cbq2/S3test1.txt
delete: s3://20001-cbq2/S3test13.txt
delete: s3://20001-cbq2/pom.xml
delete: s3://20001-cbq2/obj3.txt
delete: s3://20001-cbq2/my-object
delete: s3://20001-cbq2/.vscode/
delete: s3://20001-cbq2/src/test/java/com/
delete: s3://20001-cbq2/target/checkstyle-checker.xml
delete: s3://20001-cbq2/src/test/
delete: s3://20001-cbq2/target/checkstyle-result.xml
delete: s3://20001-cbq2/target/checkstyle-cachefile
delete: s3://20001-cbq2/target/classes/
delete: s3://20001-cbq2/src/
delete: s3://20001-cbq2/target/

删除桶

指令:

shell
aws s3 rb {Args1} --endpoint-url {OSSUrl}
参数名称描述
Args1要删除的 S3 存储桶的路径
OSSUrl访问终端节点URL

例子:

shell
aws s3 rb s3://20001-cbq2 --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
remove_bucket: 20001-cbq2

同步文件夹

指令:

shell
aws s3 sync {Args1} {Args2} [Options] --endpoint-url {OSSUrl}
参数名称描述
Args1表示要同步的本地目录或文件的路径。可以是相对路径或绝对路径。必填参数。
Args2表示同步的目标 S3 存储桶和路径。格式为 s3://存储桶名称/路径。必填参数
Options可选参数,如:--exclude、--include、--exclude、--delete
OSSUrl访问终端节点URL

本地文件夹同步到桶(增量)

指令:

shell
aws s3 sync /home/demo s3://20001-cbq2/ --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
upload: ../home/demo/pom.xml to s3://20001-cbq2/pom.xml                           
upload: ../home/demo/.editorconfig to s3://20001-cbq2/.editorconfig               
upload: ../home/demo/.vscode/settings.json to s3://20001-cbq2/.vscode/settings.json
upload: ../home/demo/target/checkstyle-result.xml to s3://20001-cbq2/target/checkstyle-result.xml
upload: ../home/demo/target/checkstyle-checker.xml to s3://20001-cbq2/target/checkstyle-checker.xml
upload: ../home/demo/target/checkstyle-cachefile to s3://20001-cbq2/target/checkstyle-cachefile
upload: ../home/demo/src/main/java/com/example/App.java to s3://20001-cbq2/src/main/java/com/example/App.java
upload: ../home/demo/src/test/java/com/example/AppTest.java to s3://20001-cbq2/src/test/java/com/example/AppTest.java
upload: ../home/demo/target/test-classes/com/example/AppTest.class to s3://20001-cbq2/target/test-classes/com/example/AppTest.class
upload: ../home/demo/target/classes/com/example/App.class to s3://20001-cbq2/target/classes/com/example/App.class

桶同步到本地文件夹(增量)

指令:

shell
aws s3 sync s3://20001-cbq2/ /home/tong --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
download: s3://20001-cbq2/2config.ini to ../home/tong/2config.ini
download: s3://20001-cbq2/root/nohup.out to ../home/tong/root/nohup.out
download: s3://20001-cbq2/my-object to ../home/tong/my-object

桶与桶之间的同步(增量)

指令:

shell
aws s3 sync s3://20001-cbq s3://20001-cbq2 --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
copy: s3://20001-cbq/root/nohup.out to s3://20001-cbq2/root/nohup.out
copy: s3://20001-cbq/my-object to s3://20001-cbq2/my-object

可选参数:--delete

如果需要把源目录里不存在的文件在目标目录中也删除,可以加上delete参数

指令:

shell
aws s3 sync s3://20001-cbq2 s3://20001-cbq --endpoint-url fgws3-ocloud.ihep.ac.cn --delete

结果:

shell
delete: s3://20001-cbq/obja.txt

可选参数:--exclude

如果需要忽略某些文件的同步,可以使用这个参数,例如

指令:

shell
aws s3 sync s3://20001-cbq2 s3://20001-cbq --endpoint-url fgws3-ocloud.ihep.ac.cn --exclude "*.txt"

结果:

shell
无返回值

s3api指令

桶的操作

列举桶内对象

指令:

shell
aws s3api list-objects --bucket {Args1} [Options] --endpoint {OSSUrl}
参数名称描述
Args1表示要列出对象的 S3 存储桶的名称。必填参数。
Options可选参数,如:--prefix
OSSUrl访问终端节点URL

例子:

shell
aws s3api list-objects --bucket 20001-cbq2 --endpoint fgws3-ocloud.ihep.ac.cn

结果:

shell
{
    "Contents": [
        {
            "Key": "S3test1.txt",
            "LastModified": "2023-12-08T07:05:48Z",
            "ETag": "\"c1b712b5927a315820b2fad439eb5f72\"",
            "Size": 11,
            "StorageClass": "STANDARD",
            "Owner": {
                "ID": "0"
            }
        },
        {
            "Key": "my-object",
            "LastModified": "2023-12-09T02:53:10Z",
            "ETag": "\"217a6a8a26bf8636977d5e0a7f79615a-2\"",
            "Size": 7141345,
            "StorageClass": "STANDARD",
            "Owner": {
                "ID": "0"
            }
        }
    ]
}

可选参数:--prefix

指定要筛选对象的前缀

指令:

shell
aws s3api list-objects --bucket 20001-cbq --prefix my-object --endpoint fgws3-ocloud.ihep.ac.cn

结果:

shell
{
    "Contents": [
        {
            "Key": "my-object",
            "LastModified": "2023-12-11T03:26:41Z",
            "ETag": "\"8eb18b1937cedfbcabb82a47f55daa7e\"",
            "Size": 7141345,
            "StorageClass": "STANDARD",
            "Owner": {
                "ID": "0"
            }
        }
    ]
}

获取桶的ACL

指令:

shell
aws --endpoint-url {OSSUrl} s3api get-bucket-acl --bucket {Args1} [Options]
参数名称描述
Args1表示要获取 ACL 的 S3 存储桶的名称。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api get-bucket-acl --bucket 20001-cbq2

结果:

shell
{
    "Owner": {
        "DisplayName": "20001",
        "ID": "20001"
    },
    "Grants": [
        {
            "Grantee": {
                "DisplayName": "20001",
                "ID": "20001",
                "Type": "CanonicalUser"
            },
            "Permission": "FULL_CONTROL"
        }
    ]
}

获取桶元数据

指令:

shell
aws --endpoint-url {OSSUrl} s3api head-bucket --bucket {Args1} [Options]
参数名称描述
Args1表示要检查的 S3 存储桶的名称。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api head-bucket --bucket 20001-cbq2

结果:

shell
无返回信息

不存在则返回错误:

An error occurred (403) when calling the HeadBucket operation: Forbidden

获取桶列表

指令:

shell
aws --endpoint-url {OSSUrl} s3api list-buckets [Options]
参数名称描述
Options可选参数,如:--query 查询表达式
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api list-buckets

结果:

shell
{
    "Buckets": [
        {
            "Name": "20001-cbq",
            "CreationDate": "2023-12-08T02:35:29Z"
        },
        {
            "Name": "20001-cbq2",
            "CreationDate": "2023-12-08T03:08:40Z"
        }
    ],
    "Owner": {
        "DisplayName": "",
        "ID": ""
    }
}

大对象分块

初始化上传段任务

指令:

shell
aws --endpoint-url {OSSUrl} s3api create-multipart-upload --bucket {Args1} --key {Args2}
参数名称描述
Args1表示要上传到的 S3 存储桶的名称。必填参数。
Args2表示要上传的对象在存储桶中的键名(路径和文件名)。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api create-multipart-upload --bucket 20001-cbq2 --key my-object

结果:

shell
{
    "Bucket": "20001-cbq2",
    "Key": "my-object",
    "UploadId": "6083958e0b6a8c906c6b1f04fbecedd92d788be7"
}

上传段

指令:

shell
aws --endpoint-url {OSSUrl} s3api upload-part --bucket {Args1} --key {Args2} --upload-id {Args3} --part-number {Args4} --body {Args5} [Options]
参数名称描述
Args1表示要上传到的 S3 存储桶的名称。必填参数。
Args2表示要上传的对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示分段上传任务的唯一标识符 UploadId。必填参数。
Args4表示当前分段的编号。分段编号从 1 开始,按顺序递增。必填参数。
Args5表示要上传的本地文件的路径。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api upload-part --bucket 20001-cbq2 --key my-object --upload-id 6083958e0b6a8c906c6b1f04fbecedd92d788be7 --part-number 1 --body /home/FlashFXP.zip

结果:

shell
{
    "ETag": "\"8eb18b1937cedfbcabb82a47f55daa7e\""
}

合并段

指令:

shell
aws --endpoint-url {OSSUrl} s3api complete-multipart-upload --bucket {Args1} --key {Args2} --upload-id {Args3} --multipart-upload {Args4} [Options]
参数名称描述
Args1表示要上传到的 S3 存储桶的名称。必填参数。
Args2表示要上传的对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示分段上传任务的唯一标识符 UploadId。必填参数。
Args4表示一个 JSON 格式的字符串,其中包含了已上传分段的信息。这个参数是在所有分段都上传完成后生成的。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api complete-multipart-upload --bucket 20001-cbq2 --key my-object --upload-id 6083958e0b6a8c906c6b1f04fbecedd92d788be7 --multipart-upload '{"Parts": [{"ETag": "8eb18b1937cedfbcabb82a47f55daa7e", "PartNumber": 1}]}'

结果:

shell
{
    "Location": "http://127.0.0.1:8899/buckets/20001-cbq2/my-object",
    "Bucket": "20001-cbq2",
    "Key": "my-object",
    "ETag": "\"217a6a8a26bf8636977d5e0a7f79615a-2\""
}

取消多段上传任务

指令:

shell
aws --endpoint-url {OSSUrl} s3api abort-multipart-upload --bucket {Args1} --key {Args2} --upload-id {Args3} [Options]
参数名称描述
Args1表示要上传到的 S3 存储桶的名称。必填参数。
Args2表示要上传的对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示分段上传任务的唯一标识符 UploadId。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api abort-multipart-upload --bucket 20001-cbq2 --key my-object --upload-id 6083958e0b6a8c906c6b1f04fbecedd92d788be7

结果:

shell
无返回信息

不存在则返回错误:

An error occurred (NoSuchUpload) when calling the AbortMultipartUpload operation: 指定的多部分上载不存在。上载ID可能无效,或者上载可能已中止或完成。

列举已上传的段

指令:

shell
aws --endpoint-url {OSSUrl} s3api list-parts --bucket {Args1} --key {Args2} --upload-id {Args3} [Options]
参数名称描述
Args1表示要上传到的 S3 存储桶的名称。必填参数。
Args2表示要上传的对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示分段上传任务的唯一标识符 UploadId。必填参数。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api list-parts --bucket 20001-cbq2 --key my-object --upload-id 6083958e0b6a8c906c6b1f04fbecedd92d788be7

结果:

shell
{
    "Parts": [
        {
            "PartNumber": 1,
            "LastModified": "2023-12-09T02:57:28Z",
            "ETag": "\"8eb18b1937cedfbcabb82a47f55daa7e\"",
            "Size": 7141345
        }
    ],
    "ChecksumAlgorithm": null,
    "Initiator": null,
    "Owner": null,
    "StorageClass": "STANDARD"
}

列举桶中已初始化多段任务

指令:

shell
aws --endpoint-url {OSSUrl} s3api list-multipart-uploads --bucket {Args1} [Options]
参数名称描述
Args1表示要查询的 S3 存储桶的名称。必填参数。
Options可选参数,如:--prefix 对象键名前缀
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api list-multipart-uploads --bucket 20001-cbq2

结果:

shell
{
    "Uploads": [
        {
            "UploadId": "6083958e0b6a8c906c6b1f04fbecedd92d788be7",
            "Key": "my-object"
        }
    ]
}

可选参数:--prefix

指定要筛选对象的前缀

指令:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api list-multipart-uploads --bucket 20001-cbq --prefix 2config.ini

结果:

shell
{
    "Uploads": [
        {
            "UploadId": "1d74800588e583fcf2a2fc8f4b3120ebc364598d",
            "Key": "2config.ini"
        }
    ]
}

对象操作

删除对象

指令:

shell
aws --endpoint-url {OSSUrl} s3api delete-object --bucket {Args1} --key {Args2}
参数名称描述
Args1表示要删除对象的 S3 存储桶的名称。必填参数。
Args2表示要删除的对象在存储桶中的键名(路径和文件名)。必填参数。
Options可选参数,如:--version-id 对象版本号
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api delete-object --bucket 20001-cbq2 --key obj.txt

结果:

shell
无返回值

批量删除对象

指令:

shell
aws --endpoint-url {OSSUrl} s3api delete-objects --bucket {Args1} --delete {Args2} [Options]
参数名称描述
Args1表示要删除对象的 S3 存储桶的名称。必填参数。
Args2表示指定要删除的对象配置。必填参数。删除配置是一个 JSON 对象,包含以下属性:Objects:表示要删除的对象列表。该属性是一个数组,每个元素是一个对象,包含 Key 属性,表示要删除的对象键名(路径和文件名)。Quiet:表示是否静默删除。如果设置为 true,则不返回删除操作的结果;如果设置为 false 或不设置该属性,则返回每个删除操作的结果。
Options可选参数,如:--region 区域
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api delete-objects --bucket 20001-cbq2 --delete '{"Objects":[{"Key":"obj.txt"},{"Key":"obja.txt"}]}'

结果:

shell
{
    "Deleted": [
        {
            "Key": "obj.txt"
        },
        {
            "Key": "obja.txt"
        }
    ]
}

下载文件

指令:

shell
aws --endpoint-url {OSSUrl} s3api get-object --bucket {Args1} --key {Args2} {Args3} [Options]
参数名称描述
Args1表示要获取对象的 S3 存储桶的名称。必填参数。
Args2表示要获取的对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示将对象保存到本地的路径和文件名。必填参数。
Options可选参数,如:--version-id 对象版本号
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api get-object --bucket 20001-cbq2 --key my-object /home/user/myfile.txt

结果:

shell
{
    "AcceptRanges": "bytes",
    "LastModified": "Fri, 08 Dec 2023 07:17:35 GMT",
    "ContentLength": 7141345,
    "ETag": "\"217a6a8a26bf8636977d5e0a7f79615a-2\"",
    "ContentDisposition": "inline; filename=\"my-object\"",
    "ContentType": "httpd/unix-directory",
    "Metadata": {}
}

获取对象元数据

指令:

shell
aws --endpoint-url {OSSUrl} s3api head-object --bucket {Args1} --key {Args2} [Options]
参数名称描述
Args1表示要获取对象的 S3 存储桶的名称。必填参数。
Args2表示要获取的对象在存储桶中的键名(路径和文件名)。必填参数。
Options可选参数,如:--version-id 对象版本号
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url  fgws3-ocloud.ihep.ac.cn s3api head-object --bucket 20001-cbq2 --key my-object

结果:

shell
{
    "AcceptRanges": "bytes",
    "LastModified": "Fri, 08 Dec 2023 07:17:35 GMT",
    "ContentLength": 7141345,
    "ETag": "\"217a6a8a26bf8636977d5e0a7f79615a-2\"",
    "ContentDisposition": "inline; filename=\"my-object\"",
    "ContentType": "httpd/unix-directory",
    "Metadata": {}
}

上传对象

指令:

shell
aws s3api put-object --bucket {Args1} --key {Args2} --body {Args3} --endpoint-url {OSSUrl}
参数名称描述
Args1表示要上传对象的 S3 存储桶的名称。必填参数。
Args2表示要上传对象在存储桶中的键名(路径和文件名)。必填参数。
Args3表示要上传的本地文件的路径。可选参数,如果不指定,则需要在命令行中输入数据。
OSSUrl访问终端节点URL

例子:

shell
aws s3api put-object --bucket 20001-cbq2 --key obj.txt --body /home/obj.txt --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
{
    "ETag": "\"49278996e3edd75db3f4ca1c5e5135a8\""
}

复制对象

指令:

shell
aws s3api copy-object --bucket {Args1} --copy-source {Args2} --key {Args3} --endpoint-url {OSSUrl}
参数名称描述
Args1表示目标存储桶的名称。必填参数。
Args2--copy-source 源存储桶名称/源对象键名:表示源对象的存储桶名称和对象键名。必填参数。
Args3表示复制后对象在目标存储桶中的键名(路径和文件名)。可选参数,默认为源对象的键名。
OSSUrl访问终端节点URL

例子:

shell
aws s3api copy-object --bucket 20001-cbq2 --copy-source 20001-cbq2/S3test1.txt --key S3test13.txt --endpoint-url fgws3-ocloud.ihep.ac.cn

结果:

shell
{
    "CopyObjectResult": {
        "ETag": "c1b712b5927a315820b2fad439eb5f72",
        "LastModified": "2023-12-09T06:18:11.902696976Z"
    }
}

上传对象标签

指令:

shell
aws --endpoint-url {OSSUrl} s3api put-object-tagging --bucket {Args1} --key {Args2} --tagging {Args3}
参数名称描述
Args1表示存储桶的名称。必填参数。
Args2表示需要设置标签的对象的键名。必填参数。
Args3表示需要设置的标签。标签是以 key:value 的形式组织的键值对,多个标签之间使用空格分隔,例如:"--tagging 'Key1=Value1 Key2=Value2'"。必填参数。
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api put-object-tagging --bucket 20001-cbq2 --key my-object --tagging 'TagSet=[{Key=Department,Value=Finance}]'

结果:

shell
无返回信息

不存在则返回错误:

An error occurred (NoSuchKey) when calling the PutObjectTagging operation: 指定的密钥不存在。

获取对象标签

指令:

shell
aws --endpoint-url {OSSUrl} s3api get-object-tagging --bucket {Args1} --key {Args2}
参数名称描述
Args1表示存储桶的名称。必填参数。
Args2表示需要获取标签的对象的键名。必填参数。
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api get-object-tagging --bucket 20001-cbq2 --key my-object

结果:

shell
{
    "TagSet": [
        {
            "Key": "Department",
            "Value": "Finance"
        }
    ]
}

删除对象标签

指令:

shell
aws --endpoint-url {OSSUrl} s3api delete-object-tagging --bucket {Args1} --key {Args2}
参数名称描述
Args1表示存储桶的名称。必填参数。
Args2表示需要删除标签的对象的键名。必填参数。
OSSUrl访问终端节点URL

例子:

shell
aws --endpoint-url fgws3-ocloud.ihep.ac.cn s3api delete-object-tagging --bucket 20001-cbq2 --key my-object

结果:

shell
无返回信息

不存在则返回错误:

An error occurred (NoSuchKey) when calling the DeleteObjectTagging operation: 指定的密钥不存在。