К основному содержанию
правило

amazon-ec2 — правило для Cursor: настройка и применение

Правило для Cursor с рекомендациями по настройке Amazon EC2 через CloudFormation. Помогает проверять права IAM, сетевой доступ, шифрование дисков и конфигурацию инстансов.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/amazon-ec2.mdc
Открыть на GitHub

Что делает amazon-ec2

Правило задаёт ориентиры для описания инфраструктуры Amazon EC2 в CloudFormation. Оно предлагает разделять сеть, роли IAM и экземпляры EC2 на отдельные модули, а ресурсы снабжать тегами Environment, Project, Owner и CostCenter. Это упрощает поиск ресурсов и распределение расходов по проектам.

В части безопасности правило рекомендует ограничивать разрешения ролей IAM, задавать точные правила Security Groups и требовать IMDSv2. Секреты и зависящие от окружения значения следует передавать через параметры CloudFormation, SSM Parameter Store или AWS Secrets Manager. В конфигурациях также рассматриваются Launch Templates для Auto Scaling и шифрование томов EBS с помощью KMS. Для доступа по SSH нужно ограничить диапазон IP, а не открывать порт всему интернету.

Файл предназначен для Cursor и применяется как правило проекта. В приведённых примерах используются ресурсы AWS CloudFormation и параметры конфигурации, которые нужно согласовать с собственной инфраструктурой. Текст правила охватывает рекомендации по безопасности и стоимости, но не заменяет проверку конкретного шаблона перед развёртыванием.

Какие задачи решает

  • Разделить CloudFormation-шаблон EC2 на отдельные модули
  • Ограничить разрешения IAM для экземпляров
  • Закрыть SSH от доступа с любых IP-адресов
  • Включить IMDSv2 и шифрование томов EBS
  • Добавить теги для учёта расходов на инфраструктуру

Примеры запросов агенту

  • Проверь мой CloudFormation-шаблон EC2 на нарушения правил безопасности.
  • Раздели конфигурацию EC2, сети и IAM на отдельные CloudFormation-модули.
  • Проверь Security Groups, IMDSv2 и шифрование EBS в конфигурации.

Как установить amazon-ec2

Вручную: положить файлы

.cursor/rules/amazon-ec2.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Вопросы о amazon-ec2

Как установить amazon-ec2 в Cursor?

Добавь файл правила в проект по пути .cursor/rules/amazon-ec2.mdc. После этого Cursor сможет учитывать рекомендации при работе с файлами проекта.

Что делает правило amazon-ec2?

Оно направляет работу с конфигурацией Amazon EC2 по принципам безопасности и управления расходами. В частности, рассматривает CloudFormation, роли IAM, сетевые ограничения и шифрование EBS.

Какие требования безопасности проверяет amazon-ec2?

Правило рекомендует использовать минимальные разрешения IAM, ограничивать входящий трафик и требовать IMDSv2. Оно также предписывает шифровать тома EBS и избегать хранения секретов непосредственно в конфигурации.

Исходный текст

