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

aws-lambda — правило для Cursor: что делает и как установить

Правило помогает проектировать Lambda-функции с учётом структуры кода, безопасности, производительности и тестирования. Полезно при разработке или проверке бессерверного приложения на AWS.

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

Что делает aws-lambda

Правило задаёт ориентиры для Lambda-функций: выносить общие зависимости за пределы обработчика, хранить настройки в переменных окружения, вести JSON-логи и ограничивать права IAM. Для повторяющихся событий предлагается идемпотентность, а сложные процессы правило советует разбивать и связывать через AWS Step Functions. Это влияет на устройство кода и инфраструктуры.

В примерах используются aws-lambda-powertools, AWS CDK v2, DynamoDB и инструменты локального тестирования AWS SAM CLI или LocalStack. Для секретов названы AWS Secrets Manager и AWS Systems Manager Parameter Store; для проверки входных данных — Pydantic или Parser utility из aws-lambda-powertools. Если функции нужны дополнительные AWS-действия, правило требует выдавать роли только необходимые разрешения: широкие права вроде s3:* здесь считаются ошибкой.

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

  • вынести создание SDK-клиентов из обработчика
  • настроить JSON-логирование Lambda-функции
  • защитить обработку событий от повторных запусков
  • ограничить разрешения IAM-роли конкретными действиями
  • проверить Lambda локально или интеграционными тестами

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

  • Примени правило aws-lambda и вынеси создание клиента boto3 за пределы обработчика.
  • Проверь эту Lambda-функцию на повторную обработку событий и лишние права IAM.
  • Подскажи, как протестировать этот обработчик локально с AWS SAM CLI по правилу aws-lambda.

Как установить aws-lambda

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

.cursor/rules/aws-lambda.mdc

Во frontmatter: description, globs, alwaysApply

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

Вопросы о aws-lambda

Как установить aws-lambda в Cursor?

Добавьте файл правила по пути .cursor/rules/aws-lambda.mdc.

Что делает правило aws-lambda?

Оно задаёт рекомендации по структуре, настройке, безопасности, производительности и тестированию AWS Lambda-функций.

Как правило предлагает обрабатывать повторные события?

Оно рекомендует проектировать функцию идемпотентной и приводит пример с aws-lambda-powertools и хранилищем идемпотентности в DynamoDB.

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

