日常资源管理必备的 10 个 AWS CLI 命令

利用这份必备的 AWS CLI 命令速查表,充分发挥 AWS 的全部潜力。本指南涵盖了跨 S3 存储、EC2 计算实例和 IAM 用户管理进行日常资源管理的必备命令。学习高效地列出、复制、同步、启动、停止、终止和管理用户权限。通过实际示例和最佳实践,提高您的工作效率,自动化任务,并简化您的 AWS 操作。非常适合希望掌握 AWS CLI 的开发人员、运维工程师和云管理员。

30 浏览量

10个日常资源管理必备的 AWS CLI 命令

简介

在瞬息万变的云计算领域,Amazon Web Services (AWS) 作为领先平台脱颖而出,提供种类繁多的服务。虽然 AWS 管理控制台提供了用户友好的图形界面,但 AWS 命令行界面 (CLI) 为资源管理提供了无与伦比的强大功能和灵活性。CLI 是一个开源工具,使您能够使用终端中的命令与 AWS 服务进行交互,因此对于自动化、脚本编写和高效的日常运维任务来说是不可或缺的。

掌握 AWS CLI 可以显著提高您的生产力,让您能够快速检查、创建、修改和删除您的 AWS 账户中的资源。本文是一份重要的备忘单,重点介绍了每位 AWS 用户在日常资源管理中都应该知道的 10 个基本 AWS CLI 命令,特别侧重于 Amazon S3(存储)、Amazon EC2(计算)和 AWS IAM(身份与访问管理)。

无论您是开发人员、运维工程师还是云管理员,这些命令都将为您提供更有效地管理 AWS 环境、更快地排查问题以及自动化重复任务的工具。让我们深入了解这些将加速您日常工作流程的命令。

先决条件

在开始之前,请确保您的系统上已安装并配置了 AWS CLI。如果尚未安装,请按照 AWS 官方文档进行安装并配置您的凭证(访问密钥 ID、秘密访问密钥和默认区域)。

# 检查 AWS CLI 版本
aws --version

# 配置 AWS CLI (如果尚未完成)
aws configure

Amazon S3 (Simple Storage Service) 的基本 AWS CLI 命令

Amazon S3 是一种高度可扩展、持久且可用的对象存储服务。这些命令对于管理您的存储桶 (buckets) 和对象至关重要。

1. aws s3 ls - 列出 S3 存储桶和对象

此命令允许您列出 S3 存储桶或特定存储桶中的对象。它通常是了解您的存储环境的第一步。

目的: 查看 S3 存储桶或存储桶中的内容。

示例:

# 列出您账户中的所有 S3 存储桶
aws s3 ls

# 列出特定存储桶中的对象
aws s3 ls s3://your-bucket-name/

# 递归列出对象,并显示人类可读的大小和日期
aws s3 ls s3://your-bucket-name/ --recursive --human-readable --summarize

提示:
* 使用 --recursive 来列出所有对象和子文件夹。--summarize 提供总计数和大小。
* 您还可以指定存储桶中的路径:aws s3 ls s3://your-bucket-name/prefix/

2. aws s3 cp - 在 S3 之间和与 S3 之间复制文件

cp 命令是用于在您的本地文件系统和 S3 之间,甚至在 S3 存储桶之间传输文件的基础命令。

目的: 将本地文件复制到 S3,将 S3 对象复制到本地,或在存储桶之间复制 S3 对象。

示例:

# 将本地文件复制到 S3 存储桶
aws s3 cp local-file.txt s3://your-bucket-name/folder/remote-file.txt

# 将 S3 中的对象复制到本地计算机
aws s3 cp s3://your-bucket-name/folder/remote-file.txt local-copy.txt

# 将对象从一个 S3 存储桶复制到另一个 S3 存储桶
aws s3 cp s3://source-bucket/file.txt s3://destination-bucket/new-file.txt

# 递归地将本地目录复制到 S3
aws s3 cp --recursive local-folder/ s3://your-bucket-name/remote-folder/

提示:
* --recursive 对于复制整个目录至关重要。
* 在递归复制过程中,使用 --exclude--include 来筛选文件。

3. aws s3 sync - 将本地目录与 S3 同步

sync 是一个功能强大的命令,用于将目录内容与 S3 前缀同步,反之亦然。它只复制新建或修改过的文件,使其在备份和部署中非常高效。

目的: 高效地将本地目录与 S3 存储桶/前缀同步。

示例:

# 将本地目录与 S3 存储桶同步
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/

# 将 S3 存储桶与本地目录同步
aws s3 sync s3://your-bucket-name/remote-path/ local-directory/

# 试运行 (Dry run) 查看将要进行的更改,但不实际执行
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/ --dryrun

最佳实践: 尤其对于关键数据,始终首先使用 --dryrun 来预览更改,然后再执行 sync 操作。

4. aws s3 rm - 删除 S3 对象和存储桶

此命令用于从 S3 存储桶中删除对象或删除空存储桶。

目的: 从 S3 中删除对象或空存储桶。

示例:

# 从存储桶中删除单个对象
aws s3 rm s3://your-bucket-name/path/to/object.txt

# 递归删除文件夹(前缀)中的所有对象
aws s3 rm s3://your-bucket-name/folder/ --recursive

# 删除一个空存储桶
aws s3 rb s3://your-bucket-name/

# 强制删除存储桶及其所有内容(使用时务必极其小心!)
aws s3 rb s3://your-bucket-name/ --force

警告: aws s3 rb --force 命令是破坏性的且不可逆。使用时请务必极其小心,因为它将删除指定存储桶中的所有对象和版本。

Amazon EC2 (Elastic Compute Cloud) 的基本 AWS CLI 命令

EC2 在 AWS 云中提供了可扩展的计算能力。这些命令可帮助您管理您的虚拟服务器。

5. aws ec2 describe-instances - 获取 EC2 实例详情

这是您获取 EC2 实例信息的首选命令,包括它们的状态、公有/私有 IP、标签等。

目的: 检索一个或多个 EC2 实例的详细信息。

示例:

# 描述当前区域中的所有 EC2 实例
aws ec2 describe-instances

# 描述具有特定标签的实例 (例如:Environment=Production)
aws ec2 describe-instances \n    --filters "Name=tag:Environment,Values=Production"

# 按实例 ID 描述实例
aws ec2 describe-instances --instance-ids i-0abcdef1234567890

# 描述实例并使用 JMESPath 筛选特定信息 (例如:PublicIpAddress)
aws ec2 describe-instances \n    --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \n    --output table

提示:
* --filters 功能强大,可用于根据实例状态、标签、实例类型等缩小结果范围。
* --query 允许您提取特定的数据字段并重新格式化输出(例如,使用 JMESPath 表达式)。

6. aws ec2 start-instances - 启动已停止的 EC2 实例

使用此命令来启动一个或多个已停止的 EC2 实例。实例将保留其私有 IP 地址。

目的: 启动已停止 EC2 实例的启动过程。

示例:

# 启动单个 EC2 实例
aws ec2 start-instances --instance-ids i-0abcdef1234567890

# 启动多个 EC2 实例
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

7. aws ec2 stop-instances - 停止正在运行的 EC2 实例

此命令停止正在运行的 EC2 实例。实例停止期间,您无需为实例使用付费,只需为附加的 EBS 卷付费。

目的: 停止正在运行的 EC2 实例。

示例:

# 停止单个 EC2 实例
aws ec2 stop-instances --instance-ids i-0abcdef1234567890

# 停止多个 EC2 实例
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

# 强制停止实例(用于生产系统时请谨慎使用)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force

警告: 如果应用程序没有正常关闭,强制停止实例可能会导致数据丢失或文件系统损坏。

8. aws ec2 terminate-instances - 终止 EC2 实例

终止实例会永久删除它及其关联的 EBS 卷(除非这些卷配置为在终止时持久保留)。此操作不可逆。

目的: 永久删除 EC2 实例。

示例:

# 终止单个 EC2 实例
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

# 终止多个 EC2 实例
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

警告: 终止是一项永久且不可逆的操作。在终止实例之前,请确保您已对关键数据进行备份或快照。

IAM (Identity and Access Management) 的基本 AWS CLI 命令

IAM 允许您安全地控制对 AWS 服务和资源的访问。这些命令有助于管理用户及其权限。

9. aws iam list-users - 列出 IAM 用户

此命令提供 AWS 账户中所有 IAM 用户的列表,以及他们的 ARN、创建日期和用户 ID。

目的: 查看在您的 AWS 账户中配置的所有 IAM 用户。

示例:

# 列出所有 IAM 用户
aws iam list-users

# 列出用户并使用 JMESPath 提取特定字段
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table

最佳实践: 定期检查您的 IAM 用户列表,以确保只存在必要的用户,并删除旧的、未使用的账户。

10. aws iam list-attached-user-policies - 列出附加到 IAM 用户的策略

了解 IAM 用户拥有哪些权限对于安全和排查访问问题至关重要。此命令列出直接附加到特定用户的托管策略。

目的: 显示附加到 IAM 用户的托管策略。

示例:

# 列出附加到特定 IAM 用户的全部托管策略
aws iam list-attached-user-policies --user-name YourIAMUserName

# 列出附加到特定 IAM 用户的内联策略
aws iam list-user-policies --user-name YourIAMUserName

提示:
* 请记住,用户还可以从群组 (aws iam list-groups-for-user) 和角色继承权限,或者拥有内联策略 (aws iam list-user-policies)。
* 要获取特定策略的详细信息,请使用 aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess,然后使用 aws iam get-policy-version

结论

AWS CLI 对于管理 Amazon Web Services 上的资源的任何人来说,都是一个极其强大的工具。本指南中概述的十个命令——涵盖 S3、EC2 和 IAM——构成了日常运维任务的基础,使您能够高效而精确地列出、创建、修改和删除云资源。

通过将这些命令融入您的日常工作中,您可以简化工作流程、自动化重复任务,并更深入地了解您的 AWS 环境。请记住,AWS CLI 提供的功能远远超出这些基本命令;我们鼓励您探索 AWS 官方 CLI 文档,以进一步扩展您的工具包并发现更高级的功能。经常练习和探索将巩固您的专业知识,使您能够充分利用 AWS 的全部潜力。

从今天开始练习这些命令,让您的云管理生产力飙升吧!