amazon-ec2.mdc · CC0-1.0
---
description: This guide provides definitive best practices for deploying and managing Amazon EC2 instances, focusing on security, cost optimization, and operational excellence through Infrastructure as Code (IaC).
globs: **/*
---
# amazon-ec2 Best Practices

Treat every EC2 instance as versioned, secured, and continuously optimized code. Adhere strictly to the AWS Well-Architected Framework and Foundational Security Best Practices (FSBP).

## 1. Code Organization and Structure

**Always define EC2 resources using Infrastructure as Code (IaC).** CloudFormation is the standard for AWS-native deployments. Break down templates into modular, reusable components.

### 1.1. Modular CloudFormation Templates

Organize your CloudFormation templates logically. Separate networking, IAM, and EC2 instance definitions into distinct, composable stacks or modules.

❌ **BAD: Monolithic Template**
```yaml
# all-in-one-stack.yaml
Resources:
  VPC: # ...
  Subnet: # ...
  SecurityGroup: # ...
  IAMRole: # ...
  EC2Instance: # ...
```

✅ **GOOD: Modular Stacks**
```yaml
# network-stack.yaml
Resources:
  VPC: # ...
  Subnet: # ...
Outputs: # Export VPC ID, Subnet IDs
# iam-stack.yaml
Resources:
  IAMRole: # ...
Outputs: # Export Role ARN
# ec2-instance-stack.yaml
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0abcdef1234567890
      InstanceType: !Ref InstanceTypeParam
      SecurityGroupIds: [!ImportValue MySecurityGroup]
      IamInstanceProfile: !ImportValue MyInstanceProfile
      # ...
```

### 1.2. Enforce Consistent Tagging

Implement a unified tagging strategy from your IaC templates. Tags are critical for cost allocation, resource discovery, and automation.

❌ **BAD: Missing or Inconsistent Tags**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ... no tags or only a few
```

✅ **GOOD: Mandatory Tags via IaC**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ...
    Tags:
      - Key: Environment
        Value: !Ref EnvironmentTag
      - Key: Project
        Value: !Ref ProjectTag
      - Key: Owner
        Value: !Ref OwnerTag
      - Key: CostCenter
        Value: !Ref CostCenterTag
```

## 2. Common Patterns and Anti-patterns

### 2.1. Right-Sizing Instances

**Analyze workloads to select the optimal instance family and size.** This is the single biggest driver for performance efficiency and cost optimization.

❌ **BAD: Defaulting to `t2.micro` or Over-provisioning**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    InstanceType: t2.micro # For a production database!
```

✅ **GOOD: Workload-Specific Instance Types**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    InstanceType: m5.large # General purpose, balanced CPU/memory
    # or c5.xlarge for compute-intensive, r5.large for memory-intensive
```

### 2.2. Least Privilege IAM Instance Profiles

**Attach IAM roles to EC2 instances via Instance Profiles, granting only the minimum necessary permissions.** Never embed AWS credentials directly on an instance.

❌ **BAD: Over-privileged IAM Role**
```json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "*",
      "Resource": "*"
    }
  ]
}
```

✅ **GOOD: Tightly Scoped IAM Role**
```yaml
# CloudFormation IAM Role for EC2
BastionHostRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Statement:
        - Effect: Allow
          Principal: { Service: [ 'ec2.amazonaws.com' ] }
          Action: [ 'sts:AssumeRole' ]
    ManagedPolicyArns:
      - arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM # For SSM access
    Policies:
      - PolicyName: S3ReadAccess
        PolicyDocument:
          Statement:
            - Effect: Allow
              Action: [ 's3:GetObject' ]
              Resource: !Sub 'arn:${AWS::Partition}:s3:::my-config-bucket/*'
```

### 2.3. Strict Security Group Rules

**Security groups must enforce the principle of least privilege.** Restrict inbound and outbound traffic to only what is absolutely required.

❌ **BAD: Open Ingress/Egress**
```yaml
SecurityGroupIngress:
  - IpProtocol: tcp
    FromPort: 22
    ToPort: 22
    CidrIp: 0.0.0.0/0 # SSH open to the world!
```

✅ **GOOD: Restricted Access**
```yaml
SecurityGroupIngress:
  - IpProtocol: tcp
    FromPort: 22
    ToPort: 22
    CidrIp: !Ref RemoteAccessCIDR # Parameter for specific IP range
  - IpProtocol: tcp
    FromPort: 80
    ToPort: 80
    SourceSecurityGroupId: !Ref LoadBalancerSecurityGroup # Only allow from LB
```

### 2.4. Require IMDSv2

**Always configure EC2 instances to require Instance Metadata Service Version 2 (IMDSv2).** This prevents SSRF vulnerabilities.

❌ **BAD: Relying on IMDSv1**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ... no MetadataOptions specified
```

✅ **GOOD: Enforce IMDSv2**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ...
    MetadataOptions:
      HttpPutResponseHopLimit: 1
      HttpTokens: required
```

## 3. Performance Considerations

### 3.1. Leverage Launch Templates for Auto Scaling

**Use EC2 Launch Templates with Auto Scaling Groups.** This ensures consistent configuration, supports multiple instance types, and simplifies updates.

❌ **BAD: Launch Configurations (deprecated)**
```yaml
AutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    LaunchConfigurationName: !Ref MyLaunchConfig # Avoid
```

✅ **GOOD: Launch Templates**
```yaml
AutoScalingGroup:
  Type: AWS::AutoScaling::AutoScalingGroup
  Properties:
    LaunchTemplate:
      LaunchTemplateId: !Ref MyLaunchTemplate
      Version: !GetAtt MyLaunchTemplate.LatestVersionNumber
    # ...
```

### 3.2. EBS Optimization and Encryption

**Use EBS-optimized instances for I/O-intensive workloads and encrypt all EBS volumes by default.**

❌ **BAD: Unencrypted Volumes, Non-EBS Optimized**
```yaml
BlockDeviceMappings:
  - DeviceName: /dev/sdh
    Ebs:
      VolumeSize: 100
      Encrypted: false # Never!
```

✅ **GOOD: Encrypted, EBS-Optimized**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    InstanceType: m5.large # Often EBS-optimized by default or configurable
    BlockDeviceMappings:
      - DeviceName: /dev/sdh
        Ebs:
          VolumeSize: 100
          Encrypted: true # Always!
          KmsKeyId: !Ref MyEBSKMSKey # Use a customer-managed key
```

## 4. Common Pitfalls and Gotchas

### 4.1. Avoid Hardcoding Sensitive Information

**Never hardcode secrets, ARNs, or environment-specific values.** Use CloudFormation parameters, SSM Parameter Store, or AWS Secrets Manager.

❌ **BAD: Hardcoded S3 Bucket Name**
```bash
#!/bin/bash
aws s3 cp /var/log/app.log s3://my-prod-bucket-123/logs/
```

✅ **GOOD: Parameterized Values**
```yaml
# CloudFormation UserData
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash
    aws s3 cp /var/log/app.log s3://${LogBucketName}/logs/
Parameters:
  LogBucketName:
    Type: String
    Description: S3 bucket for application logs
```

### 4.2. Enable Termination Protection

**Enable termination protection for critical EC2 instances.** This prevents accidental deletion.

❌ **BAD: No Termination Protection**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ... no DisableApiTermination
```

✅ **GOOD: Termination Protection Enabled**
```yaml
EC2Instance:
  Type: AWS::EC2::Instance
  Properties:
    # ...
    DisableApiTermination: true
```

## 5. Testing Approaches

### 5.1. IaC Linting and Validation

**Integrate IaC linting and validation into your CI/CD pipeline.** Catch policy violations and syntax errors *before* deployment.

❌ **BAD: Deploying without Pre-checks**
```bash
aws cloudformation deploy --template-file my-ec2-stack.yaml --stack-name my-app
```

✅ **GOOD: CI/CD with CloudFormation Guard**
```bash
# In CI/CD pipeline
cfn-guard validate --template my-ec2-stack.yaml --rules policies/ec2-rules.guard
aws cloudformation deploy --template-file my-ec2-stack.yaml --stack-name my-app
```

### 5.2. Automated Security Hub Compliance

**Ensure your CI/CD pipeline includes checks against AWS Foundational Security Best Practices (FSBP) via AWS Security Hub.**

❌ **BAD: Manual Security Audits Post-Deployment**
```bash
# Hope for the best, check manually later
```

✅ **GOOD: Proactive Security Checks**
```bash
# Example rule in CloudFormation Guard to enforce IMDSv2
rule imdsv2_required {
  EC2_Instance {
    Properties {
      MetadataOptions {
        HttpTokens == "required"
        HttpPutResponseHopLimit == 1
      }
    }
  }
}
```

© sanjeed5 · CC0-1.0 · sanjeed5/awesome-cursor-rules-mdc

Похожие правила IDE

Все правила IDE по теме «Облака: AWS, Azure, GCP» →
launching-ec2-instance-with-best-practices aws Скилл помогает запускать EC2 с настройками для безопасности и контроля затрат. Пригодится при развёртывании новых инстансов в AWS. CX Codex +1 6 300установок setting-up-ec2-instance-profiles aws Настраивает профили инстансов EC2 и роли IAM для безопасного вызова сервисов AWS без сохранения ключей в коде. Пригодится при настройке доступа к S3, DynamoDB или CloudWatch. CX Codex +1 6 200установок aws-cloud-architecture manutej Скилл помогает проектировать AWS-архитектуру: от EC2 и хранилищ до безопасности, бессерверных систем и расходов. Пригодится при планировании или настройке облачной инфраструктуры. CX Codex +1 594установок localstack localstack Плагин добавляет скиллы для работы с LocalStack: запуска локального облака, развёртывания инфраструктуры и поиска ошибок. Пригодится для разработки и тестирования AWS-приложений без развёртывания в облаке. ★ 15звёзд репо aws-ec2 devops-skills Скилл для работы с вычислительными ресурсами AWS: запуск инстансов, шаблоны, автоскейлинг и Spot. Пригодится, когда разворачиваешь инфраструктуру через агента. CX Codex +1 327установок aws-cloud-expert официальный github Субагент для проектирования, развёртывания и оптимизации рабочих нагрузок на AWS. Охватывает серверлесс, контейнеры, базы данных, сеть, IaC и безопасность через призму AWS Well-Architected Framework. ★ 40 478звёзд репо

Из того же набора240

Весь набор →
anyio Правило задаёт рекомендации для асинхронного Python-кода на AnyIO: использовать структурированную конкурентность и выбирать backend явно. Оно применяется к файлам *.py. ★ 3 580звёзд репо ant-design Правило задаёт агенту стандарты работы с Ant Design v6.x: тему через токены, сетку, доступность компонентов. Пригодится, если проект на React и Ant Design. ★ 3 580звёзд репо ansible Задаёт стандарты написания Ansible-кода для ИИ: форматирование YAML, деление на роли, идемпотентность задач и управление переменными. ★ 3 580звёзд репо angular Правило задаёт соглашения для Angular-кода: от структуры файлов до состояния компонентов. Cursor сможет применять их при работе с файлами TypeScript и HTML. ★ 3 580звёзд репо android-sdk Правило задаёт Cursor стандарты разработки Android на Java: MVVM, Jetpack, Hilt, Room и навигация. Пригодится, когда агент пишет код для Android-проекта. ★ 3 580звёзд репо amazon-s3 Набор инструкций для Cursor по работе с Amazon S3. Помогает настроить шифрование объектов, отключить устаревшие ACL и организовать иерархию файлов. ★ 3 580звёзд репо aiohttp Правило для Cursor задаёт, как писать асинхронный HTTP-клиент на aiohttp: одна сессия на приложение, таймауты, обработка ошибок. ★ 3 580звёзд репо actix-web Набор инструкций для Cursor по разработке веб-сервисов на Rust с Actix-web 4. Помогает выстроить модульную структуру и безопасно управлять общим состоянием. ★ 3 580звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой