9 个 AWS S3 命令以及管理存储桶和数据的示例

管理和控制数据可能是一项复杂的挑战。以下这些 AWS S3 命令将助您快速高效地管理您的 AWS S3 存储桶和数据。

AWS S3 是亚马逊云服务(AWS)提供的对象存储服务。它是 AWS 中应用最广泛的存储服务,几乎能存储无限量的数据。它具有高可用性、持久性,并且易于与其他多个 AWS 服务集成。

AWS S3 可满足各种需求,例如移动/Web 应用程序存储、大数据存储、机器学习数据存储、托管静态网站等等。

如果您一直在项目中使用 S3,您应该知道,考虑到其庞大的存储容量,管理上百个存储桶以及这些存储桶中的 TB 级数据可能是一项繁琐的任务。 我们整理了一份 AWS S3 命令列表,并附有示例,这些命令将帮助您有效地管理您的 AWS S3 存储桶和数据。

AWS CLI 设置

成功下载并安装 AWS CLI 后,您需要配置 AWS 凭证才能访问您的 AWS 账户和服务。让我们快速了解如何配置 AWS CLI。

第一步是创建一个对 AWS 账户具有编程访问权限的用户。请记住在为 AWS CLI 创建用户时选中此复选框。

授予权限并创建用户。在您成功创建此用户后的最后一个屏幕上,复制此用户的访问密钥 ID 和秘密访问密钥。我们将使用这些凭证通过 AWS CLI 登录。

现在转到您选择的终端并运行以下命令。

aws configure

出现提示时输入访问密钥 ID 和秘密访问密钥。选择您偏好的 AWS 区域和命令输出格式。我个人更喜欢使用 JSON 格式。这并不重要,您可以随时更改这些值。

现在您可以在控制台中运行任何 AWS CLI 命令了。现在让我们来看看 AWS S3 命令。

cp

cp 命令主要用于将数据复制到 S3 存储桶或从 S3 存储桶复制数据。它可以用于将文件从本地复制到 S3、从 S3 复制到本地,以及在两个 S3 存储桶之间复制。您可以使用命令提供许多附加的参数。

例如,-dryrun 参数用于测试命令,-storage-class 参数用于指定数据在 S3 中的存储类别,其他参数可用于设置加密等等。 cp 命令 让您可以完全控制如何在 S3 中配置数据的安全性。

用法

aws s3 cp <SOURCE> <DESTINATION> [--options]

示例

将数据从本地复制到 S3

aws s3 cp file_name.txt s3://bucket_name/file_name_2.txt

将数据从 S3 复制到本地

aws s3 cp s3://bucket_name/file_name_2.txt file_name.txt

在 S3 存储桶之间复制数据

aws s3 cp s3://bucket_name/file_name.txt s3://bucket_name_2/file_name_2.txt

将数据从本地复制到 S3 – IA

aws s3 cp file_name.txt s3://bucket_name/file_name_2.txt --storage-class STANDARD_IA

将本地文件夹中的所有数据复制到 S3

aws s3 cp ./local_folder s3://bucket_name --recursive

ls

ls 命令 用于列出存储桶或存储桶的内容。因此,如果您只想查看关于您的存储桶或这些存储桶中数据的信息,您可以使用 ls 命令。

用法:

aws s3 ls NONE or <BUCKET_NAME> [--options]

示例

列出账户中的所有存储桶

aws s3 ls

  Output:
  2022-02-02 18:20:14 BUCKET_NAME_1
  2022-03-20 13:12:43 BUCKET_NAME_2
  2022-03-29 10:52:33 BUCKET_NAME_3

此命令列出您账户中的所有存储桶以及存储桶的创建日期。

列出存储桶中的所有顶级对象

aws s3 ls BUCKET_NAME_1 or s3://BUCKET_NAME_1

  Output:
                           PRE samplePrefix/
  2021-12-09 12:23:20       8754 file_1.png
  2021-12-09 12:23:21       1290 file_2.json
  2021-12-09 12:23:21       3088 file_3.html
  

此命令列出 S3 存储桶中的所有顶级对象。 请注意,带有前缀 samplePrefix/ 的对象在这里仅显示为顶级对象。

列出存储桶中的所有对象

aws s3 ls BUCKET_NAME_1 or s3://BUCKET_NAME_1 --recursive

  Output:
  2021-12-09 12:23:20       8754 file_1.png
  2021-12-09 12:23:21       1290 file_2.json
  2021-12-09 12:23:21       3088 file_3.html
  2021-12-09 12:23:20      16328 samplePrefix/file_1.txt
  2021-12-09 12:23:20      29325 samplePrefix/sampleSubPrefix/file_1.css

此命令列出 S3 存储桶中的所有对象。 请注意,此处也会显示带有前缀 samplePrefix/ 的对象以及所有子前缀。

mb

mb 命令 仅用于创建新的 S3 存储桶。 这是一个相对简单的命令,但要创建新存储桶,新存储桶的名称在所有 S3 存储桶中应该是唯一的。

用法

aws s3 mb <BUCKET_NAME>

示例

在特定区域创建新存储桶

aws s3 mb myUniqueBucketName --region eu-west-1

mv

mv 命令 仅用于将数据移入和移出 S3 存储桶。 与 cp 命令类似,mv 命令用于将数据从本地移动到 S3、从 S3 移动到本地,或在两个 S3 存储桶之间移动。

mvcp 命令之间的唯一区别在于,当使用 mv 命令时,文件会从源中删除。 AWS 将此文件移动到目标。 您可以使用该命令指定许多选项。

用法

aws s3 mv <SOURCE> <DESTINATION> [--options]

示例

将数据从本地移动到 S3

aws s3 mv file_name.txt s3://bucket_name/file_name_2.txt

将数据从 S3 移动到本地

aws s3 mv s3://bucket_name/file_name_2.txt file_name.txt

在 S3 存储桶之间移动数据

aws s3 mv s3://bucket_name/file_name.txt s3://bucket_name_2/file_name_2.txt

将数据从本地移动到 S3 – IA

aws s3 mv file_name.txt s3://bucket_name/file_name_2.txt --storage-class STANDARD_IA

将所有数据从 S3 中的前缀移动到本地文件夹。

aws s3 mv s3://bucket_name/somePrefix ./localFolder --recursive

presign

presign 命令为 S3 存储桶中的密钥生成预签名 URL。 您可以使用此命令生成一个 URL,其他人可以使用该 URL 来访问指定 S3 存储桶密钥中的文件。

用法

aws s3 presign <OBJECT_KEY> –expires-in <TIME_IN_SECONDS>

示例

为存储桶中的对象生成有效期为 1 小时的预签名 URL。

aws s3 presign s3://bucket_name/samplePrefix/file_name.png --expires-in 3600

  Output:
  https://s3.ap-south-1.amazonaws.com/bucket_name/samplePrefix/file_name.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA4MCZT73PAX7ZMVFW%2F20220314%2Fap-south-1%2Fs3%2Faws4_request&X-Amz-Date=20220314T054113Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f14608bbf3e1f9f8d215eb5b439b87e167b1055bcd7a45c13a33debd3db1be96

rb

rb 命令仅用于删除 S3 存储桶。

用法

aws rb <BUCKET_NAME>

示例

删除 S3 存储桶。

aws s3 mb myBucketName
  # 如果此存储桶中有任何数据,此命令将失败。

删除 S3 存储桶以及 S3 存储桶中的数据。

aws s3 mb myBucketName --force

rm

rm 命令仅用于删除 S3 存储桶中的对象。

用法

aws s3 rm <S3Uri_To_The_File>

示例

从 S3 存储桶中删除一个文件。

aws s3 rm s3://bucket_name/sample_prefix/file_name_2.txt

删除 S3 存储桶中具有特定前缀的所有文件。

aws s3 rm s3://bucket_name/sample_prefix --recursive

删除 S3 存储桶中的所有文件。

aws s3 rm s3://bucket_name --recursive

sync

cp 命令类似,sync 命令将文件从源复制并更新到目标。 了解 cpsync 命令之间的区别非常重要。 当您使用 cp 时,即使目标中已存在数据,它也会将数据从源复制到目标。

如果从源中删除文件,它也不会从目标中删除文件。 然而,sync 会在复制数据之前查看目标,并只复制新的和更新的文件。sync 命令 类似于在 Git 中提交和推送更改到远程分支。 sync 命令提供了许多选项来自定义命令。

用法

aws s3 sync <SOURCE> <DESTINATION> [--options]

示例

将本地文件夹同步到 S3

aws s3 sync ./local_folder s3://bucket_name

将 S3 数据同步到本地文件夹

aws s3 sync s3://bucket_name ./local_folder

在两个 S3 存储桶之间同步数据

aws s3 sync s3://bucket_name s3://bucket_name_2

在两个 S3 存储桶之间移动数据,但不包括所有 .txt 文件

aws s3 sync s3://bucket_name s3://bucket_name_2 --exclude "*.txt

website

您可以使用 S3 存储桶来托管静态网站。 website 命令用于为您的存储桶配置 S3 静态网站托管。

您需要指定索引文件和错误文件,S3 将为您提供一个 URL,您可以在其中查看您的网站。

用法

aws s3 website <S3_URI> [--options]

示例:

为 S3 存储桶配置静态托管,并指定索引文件和错误文件

aws s3 website s3://bucket_name --index-document index.html --error-document error.html

结论

我希望以上内容能帮助您了解一些常用的 AWS S3 命令来管理存储桶。 如果您有兴趣了解更多信息,可以查看 AWS 认证详细信息。