Amazon S3安装与简单上手使用详解

2,415 阅读3分钟

学习永不停止,探索发现乐趣!Amazon 官网有对与Amazon S3的详细介绍,下面是我对于从官网学习后的整理与总结!

如果想要详细了解s3相关细节,下面是直接跳转到官网相对应的地方的链接:
点击: AWS CLI官网地址
点击: AES S3官网详细介绍
点击: AWS S3简单命令官网

1 使用Amazon S3 需要下载aws 客户端

操作Amazon S3的第一种方法有登录Amazon官网然后注册账号登录 可视化管理Amazon S3,但是这个方法是比较繁琐!

操作Amazon S3的第二种方法就是下载aws-shell 在本地,然后通过命令行进行连接Amazon S3。
点击: 官网linux、mac、linux环境安装
点击: mac aws-shell安装链接

没有那种方法是最好的,只有最适合自己的!如果是公司开发者推荐第二种方法,方便快捷!

2 AWS配置 连接到Amazon S3时需要的连接条件

连接需要id与key值,如果是自己使用Amazon S3学习者,需要注册亚马逊账号,...之后拥有id与key。

如果是在公司的开发者,公司的配置中心中会有当前程序的s3的id与账号与桶,自己输入相应的值就可完成登录!

$ aws configure
AWS Access Key ID [None]: **********
AWS Secret Access Key [None]: ************
Default region name [None]: us-east-2 
Default output format [None]: json  

Default region name :地区名字
Default output format: 格式 默认为json

AWS命令语法:

AWS S3命令用于操作桶及其对象!管理自己的数据!

AWS语法:

aws [options] <command> <subcommand> [parameters]

Amazon S3 术语:

  • 存储桶 – 顶级 Amazon S3 文件夹。
  • 前缀 – 存储桶中的 Amazon S3 文件夹。
  • 象 – 托管在 Amazon S3 存储桶中的任何项。 AWS CLI S3 常用命令参考:
  • aws s3 cp 复制对象
  • aws s3 mb 创建桶
  • aws s3 mv 移动对象或者桶
  • aws s3 ls 查看桶或者对象
  • aws s3 rb 删除桶
  • aws s3 rm 删除对象
  • aws s3 sync同步对象

本人实际开发中常使用命令:

因为我不是管理者,拥有权限与做的事有限,只使用了查看与上传、下载功能

  • aws s3 ls s3://buket-name/text/ 查看buket-name桶的text文件下的对象
  • aws s3 cp ./text.txt s3://buket-name/text/ 将本地文件上传到buket-name桶的text文件目录下
  • aws s3 cp s3://buket-name/text.txt ./ 将buket-name桶下的文件text.txt下载到本地当前目录下

Amazon S3常用命令

命令使用:

命令含义
aws s3 mb s3://bucket-name创建bucket-name桶
ws s3 ls s3://bucket-name列出bucket-name下的所有对象(目录或者文件)
aws s3 rm s3://bucket-name/example/filename.txt --recursives3://bucket-name/example删除filename.txt
aws s3 mv filename.txt s3://bucket-name本地文件从当前工作目录移动到 Amazon S3 存储桶
aws s3 cp filename.txt s3://bucket-name将本地文件从当前工作目录复制到 Amazon S3 存储桶
aws s3 sync . s3://my-bucket/path将本地当前目录及其内容同步到 s3://my-bucket/path/MySubdirectory 及其内容。

下面是命令的详细介绍:

创建储存桶

语法:

aws s3 mb <target> [--options]

示例:

aws s3 mb s3://bucket-name

注意:使用 s3 mb命令创建存储桶。存储桶名称必须是全局 唯一的(在所有 Amazon S3 存储桶中都是唯一的),并且应符合 DNS 标准。

存储桶名称可以包含小写字母、数字、连字符和点号。存储桶名称只能以字母或数字开头和结尾,连字符或点号后不能跟点号。

列出存储桶和对象

语法:

$ aws s3 ls <target> [--options]

示例:列出所有桶

$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2

示例:列出一个存储桶中的所有对象和前缀

$ aws s3 ls s3://bucket-name
                           PRE example/
2018-12-04 19:05:48          3 MyFile1.txt

示例:列出包含特定前缀将输出筛选到此前缀

$ aws s3 ls s3://bucket-name/example/
2018-12-06 18:59:32          3 MyFile1.txt

删除桶或者对象

语法:

$ aws s3 rm  <target> [--options]

示例:从 s3://bucket-name/example删除filename.txt

$ aws s3 rm s3://bucket-name/example/filename.txt --recursive

示例:使用 --recursive选项从 s3://bucket-name/example 删除所有对象。

$ aws s3 rm s3://bucket-name/example --recursive

移动对象

命令可从存储桶或本地目录中移动对象。

语法:

$ aws s3 mv <source> <target> [--options]

示例:将所有对象从 s3://bucket-name/example 移动到 s3://my-bucket/

$ aws s3 mv s3://bucket-name/example s3://my-bucket/

示例:使用 s3 mv 命令,将本地文件从当前工作目录移动到 Amazon S3 存储桶。

$ aws s3 mv filename.txt s3://bucket-name

示例:将文件从 Amazon S3 存储桶移动到当前工作目录,其中 ./ 指定当前的工作目录。

$ aws s3 mv s3://bucket-name/filename.txt ./

复制对象 cp

命令可从存储桶或本地目录复制对象。

语法 1:

$ aws s3 cp <source> <target> [--options]

您可以使用短划线参数,将文件流式传输到标准输入 (stdin) 或标准输出 (stdout)。

警告

如果您使用的是 PowerShell,则 Shell 可能会更改 CRLF 编码,或者将 CRLF 添加到管道输入或输出或重定向的输出中。

s3 cp 命令使用以下语法,将文件流从 stdin 上传到指定的存储桶。

语法:

$ aws s3 cp - <target> [--options]

s3 cp 命令使用以下语法下载 stdout 的 Amazon S3 文件流。

语法:

$ aws s3 cp <target> [--options] -

示例:将所有对象从 s3://bucket-name/example 复制到 s3://my-bucket/

$ aws s3 cp s3://bucket-name/example s3://my-bucket/

示例:使用 s3 cp 命令,将本地文件从当前工作目录复制到 Amazon S3 存储桶。

$ aws s3 cp filename.txt s3://bucket-name

示例:将文件从 Amazon S3 存储桶复制到当前工作目录,其中 ./ 指定当前的工作目录。

$ aws s3 cp s3://bucket-name/filename.txt ./

示例:使用 echo 将文本“hello world”流式传输到 s3://bucket-name/filename.txt 文件。

$ echo "hello world" | aws s3 cp - s3://bucket-name/filename.txt

示例:将 s3://bucket-name/filename.txt 文件流式传输到 stdout,并将内容输出到控制台。

$ aws s3 cp s3://bucket-name/filename.txt -
hello world

示例:将 s3://bucket-name/pre 的内容流式传输到 stdout,使用 bzip2 命令压缩文件,并将名为 key.bz2 的新压缩文件上传到 s3://bucket-name

$ aws s3 cp s3://bucket-name/pre - | bzip2 --best | aws s3 cp - s3://bucket-name/key.bz2

同步对象 sync

s3 sync 命令同步一个存储桶与一个目录中的内容,或者同步两个存储桶中的内容。通常,s3 sync 在源和目标之间复制缺失或过时的文件或对象。不过,您还可以提供 --delete选项来从目标中删除源中不存在的文件或对象。

语法:

$ aws s3 sync <source> <target> [--options]

示例:将存储桶 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

下面的示例对上一示例进行了扩展,显示了如何使用 --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

使用 --delete 选项时,--exclude 和 --include 选项可以筛选要在 s3 sync 操作过程中删除的文件或对象。在这种情况下,参数字符串必须指定要在目标目录或存储桶上下文中包含或排除在删除操作中的文件。下面是一个示例。

Assume local directory and s3://my-bucket/path currently in sync and each contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.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 "path/MyFile?.txt"
delete: s3://my-bucket/path/MyFile88.txt
'''

// 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

参考链接: AWS 官网