解放双手!用AWS CLI自动化你的云资源管理(实战教程)

作者:优快云云计算专家
关键词:AWS CLI, 自动化脚本, 云资源管理, DevOps

前言

作为开发者或运维工程师,你是否曾为重复的云资源管理任务而感到烦恼?每天手动创建EC2实例、配置S3存储桶、检查服务状态……这些操作不仅耗时耗力,还容易出错。今天我将带你掌握AWS命令行工具(CLI)的实战技巧,用自动化脚本解放你的双手!

群雄逐鹿,AWS如何守住出海云服务王座?近两年来,中国企业出海已成浪潮。从游戏、短视频到电商、SaaS,越来越多的行业将业务拓展至海外市场。在这股浪潮背后,云服务商成为不可或缺的支撑力量。https://mp.weixin.qq.com/s/5XfT9A39HdAl8s4bXWRbiA

一、为什么选择AWS CLI?

AWS管理控制台虽然直观易用,但在处理批量操作和自动化任务时显得力不从心。AWS CLI提供了以下优势:

  1. 全功能支持:支持200+AWS服务的API操作

  2. 跨平台兼容:Windows、Linux、macOS均可使用

  3. 自动化能力:可与Shell/Python等脚本无缝集成

  4. 高效执行:减少图形界面操作时间,提升工作效率

二、环境安装与配置

1. 安装AWS CL

# Windows (使用PowerShell)
winget install -e --id Amazon.AWSCLI

# macOS (使用Homebrew)
brew install awscli

# Linux (Ubuntu)
sudo apt update
sudo apt install awscli

2. 配置认证信息

aws configure
# 依次输入Access Key、Secret Key、区域和输出格式

建议使用IAM角色临时凭证,提升安全性:

# 使用命名配置文件
aws configure --profile dev-profile

三、实战脚本示例

示例1:自动化部署EC2实例

#!/bin/bash
# deploy_ec2.sh

INSTANCE_ID=$(aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type t3.micro \
    --key-name my-key-pair \
    --subnet-id subnet-08fc749671b2d077c \
    --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=web-server}]' \
    --query 'Instances[0].InstanceId' \
    --output text)

echo "实例创建成功: $INSTANCE_ID"

# 等待实例运行
aws ec2 wait instance-running --instance-ids $INSTANCE_ID

# 获取公网IP
PUBLIC_IP=$(aws ec2 describe-instances \
    --instance-ids $INSTANCE_ID \
    --query 'Reservations[0].Instances[0].PublicIpAddress' \
    --output text)

echo "实例公网IP: $PUBLIC_IP"

示例2:S3存储桶批量操作

#!/bin/bash
# s3_operations.sh

# 创建存储桶
aws s3 mb s3://my-unique-bucket-name-$(date +%s)

# 同步本地目录到S3
aws s3 sync ./dist s3://my-bucket/static-assets/

# 设置生命周期策略
cat > lifecycle.json << EOF
{
    "Rules": [
        {
            "ID": "Move to Glacier",
            "Status": "Enabled",
            "Prefix": "archive/",
            "Transitions": [
                {
                    "Days": 30,
                    "StorageClass": "GLACIER"
                }
            ]
        }
    ]
}
EOF

aws s3api put-bucket-lifecycle-configuration \
    --bucket my-bucket \
    --lifecycle-configuration file://lifecycle.json

示例3:自动化监控与告警

#!/bin/bash
# monitor_resources.sh

# 检查EC2实例状态
INSTANCE_STATUS=$(aws ec2 describe-instance-status \
    --instance-ids i-1234567890abcdef0 \
    --query 'InstanceStatuses[0].InstanceStatus.Status' \
    --output text)

if [ "$INSTANCE_STATUS" != "ok" ]; then
    # 发送SNS通知
    aws sns publish \
        --topic-arn arn:aws:sns:us-east-1:123456789012:alerts-topic \
        --message "实例运行异常,当前状态: $INSTANCE_STATUS"
fi

# 每日成本报告
START_DATE=$(date -d "-1 day" +%Y-%m-%d)
END_DATE=$(date +%Y-%m-%d)

aws ce get-cost-and-usage \
    --time-period Start=$START_DATE,End=$END_DATE \
    --granularity DAILY \
    --metrics "BlendedCost" \
    --query 'ResultsByTime[0].Total.BlendedCost.Amount' \
    --output text

四、高级技巧与最佳实践

1. 使用JMESPath进行高级查询

# 提取特定字段
aws ec2 describe-instances \
    --query 'Reservations[].Instances[].[InstanceId,State.Name,PublicIpAddress]' \
    --output table

# 过滤结果
aws ec2 describe-instances \
    --filters "Name=instance-type,Values=t3.micro" \
    --query "Reservations[].Instances[].InstanceId"

2. 脚本错误处理

#!/bin/bash

set -e  # 遇到错误立即退出

# 使用trap捕获信号
trap 'echo "脚本被中断"; exit 1' INT TERM

if ! aws s3 ls s3://my-bucket/; then
    echo "存储桶访问失败"
    exit 1
fi

3. 自动化部署脚本模板

#!/bin/bash
# automated_deployment.sh

set -e

LOG_FILE="deployment_$(date +%Y%m%d_%H%M%S).log"
exec > >(tee -a "$LOG_FILE") 2>&1

echo "开始部署: $(date)"

# 你的部署步骤 here
# 1. 上传代码
# 2. 创建资源
# 3. 运行测试
# 4. 切换流量

echo "部署完成: $(date)"

# 发送部署通知
aws sns publish \
    --topic-arn arn:aws:sns:us-east-1:123456789012:deployments \
    --subject "部署成功完成" \
    --message "部署日志: $LOG_FILE"

五、安全建议

  1. 最小权限原则:为脚本分配仅需的最小IAM权限

  2. 使用临时凭证:避免在脚本中硬编码长期访问密钥

  3. 加密敏感数据:使用AWS KMS或Secrets Manager管理机密信息

  4. 审计日志:启用AWS CloudTrail记录所有API调用

结语

通过本文介绍的AWS CLI脚本技巧,你可以将日常的云资源管理任务自动化,大幅提升工作效率。从简单的资源操作到复杂的部署流程,AWS CLI都能成为你的得力助手。

记住:最好的工具不是最强大的,而是你最熟悉且能灵活运用的。 开始编写你的第一个AWS CLI脚本吧!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值