基于浏览器的 Shell 环境 - 使用 AWS CloudShell 实现即时 CLI 访问

介绍使用 AWS CloudShell 的基于浏览器的 Shell 环境。包括从 AWS 管理控制台即时使用的 CLI 环境、预装开发工具、IAM 认证自动集成、安全文件管理等提升运维效率的实践方法。

CLI 环境搭建的挑战与 CloudShell 的定位

在 AWS 运维管理中,使用 AWS CLI 操作资源、执行脚本、排查故障是日常工作。然而,在本地环境安装 AWS CLI、配置认证信息、准备必要工具(jq、Python、Node.js、Docker 等)需要不少工作量。特别是管理多个 AWS 账户时,认证信息的切换和配置文件管理变得繁琐。AWS CloudShell 是解决这些问题的基于浏览器的 Shell 环境。从 AWS 管理控制台的导航栏一键启动,即可使用预装了 AWS CLI v2、Python 3、Node.js、jq、git、pip、npm 等主要工具的基于 Amazon Linux 2023 的环境。

预装工具与开发工作流

CloudShell 预装了丰富的 AWS 运维和开发所需工具。除 AWS CLI v2 外,还可使用 AWS SAM CLI、AWS CDKECS CLI、eksctl 等 AWS 专用工具。编程语言预装了 Python 3、Node.js 18、Java(Corretto)、Go、PowerShell,可立即开始编写和执行脚本。也可使用包管理器(pip、npm)安装额外的库,安装的包会持久化到主目录(最大 1 GB)。由于预装了 git,可从 CodeCommit 或 GitHub 克隆仓库进行代码检查或轻微修改。还提供 Vim 和 Nano 文本编辑器,支持配置文件编辑和脚本编写。CloudShell 会话最长持续 12 小时,20 分钟不活动后超时,但主目录数据会持久化,下次启动时可继续之前的工作状态。

IAM 认证集成与安全设计

CloudShell 最大的优势是登录 AWS 管理控制台的用户 IAM 认证信息会自动注入到 Shell 环境中。执行 AWS CLI 命令时无需指定配置文件或设置访问密钥,可直接以控制台登录用户的权限进行操作。也支持 IAM 角色切换,在控制台切换角色后 CloudShell 的认证信息也会自动更新。安全方面,CloudShell 环境按用户隔离,无法访问其他用户的环境。可通过 IAM 策略控制对 CloudShell 本身的访问,允许或拒绝特定用户或角色使用 CloudShell。网络访问仅允许出站,可连接互联网,但不允许任何从外部到 CloudShell 环境的入站连接。需要连接 VPC 环境时,可使用 CloudShell VPC 环境私有访问 VPC 内的资源。 了解 CloudShell 活用指南的工作流,可参考相关书籍(Amazon)

运维任务效率化与实际使用场景

CloudShell 非常适合日常运维任务的效率化。在事件响应中,在控制台确认告警后可立即启动 CloudShell,执行 CloudWatch Logs 查询、EC2 实例状态确认、Lambda 函数日志获取。以下是在 CloudShell 中执行的典型运维命令示例。 ```bash # 搜索最近 1 小时的 Lambda 错误日志 aws logs filter-log-events \ --log-group-name /aws/lambda/my-function \ --start-time $(date -d '1 hour ago' +%s000) \ --filter-pattern 'ERROR' # 获取所有区域的 EC2 实例列表 for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do echo "=== $region ===" aws ec2 describe-instances --region $region \ --query 'Reservations[].Instances[].[InstanceId,State.Name,Tags[?Key==`Name`].Value|[0]]' \ --output table done # CloudFormation 模板语法验证 aws cloudformation validate-template \ --template-body file://template.yaml ``` 在资源盘点中,可结合 AWS CLI 和 jq 获取所有区域的资源列表,确认标签附加情况和成本分配。通过文件上传下载功能,可将本地脚本文件上传到 CloudShell 执行,或将 CloudShell 生成的报告下载到本地。可打开多个标签页并行工作,例如在一个标签页监控日志的同时在另一个标签页执行命令。Safe Paste 功能在粘贴多行命令时会显示确认对话框,防止意外执行命令。CloudShell 免费提供 1 GB 持久存储,无需创建额外资源即可立即开始使用,在运维便捷性方面表现出色。

CloudShell 的费用

CloudShell 完全免费。计算环境、1 GB 持久存储和所有预装工具均不产生额外费用。仅对通过 CloudShell 执行的 AWS CLI 命令所创建和操作的资源收费。与 Cloud9 的 EC2 实例费用相比,对于简单的 AWS 操作和脚本执行,CloudShell 是最具成本效益的选择。

总结 - 基于浏览器的 Shell 环境选择

AWS CloudShell 作为可从浏览器即时使用的 Shell 环境,预装了 AWS CLI、SAM CLI、CDK 等主要工具。通过 IAM 认证信息的自动注入无需认证配置,从控制台一键即可开始运维任务。无额外成本,1 GB 持久存储可保存脚本和工具。非常适合事件响应、资源管理、模板验证等日常运维任务的效率化,是所有使用 AWS 的开发者和运维人员的必备工具。