AWS CLI 安装:从入门到精通的完整教程
AWS CLI(Amazon Web Services Command Line Interface)是使用 AWS 服务的一个强大而灵活的工具。它允许您通过命令行控制台与 AWS 服务进行交互,自动化您的任务,并轻松地管理您的基础设施。无论您是开发人员、系统管理员,还是 DevOps 工程师,掌握 AWS CLI 都是一项非常有价值的技能。
本教程将为您提供一个全面的指南,从安装 AWS CLI 到掌握其高级功能,帮助您从入门到精通。我们将涵盖以下主题:
1. AWS CLI 的重要性
2. 前提条件
3. 安装 AWS CLI
* 在 Linux 上安装 AWS CLI
* 在 macOS 上安装 AWS CLI
* 在 Windows 上安装 AWS CLI
* 使用 Docker 安装 AWS CLI
4. 配置 AWS CLI
* 使用 aws configure
命令
* 设置凭证文件
* 设置环境变量
5. 验证安装和配置
6. AWS CLI 常用命令
* S3(Simple Storage Service)
* EC2(Elastic Compute Cloud)
* IAM(Identity and Access Management)
* CloudFormation
* Lambda
7. AWS CLI 高级功能
* 使用 JQ 进行 JSON 数据处理
* 使用管道和重定向
* 编写脚本自动化任务
* 使用 AWS CLI 配置文件
* 自定义 AWS CLI 输出格式
8. 故障排除
9. 最佳实践
10. 资源推荐
让我们开始吧!
1. AWS CLI 的重要性
AWS CLI 的重要性体现在以下几个方面:
- 自动化: 它可以自动化许多 AWS 管理任务,例如创建 EC2 实例、上传文件到 S3 存储桶、管理 IAM 用户等等。这节省了大量的时间和精力,并减少了手动操作的错误。
- 脚本化: 您可以编写脚本来执行复杂的任务序列。这对于自动化部署、基础设施配置和监控等任务至关重要。
- 可重复性: 通过脚本和配置文件,您可以确保您的 AWS 环境的一致性。
- 速度: 与手动操作相比,通过命令行执行操作通常更快。
- 灵活性: AWS CLI 提供了广泛的命令和选项,可以满足各种需求。
- 集成: 它可以与其他命令行工具和脚本语言集成,例如 Bash、Python 和 PowerShell。
- 版本控制: 您可以将您的 AWS CLI 脚本和配置文件存储在版本控制系统中,例如 Git,以便进行跟踪和协作。
- 无头操作: 对于没有图形界面的服务器和自动化系统,AWS CLI 是管理 AWS 资源的理想选择。
2. 前提条件
在安装 AWS CLI 之前,您需要确保满足以下前提条件:
- AWS 账户: 您需要一个有效的 AWS 账户。
- IAM 用户: 创建一个具有适当权限的 IAM 用户。强烈建议不要使用 root 用户凭证,因为这可能会带来安全风险。 您需要为该 IAM 用户分配适当的权限,以便其可以访问您需要使用的 AWS 服务。 例如,如果您需要管理 S3 存储桶,则需要为 IAM 用户分配 S3 相关的权限。
- Python (建议): 虽然不是强制性的,但安装 Python 通常是推荐的,因为它的一些功能和插件依赖于 Python。
- 权限: 确保您有安装软件所需的管理员权限。
3. 安装 AWS CLI
AWS CLI 可以安装在各种操作系统上,包括 Linux、macOS 和 Windows。
a) 在 Linux 上安装 AWS CLI
有多种方法可以在 Linux 上安装 AWS CLI。最常见的方法是使用包管理器,例如 apt
(Debian/Ubuntu)或 yum
(CentOS/RHEL)。
-
使用 apt (Debian/Ubuntu):
bash
sudo apt update
sudo apt install awscli -
使用 yum (CentOS/RHEL):
bash
sudo yum install awscli -
使用 pip (Python Package Installer):
bash
pip install awscli --upgrade --user
这种方法需要确保Python和pip已经安装,并且将pip的安装目录添加到PATH环境变量中。 可以使用which python3
和which pip3
来确认路径,并修改~/.bashrc
或~/.zshrc
文件,添加或修改PATH环境变量,例如:
bash
export PATH=$PATH:~/.local/bin
然后执行source ~/.bashrc
或source ~/.zshrc
使环境变量生效。
b) 在 macOS 上安装 AWS CLI
在 macOS 上,您可以使用 Homebrew 包管理器或直接使用 pip 安装 AWS CLI。
-
使用 Homebrew:
bash
brew install awscli -
使用 pip:
bash
pip install awscli --upgrade --user同样需要注意PATH环境变量的问题。
c) 在 Windows 上安装 AWS CLI
在 Windows 上,最常用的方法是使用 MSI 安装程序。
- 下载 MSI 安装程序: 从 AWS 官方网站下载适用于 Windows 的 AWS CLI MSI 安装程序。
- 运行安装程序: 双击下载的 MSI 文件,然后按照屏幕上的说明进行操作。
- 配置环境变量: 安装完成后,您需要将 AWS CLI 添加到您的 PATH 环境变量中。默认情况下,AWS CLI 安装在
C:\Program Files\Amazon\AWSCLIV2
目录中。- 搜索 “环境变量”,打开 “编辑系统环境变量” 窗口。
- 点击 “环境变量” 按钮。
- 在 “系统变量” 部分,找到名为 “Path” 的变量,然后点击 “编辑”。
- 点击 “新建”,然后添加 AWS CLI 的安装目录(例如:
C:\Program Files\Amazon\AWSCLIV2
)。 - 点击 “确定” 关闭所有窗口。
d) 使用 Docker 安装 AWS CLI
使用 Docker 可以避免在您的本地环境中安装 AWS CLI,并且可以轻松地管理不同的 AWS CLI 版本。
- 安装 Docker: 如果您尚未安装 Docker,请从 Docker 官方网站下载并安装 Docker Desktop。
-
运行 AWS CLI Docker 容器:
bash
docker run --rm -it amazon/aws-cli --version要使用 Docker 容器运行 AWS CLI 命令,您需要将您的 AWS 凭证传递给容器。您可以使用环境变量或挂载 AWS 凭证文件来实现这一点。
* 通过环境变量:
bash
docker run --rm -it \
-e AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY \
-e AWS_DEFAULT_REGION=YOUR_REGION \
amazon/aws-cli s3 ls- 通过挂载凭证文件:
bash
docker run --rm -it \
-v ~/.aws:/root/.aws \
amazon/aws-cli s3 ls
- 通过挂载凭证文件:
4. 配置 AWS CLI
安装 AWS CLI 后,您需要配置它才能使用您的 AWS 账户。
a) 使用 aws configure
命令
aws configure
命令是最常用的配置 AWS CLI 的方法。
- 打开终端或命令提示符。
-
运行
aws configure
命令:bash
aws configure -
输入您的 AWS 访问密钥 ID 和秘密访问密钥:
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: YOUR_REGION (例如:us-east-1)
Default output format [None]: json (或者 text, table)- AWS Access Key ID: 您的 IAM 用户的访问密钥 ID。
- AWS Secret Access Key: 您的 IAM 用户的秘密访问密钥。
- Default region name: 您要使用的 AWS 区域(例如:us-east-1、us-west-2、eu-central-1)。
- Default output format: AWS CLI 命令的默认输出格式(例如:json、text、table)。
b) 设置凭证文件
AWS CLI 将您的凭证存储在一个名为 credentials
的文件中,该文件位于您的用户目录下的 .aws
目录中。例如:
- Linux/macOS:
~/.aws/credentials
- Windows:
C:\Users\YOUR_USERNAME\.aws\credentials
您也可以手动编辑此文件来配置您的凭证。该文件的格式如下:
“`
[default]
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
[profile profile_name]
aws_access_key_id = YOUR_ACCESS_KEY_ID_FOR_PROFILE
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY_FOR_PROFILE
region = YOUR_REGION_FOR_PROFILE
“`
您可以使用不同的 profile 来管理不同账户或不同区域的配置。
c) 设置环境变量
您还可以使用环境变量来配置 AWS CLI。以下是一些常用的环境变量:
AWS_ACCESS_KEY_ID
: 您的 AWS 访问密钥 ID。AWS_SECRET_ACCESS_KEY
: 您的 AWS 秘密访问密钥。AWS_DEFAULT_REGION
: 您要使用的 AWS 区域。AWS_PROFILE
: 要使用的 AWS 配置文件名。
您可以使用以下命令设置环境变量:
-
Linux/macOS (Bash):
bash
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
export AWS_DEFAULT_REGION=YOUR_REGION -
Windows (PowerShell):
powershell
$env:AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
$env:AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
$env:AWS_DEFAULT_REGION="YOUR_REGION"
建议将这些环境变量添加到您的 shell 配置文件(例如 ~/.bashrc
或 ~/.bash_profile
)中,以便在每次打开终端时自动设置它们。
5. 验证安装和配置
安装和配置 AWS CLI 后,您可以使用以下命令来验证它们是否正常工作:
bash
aws --version
aws s3 ls
aws --version
命令会显示您安装的 AWS CLI 版本。
aws s3 ls
命令会列出您在 S3 中的存储桶。如果该命令成功执行,则表示您的 AWS CLI 已成功配置并可以访问您的 AWS 账户。 如果出现权限错误,请检查您的IAM用户权限配置。
6. AWS CLI 常用命令
AWS CLI 提供了大量的命令来管理各种 AWS 服务。 以下是一些常用的命令示例:
a) S3(Simple Storage Service)
aws s3 ls
: 列出 S3 存储桶。aws s3 cp <local_file> s3://<bucket_name>/<key>
: 将本地文件复制到 S3 存储桶。aws s3 mv s3://<bucket_name>/<source_key> s3://<bucket_name>/<destination_key>
: 在 S3 存储桶中移动文件。aws s3 rm s3://<bucket_name>/<key>
: 从 S3 存储桶中删除文件。aws s3 sync <local_directory> s3://<bucket_name>
: 将本地目录与 S3 存储桶同步。aws s3 presign s3://<bucket_name>/<key> --expires-in <seconds>
: 生成一个预签名 URL,允许在指定时间内访问 S3 对象,即使对象是私有的。
b) EC2(Elastic Compute Cloud)
aws ec2 run-instances --image-id <ami_id> --instance-type <instance_type> --key-name <key_name> --security-group-ids <security_group_id>
: 启动 EC2 实例。aws ec2 describe-instances
: 描述 EC2 实例。aws ec2 start-instances --instance-ids <instance_id>
: 启动 EC2 实例。aws ec2 stop-instances --instance-ids <instance_id>
: 停止 EC2 实例。aws ec2 terminate-instances --instance-ids <instance_id>
: 终止 EC2 实例。aws ec2 create-security-group --group-name <group_name> --description <description>
: 创建安全组。
c) IAM(Identity and Access Management)
aws iam create-user --user-name <user_name>
: 创建 IAM 用户。aws iam create-access-key --user-name <user_name>
: 为 IAM 用户创建访问密钥。aws iam list-users
: 列出 IAM 用户。aws iam create-policy --policy-name <policy_name> --policy-document file://<policy_document_path>
: 创建 IAM 策略。aws iam attach-user-policy --user-name <user_name> --policy-arn <policy_arn>
: 将策略附加到 IAM 用户。
d) CloudFormation
aws cloudformation create-stack --stack-name <stack_name> --template-body file://<template_file_path>
: 创建 CloudFormation 堆栈。aws cloudformation update-stack --stack-name <stack_name> --template-body file://<template_file_path>
: 更新 CloudFormation 堆栈。aws cloudformation describe-stacks --stack-name <stack_name>
: 描述 CloudFormation 堆栈。aws cloudformation delete-stack --stack-name <stack_name>
: 删除 CloudFormation 堆栈。
e) Lambda
aws lambda create-function --function-name <function_name> --runtime <runtime> --role <role_arn> --handler <handler> --zip-file fileb://<zip_file_path>
: 创建 Lambda 函数。aws lambda update-function-code --function-name <function_name> --zip-file fileb://<zip_file_path>
: 更新 Lambda 函数代码。aws lambda invoke --function-name <function_name> --payload file://<payload_file_path> <output_file_path>
: 调用 Lambda 函数。aws lambda delete-function --function-name <function_name>
: 删除 Lambda 函数。
7. AWS CLI 高级功能
除了基本命令之外,AWS CLI 还提供了许多高级功能,可以帮助您更有效地管理您的 AWS 环境。
a) 使用 JQ 进行 JSON 数据处理
AWS CLI 命令通常以 JSON 格式返回数据。 JQ 是一个强大的命令行 JSON 处理器,可以帮助您从 JSON 数据中提取所需的信息。
例如,要从 aws ec2 describe-instances
命令的输出中提取所有实例的 InstanceId,您可以使用以下命令:
bash
aws ec2 describe-instances --output json | jq '.Reservations[].Instances[].InstanceId'
b) 使用管道和重定向
您可以使用管道 (|
) 和重定向 (>
和 <
) 将 AWS CLI 命令的输出传递给其他命令或文件。
例如,要将 aws s3 ls
命令的输出保存到文件中,您可以使用以下命令:
bash
aws s3 ls > s3_buckets.txt
c) 编写脚本自动化任务
您可以编写脚本(例如 Bash 脚本或 Python 脚本)来自动化复杂的 AWS 任务。
例如,以下 Bash 脚本可以创建一个 S3 存储桶,然后将一个文件上传到该存储桶:
“`bash
!/bin/bash
BUCKET_NAME=”my-unique-bucket-name”
FILE_TO_UPLOAD=”my_file.txt”
aws s3 mb s3://${BUCKET_NAME}
aws s3 cp ${FILE_TO_UPLOAD} s3://${BUCKET_NAME}
“`
d) 使用 AWS CLI 配置文件
您可以使用 AWS CLI 配置文件来管理不同的 AWS 账户和区域。 例如,您可以创建一个名为 prod
的配置文件,用于管理您的生产环境,并创建一个名为 dev
的配置文件,用于管理您的开发环境。
要在使用配置文件时指定 profile, 使用--profile
参数:
bash
aws s3 ls --profile prod
e) 自定义 AWS CLI 输出格式
您可以使用 --output
选项来控制 AWS CLI 命令的输出格式。 支持的输出格式包括 json
、text
和 table
。
8. 故障排除
在使用 AWS CLI 时,您可能会遇到一些问题。以下是一些常见的故障排除步骤:
- 检查您的凭证: 确保您的 AWS 访问密钥 ID 和秘密访问密钥是正确的,并且您具有访问您尝试使用的 AWS 资源的权限。
- 检查您的区域: 确保您选择了正确的 AWS 区域。
- 检查您的网络连接: 确保您可以连接到 AWS 服务。
- 查看 AWS CLI 日志: AWS CLI 日志文件可以帮助您诊断问题。 默认情况下,日志文件位于
~/.aws/logs
目录中。 - 更新 AWS CLI: 确保您使用的是最新版本的 AWS CLI。
- 查阅 AWS 文档: AWS 官方文档提供了详细的 AWS CLI 信息和故障排除指南。
9. 最佳实践
以下是一些使用 AWS CLI 的最佳实践:
- 使用 IAM 角色: 尽可能使用 IAM 角色来授予 AWS 资源访问权限,而不是直接使用 IAM 用户凭证。
- 使用最小权限原则: 只授予 IAM 用户和角色所需的最小权限。
- 启用 MFA: 为您的 IAM 用户启用多因素身份验证(MFA),以提高安全性。
- 定期轮换您的访问密钥: 定期轮换您的 IAM 用户访问密钥,以降低风险。
- 监控您的 AWS 账户: 监控您的 AWS 账户,以检测异常活动。
- 使用版本控制: 将您的 AWS CLI 脚本和配置文件存储在版本控制系统中,以便进行跟踪和协作。
- 使用配置文件: 使用 AWS CLI 配置文件来管理不同的 AWS 账户和区域。
10. 资源推荐
以下是一些有用的 AWS CLI 资源:
- AWS CLI 官方文档: https://docs.aws.amazon.com/cli/latest/userguide/index.html
- AWS CLI GitHub 仓库: https://github.com/aws/aws-cli
- AWS CLI 示例: https://aws.amazon.com/cli/
- JQ 官方文档: https://stedolan.github.io/jq/
通过本教程,您应该能够安装、配置和有效地使用 AWS CLI 来管理您的 AWS 环境。 掌握 AWS CLI 可以帮助您提高工作效率,自动化任务,并更好地控制您的 AWS 资源。 不断实践和探索 AWS CLI 的各种功能,您将会成为一个 AWS CLI 大师!