Windows 10下AWS CLI安装配置全攻略(含IAM用户创建与密钥管理)
最近在帮几个刚接触云服务的朋友搭建本地开发环境,发现不少人在Windows 10上配置AWS命令行工具时,总会卡在权限和密钥管理这一步。AWS CLI确实是管理云端资源的利器,但它的安装和初始配置,尤其是涉及IAM用户和访问密钥的部分,如果理解不到位,要么配置失败,要么会埋下安全隐患。这篇文章,我就结合自己多次在Windows平台部署的经验,从头到尾梳理一遍,不仅告诉你每一步怎么做,更会解释清楚背后的逻辑,让你真正掌握这套工具链。
1. 环境准备与AWS CLI安装
在Windows 10上开始使用AWS服务,第一步自然是把命令行工具请到你的电脑里。AWS CLI是一个用Python编写的工具,它提供了直接与AWS服务API交互的统一接口。对于开发者来说,这意味着你可以用脚本自动化几乎所有在AWS控制台上能完成的操作,从启动EC2实例到管理S3存储桶,效率提升不是一星半点。
目前,AWS官方为Windows用户提供了两种主要的安装方式:使用MSI安装包,或者通过Python的包管理工具pip安装。对于绝大多数用户,尤其是新手,我强烈推荐使用MSI安装包。它是最简单、最“傻瓜式”的方法,会自动处理路径配置和依赖问题,几乎不会出错。
安装步骤简述如下:
访问官方下载页面:打开浏览器,前往AWS命令行界面官方下载页。务必认准
aws.amazon.com/cli这个域名,避免从第三方渠道下载,确保安全。选择Windows安装包:在页面上找到针对Windows系统的MSI安装程序链接,通常会有
64-bit和32-bit两个版本。如果你的系统是64位的Windows 10(绝大多数都是),就选择64位版本下载。运行安装向导:双击下载好的
.msi文件,按照提示一步步进行。安装过程基本就是一路点击“Next”,你可以选择为所有用户安装还是仅为当前用户安装。验证安装:安装完成后,需要确认CLI是否已正确加入系统路径。打开
命令提示符(CMD)或者PowerShell,输入以下命令并回车:aws --version如果安装成功,你会看到类似下面的输出,其中包含了CLI版本、Python版本以及你的系统信息:
aws-cli/2.15.44 Python/3.11.8 Windows/10 exe/AMD64 prompt/off
注意:如果系统提示“aws 不是内部或外部命令”,说明安装路径可能没有被自动添加到系统环境变量
PATH中。这时你可以尝试重新启动终端,或者手动将AWS CLI的安装目录(通常是C:\Program Files\Amazon\AWSCLIV2\)添加到用户环境变量中。
看到版本信息,恭喜你,AWS CLI已经成功入驻你的Windows系统。但这仅仅是拿到了工具,要安全、有效地使用它,我们还需要获得进入AWS账户的“钥匙”和“权限”,这就是接下来要重点讲的IAM部分。
2. 理解IAM:用户、组与权限策略
在配置aws configure之前,我们必须先解决身份和权限的问题。AWS Identity and Access Management (IAM) 是AWS安全体系的基石。直接使用根账户(即注册AWS时用的邮箱和密码)来配置CLI是极其危险的做法。根账户拥有账户的完全控制权,一旦其访问密钥泄露,你的整个AWS账户将面临被清空的风险。因此,最佳实践永远是:为每一个需要访问AWS的人或程序,创建独立的IAM用户,并仅授予其完成任务所必需的最小权限。
这个过程主要涉及三个核心概念:
- IAM用户:代表一个具体的人或应用程序,是进行身份验证的实体。我们将为这个用户创建专属的访问密钥(Access Key),用于CLI的配置。
- IAM组:一个权限的集合。我们可以将具有相同权限需求的多个用户放入同一个组,然后通过给组附加策略来统一管理权限,这比给每个用户单独分配策略要高效得多。
- IAM策略:以JSON格式定义的文档,明确规定允许或拒绝哪些用户/组对哪些AWS资源执行哪些操作。策略是权限的载体。
为了清晰对比,我将这三个概念的核心作用整理如下:
| 概念 | 角色 | 主要作用 | 类比 |
|---|---|---|---|
| IAM用户 | 执行者 | 代表一个人或服务,拥有独立的登录凭证(密码或访问密钥)。 | 公司里的一个具体员工,有自己的工牌。 |
| IAM组 | 权限容器 | 将多个用户组织在一起,方便批量分配相同的权限集。 | 公司的“开发部”或“运维部”,部门成员享有相同的职权范围。 |
| IAM策略 | 权限规则 | 定义具体的操作(如s3:ListBucket)、资源(如某个S3桶)和生效条件。 | 公司的规章制度或岗位说明书,明确规定员工可以做什么、不能做什么。 |
理解了这些,我们的操作路径就清晰了:先创建一个定义了权限范围的组,然后创建一个用户并将其加入该组,最后为用户生成用于编程访问的密钥。接下来,我们就进入AWS控制台,一步步完成这些设置。
3. 实战:在AWS控制台创建IAM用户与密钥
现在,我们登录AWS管理控制台,开始实操。请全程在us-east-1(弗吉尼亚北部)或其他你常用的区域进行操作,IAM服务是全球性的,不受区域限制。
3.1 创建用户组并分配权限
首先,我们创建一个组,并赋予它一个基础的权限策略。对于刚开始学习和进行日常管理的用户,我建议从一个权限较高的策略开始,例如AdministratorAccess,以便能无障碍地体验所有服务。但在生产环境中,务必遵循最小权限原则。
- 在控制台顶部的服务搜索框中输入“IAM”并进入。
- 在左侧导航栏,点击“用户组”,然后点击蓝色的“创建组”按钮。
- 填写组名:输入一个具有描述性的名称,例如
CLI-Administrators。 - 附加权限策略:在权限策略列表的搜索框中,输入
AdministratorAccess。勾选搜索结果中出现的“AdministratorAccess”策略(这是一个AWS托管策略,提供了对账户的完全管理权限,等同于根用户权限,但仅限于该用户或组)。 - 点击“创建组”完成组的创建。
提示:对于更具体的场景,你可以搜索并附加更细粒度的策略,如
AmazonS3FullAccess(仅管理S3)、AmazonEC2FullAccess(仅管理EC2)等。将多个策略附加到一个组,其权限是叠加的。
3.2 创建IAM用户并加入组
组创建好后,我们来创建具体的用户。
- 在IAM左侧导航栏,点击“用户”,然后点击“创建用户”。
- 指定用户详细信息:
- 用户名称:输入一个名字,例如
cli-admin-user。 - 选择凭证类型:这里我们只勾选“访问密钥 - 编程访问”。因为我们是为CLI配置创建用户,不需要AWS控制台登录密码。
- 用户名称:输入一个名字,例如
- 点击“下一步:权限”。
- 设置权限:选择“将用户添加到组”。在列表中找到并勾选我们刚刚创建的
CLI-Administrators组。 - 继续点击“下一步”,直到“审核”页面,确认信息无误后,点击“创建用户”。
3.3 生成并安全保存访问密钥
这是最关键也最需要谨慎的一步。访问密钥一旦创建,其“秘密访问密钥”只在此刻显示一次,关闭页面后将无法再次查看。你必须立即妥善保存。
- 用户创建成功后,页面会直接显示成功消息,并包含一个“下载.csv文件”的选项。请务必立即点击下载。这个CSV文件包含了:
Access key IDSecret access key
- 将这个CSV文件保存到一个绝对安全的位置,例如使用密码管理器加密存储。切勿将此文件通过邮件发送、上传到公开的代码仓库或存储在未加密的共享磁盘中。
- 你也可以手动复制这两个密钥值,但同样要确保粘贴到安全的地方。
注意:如果错过了下载,或者密钥不慎泄露,你唯一的选择就是立即进入该IAM用户的“安全凭证”标签页,将旧的访问密钥禁用或删除,然后创建一对新的密钥。一个IAM用户最多可以同时拥有两对访问密钥。
至此,我们在云端已经准备好了具备权限的身份。接下来,我们回到本地的Windows命令行,用这对密钥来“激活”刚刚安装好的AWS CLI。
4. 配置、验证与高级管理
拿到密钥后,配置过程本身非常简单,但理解配置背后的机制和掌握验证、管理技巧,才能让你用得更踏实。
4.1 运行 aws configure 进行基础配置
打开你的命令提示符或PowerShell,输入以下命令:
aws configure系统会交互式地提示你输入四项信息:
- AWS Access Key ID: 粘贴你刚才保存的
Access key ID,它通常以AKIA开头。 - AWS Secret Access Key: 粘贴对应的
Secret access key。输入时不会有任何显示(星号也没有),这是正常的,直接粘贴后回车即可。 - Default region name: 输入默认区域代码,例如
us-east-1(弗吉尼亚北部)、ap-southeast-1(新加坡)或cn-north-1(北京)。这决定了你后续命令默认操作哪个区域的资源。 - Default output format: 选择默认的输出格式。我推荐
json,因为它结构清晰,易于被其他程序解析。其他选项还有text(表格)、yaml、yaml-stream等。
配置完成后,AWS CLI会在你的用户目录下(C:\Users\<你的用户名>\.aws\)自动创建两个隐藏的文本文件:
credentials: 明文存储你的访问密钥(Access Key ID和Secret Access Key)。请务必保护好这个目录。config: 存储区域和输出格式等配置信息。
4.2 验证配置是否生效
配置好了,怎么知道是否成功呢?最好的方法就是执行一个简单的、只读的API调用进行测试。这里推荐两个命令:
测试S3服务(列出存储桶):
aws s3 ls如果配置正确且用户有S3的读取权限,这个命令会列出你账户在该默认区域下的所有S3存储桶。如果没有任何存储桶,它会安静地返回,没有错误即表示权限和连接正常。
测试EC2服务(描述实例):
aws ec2 describe-instances这个命令会以JSON格式返回该区域下所有EC2实例的详细信息。如果当前没有运行任何实例,返回的"Reservations"数组会是空的,这同样是正常的。
如果出现类似“Unable to locate credentials”或“An error occurred (UnauthorizedOperation)”的错误,请依次检查:
- 密钥是否输入错误(特别是Secret Key)。
- 对应用户是否确实附加了相应的权限策略(例如S3的读取权限)。
- 网络连接是否正常。
4.3 多配置集与密钥轮换管理
在实际工作中,你很可能需要管理多个AWS账户(如开发、测试、生产),或者在同一个账户下使用不同权限的用户。AWS CLI支持多配置集,这非常方便。
你可以在~/.aws/config文件中定义多个配置集。例如:
[default] region = us-east-1 output = json [profile dev-admin] region = us-west-2 output = json [profile prod-readonly] region = eu-central-1 output = table对应的~/.aws/credentials文件则为每个配置集存储不同的密钥:
[default] aws_access_key_id = AKIA... aws_secret_access_key = ... [dev-admin] aws_access_key_id = AKIA... aws_secret_access_key = ... [prod-readonly] aws_access_key_id = AKIA... aws_secret_access_key = ...使用时,通过--profile参数指定配置集:
aws s3 ls --profile dev-admin aws ec2 describe-instances --profile prod-readonly关于密钥安全,一个重要的最佳实践是定期轮换访问密钥。我建议每90天执行一次以下操作:
- 为IAM用户创建第二对访问密钥。
- 更新所有使用旧密钥的应用程序和脚本,改用新密钥。
- 将旧的访问密钥设置为“非活动”状态,观察一段时间确保所有服务运行正常。
- 最后,删除旧的访问密钥。
这个习惯能极大降低因密钥长期暴露而带来的潜在风险。在Windows上,你只需要用新的密钥重新运行aws configure --profile <profile-name>即可更新指定配置集的凭证。