awscli version 2学习笔记
本文最后更新于:2022年11月4日 下午
AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互。搜了一下感觉相关中文资料不太多?特别是 version 2
的几乎没找到。就看官方自己学了学。写一点awscli s3 version2
的学习笔记,一些命令的简单介绍。
参考资料:
- 官方文档AWS CLI Command Reference
- 官方文档AWS CLI Command Reference version 2
- GitHub 项目 aws-cli
- User Guide for Version 2 pdf
- AWS Command Line Interface中文用户指南
- 【推荐】AWS Command Line Interface 版本 2 的用户指南
安装 version 1
AWS CLI有三种安装方式。
pip
AWS CLI 在 Linux、Windows 和 macOS 上的主要分发方式是 pip,这是一个用于 Python 的程序包管理
器,可提供方便的方式来安装、升级和删除 Python 程序包及其相关组件。1
pip install awscli --upgrade --user
在虚拟环境中安装【推荐】
用root用户使用pip可能会出现问题,一般建议使用虚拟环境(*我个人喜欢用anaconda
或者miniconda
*)。- pip安装virtualenv
1
pip install --user virtualenv
- 创建虚拟环境并为其命名
1
virtualenv ~/cli-ve
- 激活新虚拟环境
Linux, macOS, or UnixWindows1
source ~/cli-ve/bin/activate
1
%USERPROFILE%\cli-ve\Scripts\activate
- 将 AWS CLI 安装到虚拟环境中
1
(cli-ve)~$ pip install --upgrade awscli
您可以使用 deactivate 命令退出虚拟环境。不管何时启动新会话,都必须重新激活环境。
- pip安装virtualenv
要升级到最新版本,请重新运行安装命令:
1 |
|
3. 捆绑安装程序
验证 AWS CLI 是否已正确安装。
1 |
|
卸载
pip 卸载,或者
1 |
|
安装version2
AWS CLI 版本 2 是 AWS CLI 的最新主版本,支持所有最新功能。版本 2 中引入的某些功能无法向后兼容版
本 1,您必须升级才能访问这些功能。AWS CLI 版本 2 仅可作为捆绑安装程序安装。虽然您可能会在软件包管理器中找到它,但这些软件包是不受支持的非官方软件包,并非由生产或管理AWS 我们建议您仅从本指南中记载的官方 AWS CLI 发行点安装
AWS。
脚本安装
Linux x86 (64-bit)
1 |
|
Linux ARM
1 |
|
验证 AWS CLI 是否已正确安装。
1 |
|
Docker官方镜像安装
官方 AWS CLI 版本 2 Docker
镜像托管在 amazon/aws-cli
存储库中的 DockerHub
上。首次使用 docker run
命令时,最新的 Docker
镜像将下载到您的电脑。docker run
命令的每次后续使用都会从本地副本运行。
1 |
|
command 替换成你需要的 aws-cli
命令
比如说,验证 AWS CLI 是否已正确安装。
1 |
|
--rm
– 指定在命令退出后清理容器。-it
– 指定要使用 打开伪TTY
。stdin这允许您在容器中运行AWS CLI 版本 2
时向其提供输入,例如,
通过使用 aws configure 和 aws help 命令。当选择是否省略-it
时,请考虑以下事项:
• 如果您正在运行脚本,则不需要-it
。
• 如果您的脚本遇到错误,则从Docker
调用中省略-it
也许能解决此问题。
• 如果您正在尝试通过管道发送输出,-it 可能会导致错误,从 Docker 调用中省略-it
也许能解决此问题。如果希望保留 -it 标志,但仍想通过管道发送输出,请禁用AWS CLI
默认使用的客户端分页程序 (p. 109),应该能解决此问题。
可以使用 -e 标志调用特定系统的环境变量。要使用环境变量,请按名称调用它。
1 |
|
您可以使用 -e 标志调用特定系统的环境变量。
1 |
|
用别名缩短 Docker 命令:
1 |
|
快速配置
aws configure
命令是设置 AWS CLI
安装的最快方法。
1 |
|
• 访问密钥 ID (p. 32)
• 秘密访问密钥 (p. 32)
• AWS 区域 (p. 33)
• 输出格式 (p. 33)
1 |
|
在 config 文件中命名配置文件时,请包括前缀词“profile”。
credentials 文件格式如下:
1 |
|
在 credentials 文件中创建条目时,请勿使用单词 profile
[default] 配置文件,以在没有显式引用配置文件时使用
可以通过在 aws configure (p. 36) 中使用 –profile 选项或手动通过向 config
和 credentials
文件中添加条目来配置其他配置文件。例如
1 |
|
就会往 config
文件中写入 [profile profile-name]
的配置文件,在 credentials
文件中写入 [profile-name]
的配置文件。
用别的命令的时候,只需要使用 --profile profile-name
指定配置文件名称就可以使用这个配置文件。
aws s3
Amazon S3 就是 Amazon Simple Storage Service (Amazon S3)。AWS CLI 提供两个命令来访问 Amazon S3:
• s3 – 用于简化常见任务(如创建、操作和删除对象及存储桶)的执行的高级命令。
• s3api – 提供对所有 Amazon S3 API 操作的直接访问,使您能够执行高级操作。
mb 创建存储桶
使用 s3 mb 命令创建存储桶。存储桶名称必须是全局 唯一的(在所有 Amazon S3 存储桶中都是唯一的)。存储桶名称可以包含小写字母、数字、连字符和点号。存储桶名称只能以字母或数字开头和结尾,连字符或点号后不能跟点号。
语法
1 |
|
示例
1 |
|
ls 列出存储桶和对象
要列出存储桶、文件夹或对象。
1 |
|
这个命令默认 endpoint
是 amazon
的,所以用Scaleway的时候要加上 --endpoint-url=https://s3.你的地区.scw.cloud
。
示例:
列出所有存储桶
1 |
|
命令列出一个存储桶中的所有对象和前缀。
1 |
|
命令列出一个存储桶中某文件夹中的所有对象(即 桶名
中按前缀 文件夹名/
筛选出的对象)
1 |
|
rb 删除存储桶
语法
1 |
|
以下示例删除 s3://bucket-name 存储桶。(如果你的桶不是aws的话,记得加上 endpoint
)
1 |
|
默认情况下,存储桶必须为空,此操作才能成功。要删除不为空的存储桶,您必须包含 --force
选项。如
果您使用的是受版本控制的存储桶,即其中包含以前删除“但仍保留”的对象,则此命令 不 允许您删除该存储
桶。您必须先删除所有内容。
rm 删除对象
1 |
|
将从 s3://bucket-name/example
删除 filename.txt
1 |
|
mv 移动对象
1 |
|
将所有对象从 s3://bucket-name/example 移动到 s3://my-bucket/。
1 |
|
将本地文件从当前工作目录移动到 Amazon S3 存储桶
1 |
|
cp 复制对象
将所有对象从 s3://bucket-name/example 复制到 s3://my-bucket/。
1 |
|
例使用 s3 cp 命令,将本地文件从当前工作目录复制到 Amazon S3 存储桶。
1 |
|
将文件从 Amazon S3 存储桶复制到当前工作目录,其中 ./ 指定当前的工作目录。
1 |
|
使用 echo 将文本“hello world”流式传输到 s3://bucket-name/filename.txt 文件。
1 |
|
将 s3://bucket-name/filename.txt 文件流式传输到 stdout,并将内容输出到控制台。
1 |
|
sync 同步对象
同步一个存储桶与一个目录中的内容,或者同步两个存储桶中的内容。通常,s3 sync
在源
和目标之间复制缺失或过时的文件或对象。不过,您还可以提供 --delete
选项来从目标中删除源中不存在
的文件或对象。
1 |
|
更新与目标位置中同名文件的大小或修改时间不同的任何文件。输出显示在同步期间执行的操作。(注意,子文件夹也会被同步)
1 |
|
1 |
|
[–options]选项
recursive
使用此选项时,系统针对所指定目录或前缀下的所有文件或对象执行该命令。
1 |
|
acl
sync
和 cp
为复制到 Amazon S3 的文件设置访问权限。--acl
选项接受 private
、public-read
和 public-read-write
值。
exclude include
使用 s3 cp
、s3 mv
、s3 sync
或 s3 rm
命令时,可以使用 --exclude
或 --include
选项筛选结
果。
--exclude
选项将规则设置为仅从命令中排除对象,并且系统将按照指定的顺序应用这些选项。
--include
选项将规则设置为仅包括为命令指定的对象,并且系统将按照指定的顺序应用这些选
项。
–grants
s3 cp
、s3 mv
和 s3 sync
命令包括一个 --grants
选项,可用来向指定的用户或组授予对对
象的权限。使用以下语法对权限列表设置 --grants
选项。将 Permission
、Grantee_Type
和Grantee_ID
替换为您自己的值。
语法
1 |
|
每个值都包含以下元素:
• 可可 – 指定授予的权限。可以设置为 read、readacl、writeacl 或 full。
• Grantee_Type – 指定如何标识被授权者。可以设置为 uri、emailaddress 或 id。
• Grantee_ID – 根据 Grantee_Type.指定被授权者。
• uri – 组 URI。有关更多信息,请参阅 谁是授权者?
• emailaddress – 账户的电子邮件地址。
• id – 账户的规范 ID。
awscli-plugin-endpoint 插件
Scaleway:
https://www.scaleway.com/en/docs/storage/object/api-cli/object-storage-aws-cli/
为了更方便地使用第三方的S3服务商,可以安装插件awscli-plugin-endpoint
。在使用aws
命令的时候就不需要再指定endpoint。
1 |
|
之后运行:
1 |
|
修改~/.aws/config
文件
1 |
|
s3api
AWS CLI 参考:
• aws s3api
• aws s3api put-bucket-acl
• aws s3api put-bucket-logging
• aws s3api
• aws s3api create-bucket
• aws s3api copy-object
• aws s3api delete-bucket
• aws s3api delete-object
• aws s3api head-bucket
• aws s3api list-objects
• aws s3api put-object