转载请注明出处:mac安装s3命令客户端
在 macOS 上安装 AWS Command Line Interface
Python 2 版本 2.6.5+ 或 Python 3 版本 3.3+
检查您的 Python 安装:
$ python --version
如果您的计算机上还没有安装 Python,或者您希望安装 Python 的其他版本,请按照在 Linux 上安装 AWS Command Line Interface中的过程执行操作。
使用捆绑安装程序,在命令行中执行以下步骤来安装 AWS CLI。
使用捆绑安装程序安装 AWS CLI
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
注意
如果没有 unzip,请使用 Linux 发行版的内置程序包管理器进行安装。
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
注意
默认情况下,安装脚本在系统默认版本的 Python 下运行。如果您已安装 Python 的可选版本并希望使用该版本安装 AWS CLI,请使用该版本按 Python 可执行文件的绝对路径运行安装脚本。例如:
$ sudo /usr/local/bin/python2.7 awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
安装程序在 /usr/local/aws 中安装 AWS CLI,并在 /usr/local/bin 目录中创建符号链接 aws。使用 -b 选项创建符号链接将免除在用户的 $PATH 变量中指定安装目录的需要。这应该能让所有用户通过在任何目录下键入 aws 来调用 AWS CLI。
要查看 -i 和 -b 选项的说明,请使用 -h 选项:
$ ./awscli-bundle/install -h
到此就安装完成了,测试语句可参考第三节常用语句。
您也可以直接使用 pip 安装 AWS CLI。如果您没有 pip,请按照主要安装主题中的说明执行操作。运行 pip --version 可查看您的 macOS 版本是否已包含 Python 和 pip。
$ pip --version
在 macOS 上安装 AWS CLI
从 Python.org 的下载页面下载并安装 Python 3.6。
使用 Python 打包权威机构提供的脚本安装 pip。
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py --user
$ pip3 install awscli --upgrade --user
$ aws --version
如果未找到可执行文件,则将它添加到命令行路径。
要升级到最新版本,请重新运行安装命令:
$ pip3 install awscli --upgrade --user
将 AWS CLI 可执行文件添加到命令行路径
在使用 pip 进行安装后,需要将 aws 可执行文件添加到操作系统的 PATH 环境变量中。可执行文件的位置取决于 Python 的安装位置。
例 AWS CLI 安装位置 - 带 Python 3.6 和 pip (用户模式) 的 macOS
~/Library/Python/3.6/bin
如果您不知道 Python 的安装位置,请运行 which python。
$ which python
/usr/local/bin/python
输出可能是符号链接的路径,而不是实际的可执行文件。运行 ls -al 以查看所指向的路径。
$ ls -al /usr/local/bin/python
~/Library/Python/3.6/bin/python3.6
pip 将可执行文件安装到包含 Python 可执行文件的同一文件夹。将此文件夹添加到您的 PATH 变量中。
修改您的 PATH 变量 (Linux, macOS, or Unix)
$ ls -a ~
export PATH=~/.local/bin:$PATH
在本示例中,此命令将路径 ~/.local/bin 添加到当前 PATH 变量中。
$ source ~/.bash_profile
在使用aws的cli命令之前需要先进行账号密码的配置,使用如下命令:
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
详情参考
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-chap-configure.html
高级别 aws s3 命令支持常用存储桶操作,如创建、删除和列出存储桶。
创建存储桶
使用 aws s3 mb 命令可以创建新存储桶。存储桶名称必须唯一,并且应符合 DNS 标准。存储桶名称可以包含小写字母、数字、连字符和点号。存储桶名称只能以字母或数字开头和结尾,连字符或点号后不能跟点号。
$ aws s3 mb s3://bucket-name
删除存储桶
要删除存储桶,请使用 aws s3 rb 命令。
$ aws s3 rb s3://bucket-name
默认情况下,存储桶必须为空,此操作才能成功。要删除非空存储桶,需要包含 --force 选项。
$ aws s3 rb s3://bucket-name --force
这将先删除存储桶中的所有对象和子文件夹,然后删除存储桶。
注意
如果您使用的是受版本控制的存储桶,即其中包含以前删除但仍保留的对象,此命令将不 允许您删除存储桶。
列出存储桶
要列出所有存储桶或其内容,请使用 aws s3 ls 命令。下面是一些常见使用情况示例。
下面的命令列出所有存储桶。
$ aws s3 ls
2013-07-11 17:08:50 my-bucket
2013-07-24 14:55:44 my-bucket2
下面的命令列出一个存储桶中的所有对象和文件夹(前缀)。
$ aws s3 ls s3://bucket-name
PRE path/
2013-09-04 19:05:48 3 MyFile1.txt
下面的命令列出 bucket-name/path 中的对象(即 bucket-name 中按前缀 path/ 筛选后的对象)。
$ aws s3 ls s3://bucket-name/path/
2013-09-06 18:59:32 3 MyFile2.txt
高级别 aws s3 命令还可以方便地管理 Amazon S3 对象。这些对象命令包括 aws s3 cp、aws s3 ls、aws s3 mv、aws s3 rm 和 sync。cp、ls、mv 和 rm 命令的用法与它们在 Unix 中的对应命令相同,使您可以跨本地目录和 Amazon S3 存储桶无缝工作。sync 命令同步一个存储桶与一个目录或两个存储桶中的内容。
注意
如果对象很大,所有涉及向 Amazon S3 存储桶(aws s3 cp、aws s3 mv 和 aws s3 sync)上传对象的高级别命令都会自动执行分段上传。
使用这些命令时,无法恢复失败的上传。如果分段上传由于超时而失败,或者通过按 CTRL+C 手动取消,AWS CLI 将会清除创建的所有文件并中止上传。此过程可能耗时数分钟。
如果进程被 kill 命令中断或者由于系统故障而中断,则正在进行的分段上传将保留在 Amazon S3 中,必须在 AWS 管理控制台 中手动清除,或者使用 s3api abort-multipart-upload 命令来清除。
cp、mv 和 sync 命令包括一个 --grants 选项,可用来向指定用户或组授予对对象的权限。您可以使用以下语法对权限列表设置 --grants 选项。
--grants Permission=Grantee_Type=Grantee_ID
[Permission=Grantee_Type=Grantee_ID ...]
每个值都包含以下元素:
Permission – 指定授予的权限,可以设置为 read、readacl、writeacl 或 full。
Grantee_Type – 指定被授权者的标识方法,可以设置为 uri、emailaddress 或 id。
Grantee_ID – 根据 Grantee_Type 指定被授权者。
uri – 组 URI。有关更多信息,请参阅谁是被授权者?
emailaddress – 账户的电子邮件地址。
id – 账户的规范 ID。
有关 Amazon S3 访问控制的更多信息,请参阅访问控制。
下面的示例将一个对象复制到一个存储桶中。它授予所有人对对象的 read 权限,向 [email protected] 的关联账户授予 full 权限(read、readacl 和 writeacl)。
$ aws s3 cp file.txt s3://my-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers [email protected]
要为上传到 Amazon S3 的对象指定非默认存储类(REDUCED_REDUNDANCY 或 STANDARD_IA),请使用 --storage-class 选项:
$ aws s3 cp file.txt s3://my-bucket/ --storage-class REDUCED_REDUNDANCY
sync 命令的形式如下。可能的源-目标组合有:
本地文件系统到 Amazon S3
Amazon S3 到本地文件系统
Amazon S3 到 Amazon S3
$ aws s3 sync
下面的示例将 my-bucket 中名为 path 的 Amazon S3 文件夹中的内容与当前工作目录同步。s3 sync 将更新与目标中的同名文件的大小或修改时间不同的任何文件。输出显示在同步期间执行的特定操作。请注意,此操作将子目录 MySubdirectory 及其内容与 s3://my-bucket/path/MySubdirectory 递归同步。
$ aws s3 sync . s3://my-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://my-bucket/path/MySubdirectory/MyFile3.txt
upload: MyFile2.txt to s3://my-bucket/path/MyFile2.txt
upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt
通常,sync 仅在源和目标之间复制缺失或过时的文件或对象。不过,您可以提供 --delete 选项来从目标中删除源中不存在的文件或对象。
下面的示例对上一示例进行了扩展,显示了其工作方式。
// Delete local file
$ rm ./MyFile1.txt
// Attempt sync without --delete option - nothing happens
$ aws s3 sync . s3://my-bucket/path
// Sync with deletion - object is deleted from bucket
$ aws s3 sync . s3://my-bucket/path --delete
delete: s3://my-bucket/path/MyFile1.txt
// Delete object from bucket
$ aws s3 rm s3://my-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://my-bucket/path/MySubdirectory/MyFile3.txt
// Sync with deletion - local file is deleted
$ aws s3 sync s3://my-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt
// Sync with Infrequent Access storage class
$ aws s3 sync . s3://my-bucket/path --storage-class STANDARD_IA
使用 --exclude 和 --include 选项可以指定规则来筛选要在同步操作期间复制的文件或对象。默认情况下,指定目录中的所有项都包含在同步中。因此,仅当指定 --exclude 选项的例外情况(例如,–include 实际上意味着“不排除”)时才需要使用 --include。这些选项按指定顺序应用,如下例所示。
Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''
$ aws s3 sync . s3://my-bucket/path --exclude '*.txt'
upload: MyFile2.rtf to s3://my-bucket/path/MyFile2.rtf
'''
$ aws s3 sync . s3://my-bucket/path --exclude '*.txt' --include 'MyFile*.txt'
upload: MyFile1.txt to s3://my-bucket/path/MyFile1.txt
upload: MyFile88.txt to s3://my-bucket/path/MyFile88.txt
upload: MyFile2.rtf to s3://my-bucket/path/MyFile2.rtf
'''
$ aws s3 sync . s3://my-bucket/path --exclude '*.txt' --include 'MyFile*.txt' --exclude 'MyFile?.txt'
upload: MyFile2.rtf to s3://my-bucket/path/MyFile2.rtf
upload: MyFile88.txt to s3://my-bucket/path/MyFile88.txt
–exclude 和 --include 选项也可以与 --delete 选项一起使用来筛选要在同步操作期间删除的文件或对象。在这种情况下,参数字符串必须指定要在目标目录或存储桶上下文中包含或排除在删除操作中的文件。下面是一个示例。
Assume local directory and s3://my-bucket/path currently in sync and each contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''
// Delete local .txt files
$ rm *.txt
// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.
$ aws s3 sync . s3://my-bucket/path --delete --exclude 'my-bucket/path/MyFile?.txt'
delete: s3://my-bucket/path/MyFile88.txt
'''
// Delete MyFile2.rtf
$ aws s3 rm s3://my-bucket/path/MyFile2.rtf
// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$ aws s3 sync s3://my-bucket/path . --delete --exclude './MyFile2.rtf'
download: s3://my-bucket/path/MyFile1.txt to MyFile1.txt
'''
// Sync with delete, local copy of MyFile2.rtf is deleted
$ aws s3 sync s3://my-bucket/path . --delete
delete: MyFile2.rtf
sync 命令还可以接受 --acl 选项,使用该选项可以设置对复制到 Amazon S3 中的文件的访问权限。该选项接受 private、public-read 和 public-read-write 值。
$ aws s3 sync . s3://my-bucket/path --acl public-read
如上文所述,s3 命令集包括 cp、mv、ls 和 rm,它们的用法与它们在 Unix 中的对应命令相同。下面是一些示例。
// Copy MyFile.txt in current directory to s3://my-bucket/path
$ aws s3 cp MyFile.txt s3://my-bucket/path/
// Move all .jpg files in s3://my-bucket/path to ./MyDirectory
$ aws s3 mv s3://my-bucket/path ./MyDirectory --exclude '*' --include '*.jpg' --recursive
// List the contents of my-bucket
$ aws s3 ls s3://my-bucket
// List the contents of path in my-bucket
$ aws s3 ls s3://my-bucket/path/
// Delete s3://my-bucket/path/MyFile.txt
$ aws s3 rm s3://my-bucket/path/MyFile.txt
// Delete s3://my-bucket/path and all of its contents
$ aws s3 rm s3://my-bucket/path --recursive
当 --recursive 选项与 cp、mv 或 rm 一起用于目录/文件夹时,命令会遍历目录树,包括所有子目录。与 sync 命令相同,这些命令也接受 --exclude、–include 和 --acl 选项。
参考链接:
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/cli-install-macos.html
https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/using-s3-commands.html
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html