aws-lambda.mdc · CC0-1.0
---
description: Definitive guidelines for writing secure, performant, and maintainable AWS Lambda functions using modern best practices.
globs: **/*
---
# aws-lambda Best Practices

This guide outlines the definitive best practices for developing AWS Lambda functions. Adhere to these principles to build reliable, cost-effective, and secure serverless applications.

## Code Organization and Structure

**1. Single Responsibility Principle:** Each Lambda function must perform one distinct task. Decompose complex workflows into smaller, focused functions orchestrated by services like AWS Step Functions.

**2. Initialize Outside the Handler:** Leverage execution environment reuse by initializing SDK clients, database connections, and heavy dependencies in the global scope.

❌ BAD:
```python
import boto3

def handler(event, context):
    s3 = boto3.client('s3') # Initialized on every invocation
    # ...
```

✅ GOOD:
```python
import boto3

s3 = boto3.client('s3') # Initialized once per execution environment

def handler(event, context):
    # s3 client is reused across invocations
    # ...
```

**3. Use Lambda Layers for Shared Code:** Keep deployment packages small and promote code reuse for common libraries and dependencies.

**4. Configuration via Environment Variables:** Never hardcode operational parameters. Use environment variables for dynamic configuration. For sensitive data, use AWS Secrets Manager or AWS Systems Manager Parameter Store.

**5. Structured JSON Logging:** Output logs in JSON format to CloudWatch. This makes logs easily queryable and analyzable. Use `aws-lambda-powertools` Logger utility.

❌ BAD:
```python
print(f"Processing event: {event}")
```

✅ GOOD:
```python
from aws_lambda_powertools import Logger
logger = Logger()

@logger.inject_lambda_context
def handler(event, context):
    logger.info("Processing event", event=event)
    # ...
```

**6. Infrastructure as Code (AWS CDK v2):** Define your Lambda functions and their surrounding infrastructure (API Gateway, DynamoDB, IAM roles) using AWS CDK v2. This ensures version control, repeatability, and safe deployments.

✅ GOOD:
```python
# Example using AWS CDK v2 (Python)
from aws_cdk import Stack, aws_lambda as lambda_
from constructs import Construct

class MyLambdaStack(Stack):
    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        lambda_.Function(self, "MyHandler",
            runtime=lambda_.Runtime.PYTHON_3_12,
            handler="index.handler",
            code=lambda_.Code.from_asset("lambda"), # 'lambda' directory contains index.py
            environment={
                "TABLE_NAME": "MyTable",
            },
            # Add more configurations like memory, timeout, IAM roles
        )
```

## Common Patterns and Anti-patterns

**1. Implement Idempotency:** Design functions to produce the same result even if invoked multiple times with the same input. Use `aws-lambda-powertools` for robust idempotency.

❌ BAD:
```python
# No idempotency check, might process duplicate events
def handler(event, context):
    order_id = event['detail']['orderId']
    # Process order, could be duplicated
    # ...
```

✅ GOOD:
```python
from aws_lambda_powertools.utilities.idempotency import idempotent
from aws_lambda_powertools.utilities.idempotency.persistence import DynamoDBPersistenceLayer
import os

persistence_layer = DynamoDBPersistenceLayer(table_name=os.environ["IDEMPOTENCY_TABLE"])

@idempotent(persistence_layer=persistence_layer)
def handler(event, context):
    order_id = event['detail']['orderId']
    # Process order, guaranteed to run once
    # ...
```

**2. Stateless Functions:** Functions must not rely on mutable local state between invocations. Any mutable data belongs in external, durable storage (e.g., DynamoDB, S3).

**3. Orchestrate with Step Functions:** For complex, multi-step workflows, use AWS Step Functions to manage state and coordination. Keep individual Lambda functions simple.

## Performance Considerations

**1. Optimize Memory and CPU:** Memory allocation directly impacts CPU. Use the AWS Lambda Power Tuning tool to find the optimal memory configuration for your function.

**2. Keep Deployment Packages Small:** Minimize cold start times by reducing package size. Use Lambda Layers and only include necessary dependencies.

**3. Use Keep-Alive for Persistent Connections:** Prevent idle connections from being purged, especially for HTTP clients.

✅ GOOD:
```python
import http.client
import ssl

# Global scope for connection reuse
http_client = http.client.HTTPSConnection("example.com", context=ssl._create_unverified_context())

def handler(event, context):
    http_client.request("GET", "/api/data")
    response = http_client.getresponse()
    # ...
```

## Common Pitfalls and Gotchas

**1. Over-privileged IAM Roles:** Apply the principle of least privilege. Grant only the minimum necessary permissions to your function's execution role.

❌ BAD:
```json
{
  "Effect": "Allow",
  "Action": "s3:*", // Too broad
  "Resource": "*"
}
```

✅ GOOD:
```json
{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:PutObject"
  ],
  "Resource": "arn:aws:s3:::my-specific-bucket/*" // Specific bucket and actions
}
```

**2. Lack of Input Validation:** Always validate and sanitize all incoming event data to prevent injection attacks and unexpected behavior. Use libraries like Pydantic or `aws-lambda-powertools` Parser utility.

**3. Recursive Invocations:** Avoid functions calling themselves directly or indirectly, as this can lead to infinite loops and escalated costs.

**4. Unhandled Errors:** Ensure all potential errors are caught and handled gracefully. Throw explicit exceptions for unrecoverable issues. Use `async/await` for asynchronous operations.

## Testing Approaches

**1. Unit Testing:** Focus on testing the core business logic of your function in isolation, mocking AWS service interactions.

**2. Integration Testing:** Test your function's interactions with actual AWS services. Use ephemeral resources provisioned by CDK.

**3. End-to-End Testing:** Simulate real-world scenarios, testing the entire flow from event source to final outcome.

**4. Local Development and Testing:** Utilize tools like AWS SAM CLI or LocalStack to test functions locally before deployment.

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

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

Все правила IDE по теме «Облака: AWS, Azure, GCP» →
aws-lambda-python-integration giuseppe-trisciuoglio Подсказывает агенту, как писать и разворачивать Python-функции в AWS Lambda: Chalice или чистый Python, холодный старт, API Gateway и ALB. CX Codex +1 3 600установок connecting-lambda-to-dynamodb aws Помогает связать функцию AWS Lambda с таблицей DynamoDB. Настраивает роли IAM, потоки DynamoDB Streams и триггеры обработки событий. CX Codex +1 6 500установок aws-lambda-microvms aws Скилл для сборки, запуска и отладки AWS Lambda MicroVMs на базе Firecracker с изоляцией сессий до 8 часов и возобновлением работы из снимков памяти. CX Codex +1 5 600установок aws-lambda-functions aj-geddes Скилл помогает агенту создавать и разворачивать функции AWS Lambda: триггеры, права, слои, переменные окружения. CX Codex +1 614установок aws-development Mindrally Скилл задаёт агенту правила разработки на AWS: Lambda, CDK, SAM, DynamoDB, IAM и serverless-архитектура через Infrastructure as Code. CX Codex +1 701установок aws-secrets-manager devops-skills Скилл для работы с AWS Secrets Manager: создаёт секреты, настраивает ротацию и подключает их к приложениям. CX Codex +1 335установок

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

Весь набор →
azure-pipelines Задаёт правила написания YAML-пайплайнов для Azure DevOps: многостадийные сборки, шаблоны, кеширование и безопасность секретов. ★ 3 580звёзд репо axios Задаёт ИИ-агенту в Cursor единый стиль работы с axios: общий инстанс, модули API, перехватчики и отмена запросов. Пригодится, когда компоненты уже пестрят разными вызовами. ★ 3 580звёзд репо aws Задаёт агенту стандарты разработки на AWS: только CDK v2, переиспользование окружения Lambda, идемпотентность и минимальные права IAM. ★ 3 580звёзд репо aws-rds Набор инструкций для Cursor по безопасной работе с AWS RDS. Помогает писать чистый SQL, изолировать сетевой доступ и защищать учётные данные. ★ 3 580звёзд репо aws-ecs Правило для Cursor с набором требований к контейнерам на AWS ECS: неизменяемые образы, секреты из Secrets Manager, логи в stdout. Пригодится, когда агент пишет Dockerfile и task definition. ★ 3 580звёзд репо aws-dynamodb Задаёт стандарты работы с AWS DynamoDB через AWS SDK v3 в Cursor. Помогает проектировать single-table схемы и выносить запросы в слой доступа к данным. ★ 3 580звёзд репо aws-cli Правило задаёт практики работы с AWS CLI: разделение профилей, проверку доступа и обработку JSON. Пригодится для скриптов и CI/CD, которые обращаются к AWS. ★ 3 580звёзд репо aws-amplify Правило задаёт Cursor стиль работы с AWS Amplify Gen 2: отдельные файлы ресурсов, модульные функции, типизированные запросы к данным. Пригодится, если бэкенд на Amplify растёт и хочется держать его в порядке. ★ 3 580звёзд репо

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

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