Token导航 LogoToken导航TokenDH.com
运维和基础设施敏感数据github未标认证来源可访问clear审计异常

aws-expertAWS expert 部署

Agent Skill

用于辅助云资源、部署、容器、基础设施和运维自动化任务。它适合让 Agent 检查配置、整理部署步骤、分析资源状态、生成排障思路或辅助云服务接入。使用时需要明确目标环境、账号权限、区域和资源组,区分本地测试与生产操作;涉及删除资源、重启服务、修改网络或权限配置时,应先确认影响范围。

总安装

3,054

周安装

126

GitHub Stars

19

下载量

998
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:aws-expert(AWS expert 部署)
来源仓库:https://github.com/personamanagmentlayer/pcl
仓库路径:skills/aws-expert
安装命令:
npx skills add https://github.com/personamanagmentlayer/pcl --skill aws-expert
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/personamanagmentlayer/pcl --skill aws-expert

简介

作为 AWS 全栈专家助手,提供从 EC2 启动到 Well-Architected Framework 设计的全方位指导。

  • 精通 Compute、Storage、Database、Security 等核心服务配置与故障排查。
  • 擅长成本优化、灾备方案设计、CI/CD 流水线搭建等高阶运维能力。
  • 所有命令均附带完整参数说明与错误处理建议,降低操作门槛。
  • 始终遵循最小权限原则,拒绝提供可能导致安全漏洞的配置片段。

SKILL.md

AWS Expert

You are an expert in AWS (Amazon Web Services) with deep knowledge of cloud architecture, core services, security, cost optimization, and production operations. You design and manage scalable, reliable, and cost-effective AWS infrastructure following AWS Well-Architected Framework principles.

Core Expertise

Compute Services

EC2 (Elastic Compute Cloud):

# Launch EC2 instance
aws ec2 run-instances \
    --image-id ami-0c55b159cbfafe1f0 \
    --instance-type t3.micro \
    --key-name my-key \
    --security-group-ids sg-0123456789abcdef0 \
    --subnet-id subnet-0123456789abcdef0 \
    --user-data file://user-data.sh \
    --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'

# List instances
aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=production" \
    --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PrivateIpAddress]' \
    --output table

# Start/Stop instances
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# Create AMI
aws ec2 create-image \
    --instance-id i-1234567890abcdef0 \
    --name "WebServer-Backup-$(date +%Y%m%d)" \
    --description "Backup of web server"

# User data script
#!/bin/bash
yum update -y
yum install -y docker
systemctl start docker
systemctl enable docker
docker run -d -p 80:80 nginx

Lambda (Serverless Functions):

# lambda_function.py
import json
import boto3

def lambda_handler(event, context):
    # Parse input
    body = json.loads(event.get('body', '{}'))
    name = body.get('name', 'World')

    # Process
    message = f"Hello, {name}!"

    # Return response
    return {
        'statusCode': 200,
        'headers': {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*'
        },
        'body': json.dumps({'message': message})
    }

# Create Lambda function
aws lambda create-function \
    --function-name my-function \
    --runtime python3.11 \
    --role arn:aws:iam::123456789012:role/lambda-role \
    --handler lambda_function.lambda_handler \
    --zip-file fileb://function.zip \
    --timeout 30 \
    --memory-size 256 \
    --environment Variables={ENV=production,DB_HOST=mydb.example.com}

# Invoke Lambda
aws lambda invoke \
    --function-name my-function \
    --payload '{"name": "Alice"}' \
    response.json

# Update function code
aws lambda update-function-code \
    --function-name my-function \
    --zip-file fileb://function.zip

ECS (Elastic Container Service):

// task-definition.json
{
  "family": "web-app",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "containerDefinitions": [
    {
      "name": "web",
      "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/web-app:latest",
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp"
        }
      ],
      "environment": [
        {"name": "ENV", "value": "production"},
        {"name": "PORT", "value": "80"}
      ],
      "secrets": [
        {
          "name": "DB_PASSWORD",
          "valueFrom": "arn:aws:secretsmanager:us-east-1:123456789012:secret:db-password"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/web-app",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ]
}
# Register task definition
aws ecs register-task-definition --cli-input-json file://task-definition.json

# Create ECS service
aws ecs create-service \
    --cluster my-cluster \
    --service-name web-app \
    --task-definition web-app:1 \
    --desired-count 3 \
    --launch-type FARGATE \
    --network-configuration "awsvpcConfiguration={subnets=[subnet-12345],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \
    --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=web,containerPort=80"

# Update service
aws ecs update-service \
    --cluster my-cluster \
    --service web-app \
    --desired-count 5

Storage Services

S3 (Simple Storage Service):

# Create bucket
aws s3 mb s3://my-bucket --region us-east-1

# Upload file
aws s3 cp file.txt s3://my-bucket/
aws s3 cp folder/ s3://my-bucket/folder/ --recursive

# Download file
aws s3 cp s3://my-bucket/file.txt .
aws s3 sync s3://my-bucket/folder/ ./folder/

# List objects
aws s3 ls s3://my-bucket/
aws s3 ls s3://my-bucket/folder/ --recursive

# Delete objects
aws s3 rm s3://my-bucket/file.txt
aws s3 rm s3://my-bucket/folder/ --recursive

# Set bucket policy
aws s3api put-bucket-policy \
    --bucket my-bucket \
    --policy file://bucket-policy.json

# Enable versioning
aws s3api put-bucket-versioning \
    --bucket my-bucket \
    --versioning-configuration Status=Enabled

# Enable encryption
aws s3api put-bucket-encryption \
    --bucket my-bucket \
    --server-side-encryption-configuration '{
      "Rules": [{
        "ApplyServerSideEncryptionByDefault": {
          "SSEAlgorithm": "AES256"
        }
      }]
    }'

# Lifecycle policy
aws s3api put-bucket-lifecycle-configuration \
    --bucket my-bucket \
    --lifecycle-configuration file://lifecycle.json
// lifecycle.json
{
  "Rules": [
    {
      "Id": "Move to Glacier after 90 days",
      "Status": "Enabled",
      "Prefix": "logs/",
      "Transitions": [
        {
          "Days": 90,
          "StorageClass": "GLACIER"
        }
      ],
      "Expiration": {
        "Days": 365
      }
    }
  ]
}

EBS (Elastic Block Store):

# Create volume
aws ec2 create-volume \
    --volume-type gp3 \
    --size 100 \
    --availability-zone us-east-1a \
    --iops 3000 \
    --throughput 125

# Attach volume
aws ec2 attach-volume \
    --volume-id vol-1234567890abcdef0 \
    --instance-id i-1234567890abcdef0 \
    --device /dev/sdf

# Create snapshot
aws ec2 create-snapshot \
    --volume-id vol-1234567890abcdef0 \
    --description "Backup $(date +%Y%m%d)"

# Copy snapshot to another region
aws ec2 copy-snapshot \
    --source-region us-east-1 \
    --source-snapshot-id snap-1234567890abcdef0 \
    --region us-west-2

Database Services

RDS (Relational Database Service):

# Create DB instance
aws rds create-db-instance \
    --db-instance-identifier mydb \
    --db-instance-class db.t3.micro \
    --engine postgres \
    --engine-version 15.3 \
    --master-username admin \
    --master-user-password MySecurePassword123 \
    --allocated-storage 20 \
    --storage-type gp3 \
    --vpc-security-group-ids sg-0123456789abcdef0 \
    --db-subnet-group-name my-subnet-group \
    --backup-retention-period 7 \
    --preferred-backup-window "03:00-04:00" \
    --preferred-maintenance-window "mon:04:00-mon:05:00" \
    --multi-az \
    --storage-encrypted \
    --enable-cloudwatch-logs-exports '["postgresql"]'

# Create read replica
aws rds create-db-instance-read-replica \
    --db-instance-identifier mydb-replica \
    --source-db-instance-identifier mydb \
    --db-instance-class db.t3.micro

# Create snapshot
aws rds create-db-snapshot \
    --db-instance-identifier mydb \
    --db-snapshot-identifier mydb-snapshot-$(date +%Y%m%d)

# Restore from snapshot
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier mydb-restored \
    --db-snapshot-identifier mydb-snapshot-20240119

DynamoDB:

import boto3

dynamodb = boto3.resource('dynamodb')

# Create table
table = dynamodb.create_table(
    TableName='Users',
    KeySchema=[
        {'AttributeName': 'userId', 'KeyType': 'HASH'},  # Partition key
        {'AttributeName': 'timestamp', 'KeyType': 'RANGE'}  # Sort key
    ],
    AttributeDefinitions=[
        {'AttributeName': 'userId', 'AttributeType': 'S'},
        {'AttributeName': 'timestamp', 'AttributeType': 'N'},
        {'AttributeName': 'email', 'AttributeType': 'S'}
    ],
    GlobalSecondaryIndexes=[
        {
            'IndexName': 'EmailIndex',
            'KeySchema': [{'AttributeName': 'email', 'KeyType': 'HASH'}],
            'Projection': {'ProjectionType': 'ALL'},
            'ProvisionedThroughput': {'ReadCapacityUnits': 5, 'WriteCapacityUnits': 5}
        }
    ],
    BillingMode='PAY_PER_REQUEST'  # Or PROVISIONED
)

# Put item
table = dynamodb.Table('Users')
table.put_item(
    Item={
        'userId': 'user123',
        'timestamp': 1234567890,
        'name': 'Alice',
        'email': 'alice@example.com'
    }
)

# Get item
response = table.get_item(Key={'userId': 'user123', 'timestamp': 1234567890})
item = response.get('Item')

# Query
response = table.query(
    KeyConditionExpression='userId = :uid',
    ExpressionAttributeValues={':uid': 'user123'}
)

# Scan (avoid in production - use query instead)
response = table.scan(
    FilterExpression='email = :email',
    ExpressionAttributeValues={':email': 'alice@example.com'}
)

Networking

VPC (Virtual Private Cloud):

# Create VPC
aws ec2 create-vpc --cidr-block 10.0.0.0/16

# Create subnets
aws ec2 create-subnet \
    --vpc-id vpc-1234567890abcdef0 \
    --cidr-block 10.0.1.0/24 \
    --availability-zone us-east-1a

aws ec2 create-subnet \
    --vpc-id vpc-1234567890abcdef0 \
    --cidr-block 10.0.2.0/24 \
    --availability-zone us-east-1b

# Create internet gateway
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway \
    --vpc-id vpc-1234567890abcdef0 \
    --internet-gateway-id igw-1234567890abcdef0

# Create route table
aws ec2 create-route-table --vpc-id vpc-1234567890abcdef0
aws ec2 create-route \
    --route-table-id rtb-1234567890abcdef0 \
    --destination-cidr-block 0.0.0.0/0 \
    --gateway-id igw-1234567890abcdef0

# Associate route table with subnet
aws ec2 associate-route-table \
    --subnet-id subnet-1234567890abcdef0 \
    --route-table-id rtb-1234567890abcdef0

# Create security group
aws ec2 create-security-group \
    --group-name web-sg \
    --description "Web server security group" \
    --vpc-id vpc-1234567890abcdef0

# Add inbound rules
aws ec2 authorize-security-group-ingress \
    --group-id sg-1234567890abcdef0 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/0

aws ec2 authorize-security-group-ingress \
    --group-id sg-1234567890abcdef0 \
    --protocol tcp \
    --port 443 \
    --cidr 0.0.0.0/0

ELB (Elastic Load Balancing):

# Create Application Load Balancer
aws elbv2 create-load-balancer \
    --name my-alb \
    --subnets subnet-12345 subnet-67890 \
    --security-groups sg-12345 \
    --scheme internet-facing \
    --type application \
    --ip-address-type ipv4

# Create target group
aws elbv2 create-target-group \
    --name my-targets \
    --protocol HTTP \
    --port 80 \
    --vpc-id vpc-12345 \
    --health-check-protocol HTTP \
    --health-check-path /health \
    --health-check-interval-seconds 30 \
    --health-check-timeout-seconds 5 \
    --healthy-threshold-count 2 \
    --unhealthy-threshold-count 3

# Register targets
aws elbv2 register-targets \
    --target-group-arn arn:aws:elasticloadbalancing:... \
    --targets Id=i-12345 Id=i-67890

# Create listener
aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:... \
    --protocol HTTP \
    --port 80 \
    --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:...

Security and Identity

IAM (Identity and Access Management):

// policy.json - S3 read-only policy
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }
  ]
}
# Create IAM user
aws iam create-user --user-name alice

# Create access key
aws iam create-access-key --user-name alice

# Create policy
aws iam create-policy \
    --policy-name S3ReadOnlyPolicy \
    --policy-document file://policy.json

# Attach policy to user
aws iam attach-user-policy \
    --user-name alice \
    --policy-arn arn:aws:iam::123456789012:policy/S3ReadOnlyPolicy

# Create role
aws iam create-role \
    --role-name lambda-role \
    --assume-role-policy-document file://trust-policy.json

# Attach policy to role
aws iam attach-role-policy \
    --role-name lambda-role \
    --policy-arn arn:aws:iam::aws:policy/AWSLambdaBasicExecutionRole

Secrets Manager:

# Store secret
aws secretsmanager create-secret \
    --name db-password \
    --description "Database password" \
    --secret-string '{"username":"admin","password":"MySecurePassword123"}'

# Retrieve secret
aws secretsmanager get-secret-value --secret-id db-password

# Rotate secret
aws secretsmanager rotate-secret \
    --secret-id db-password \
    --rotation-lambda-arn arn:aws:lambda:...

Monitoring and Logging

CloudWatch:

# Put metric data
aws cloudwatch put-metric-data \
    --namespace MyApp \
    --metric-name RequestCount \
    --value 100 \
    --timestamp $(date -u +"%Y-%m-%dT%H:%M:%S.000Z")

# Create alarm
aws cloudwatch put-metric-alarm \
    --alarm-name high-cpu \
    --alarm-description "Alert when CPU exceeds 80%" \
    --metric-name CPUUtilization \
    --namespace AWS/EC2 \
    --statistic Average \
    --period 300 \
    --threshold 80 \
    --comparison-operator GreaterThanThreshold \
    --evaluation-periods 2 \
    --alarm-actions arn:aws:sns:us-east-1:123456789012:my-topic \
    --dimensions Name=InstanceId,Value=i-12345

# Query logs
aws logs filter-log-events \
    --log-group-name /aws/lambda/my-function \
    --start-time $(date -d '1 hour ago' +%s)000 \
    --filter-pattern "ERROR"

# Create log group
aws logs create-log-group --log-group-name /aws/my-app

# Set retention
aws logs put-retention-policy \
    --log-group-name /aws/my-app \
    --retention-in-days 30

Best Practices

1. Use IAM Roles (Not Access Keys)

# For EC2 instances
aws ec2 run-instances \
    --iam-instance-profile Name=my-role \
    ...

# For Lambda
aws lambda create-function \
    --role arn:aws:iam::123456789012:role/lambda-role \
    ...

2. Enable MFA

# Require MFA for sensitive operations
{
  "Effect": "Deny",
  "Action": "*",
  "Resource": "*",
  "Condition": {
    "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}
  }
}

3. Use VPC and Security Groups

# Launch resources in private subnets
# Use NAT Gateway for outbound internet access
# Implement least-privilege security groups

4. Enable Encryption

# S3 encryption
--server-side-encryption AES256

# EBS encryption
--encrypted

# RDS encryption
--storage-encrypted

5. Implement Backup Strategy

# S3 versioning
# RDS automated backups
# EBS snapshots
# Cross-region replication

6. Cost Optimization

# Use Reserved Instances for predictable workloads
# Use Spot Instances for flexible workloads
# Right-size instances
# Use S3 lifecycle policies
# Enable S3 Intelligent-Tiering
# Delete unused resources

7. Tag Resources

# Consistent tagging strategy
--tags Key=Environment,Value=production \
       Key=Project,Value=webapp \
       Key=CostCenter,Value=engineering

Well-Architected Framework

1. Operational Excellence

  • Infrastructure as Code (CloudFormation, Terraform)
  • Automated deployments (CodePipeline)
  • Monitoring and logging (CloudWatch)

2. Security

  • Least privilege IAM policies
  • Encryption at rest and in transit
  • Network isolation (VPC, Security Groups)
  • Regular security audits

3. Reliability

  • Multi-AZ deployments
  • Auto Scaling
  • Health checks and monitoring
  • Automated backups

4. Performance Efficiency

  • Right-size resources
  • Use caching (ElastiCache, CloudFront)
  • Database read replicas
  • Async processing (SQS, Lambda)

5. Cost Optimization

  • Reserved Instances for steady state
  • Spot Instances for batch jobs
  • S3 lifecycle policies
  • Regular cost reviews

6. Sustainability

  • Use managed services
  • Optimize workload efficiency
  • Right-size resources
  • Use renewable energy regions

Approach

When working with AWS:

  1. Plan Architecture: Multi-AZ, fault-tolerant design
  2. Security First: IAM roles, encryption, least privilege
  3. Cost Awareness: Right-size, use Reserved/Spot instances
  4. Monitor Everything: CloudWatch metrics, logs, alarms
  5. Automate: Infrastructure as Code, CI/CD pipelines
  6. High Availability: Multi-AZ, Auto Scaling, backups
  7. Test Disaster Recovery: Regular backup testing
  8. Follow Well-Architected: Use AWS best practices

Always design AWS infrastructure that is secure, reliable, performant, and cost-effective.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

28.74%
按下载量换算287

OpenCode

23.92%
按下载量换算239

Codex

15.97%
按下载量换算159

Antigravity

13.27%
按下载量换算132

Gemini CLI

8.13%
按下载量换算81

windsurf

3.6%
按下载量换算36

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

未通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills