
Transforma plantillas SAM en recursos de CloudFormation, generando funciones Lambda, roles de IAM y políticas con las mejores prácticas serverless integradas.
La transformación de AWS Serverless Application Model (AWS SAM) es una macro de AWS CloudFormation que transforma plantillas de SAM en plantillas de CloudFormation.
Para usar la transformación de SAM, agrega AWS::Serverless-2016-10-31 a la sección Transform de tu plantilla de CloudFormation.
Los beneficios de usar la transformación de SAM incluyen:
Guarda lo siguiente como template.yaml:
Transform: AWS::Serverless-2016-10-31
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Runtime: nodejs24.x
Handler: index.handler
InlineCode: |
exports.handler = async (event) => {
console.log(event);
}
Y despliégala con la SAM CLI:
sam sync --stack-name sam-app
El recurso AWS::Serverless::Function creará una función de AWS Lambda que registra los eventos que recibe.
Internamente, la plantilla se transforma en el equivalente JSON de la siguiente plantilla de CloudFormation:
Resources:
MyFunction:
Type: AWS::Lambda::Function
Properties:
Code:
ZipFile: |
exports.handler = async (event) => {
console.log(event);
}
Handler: index.handler
Role: !GetAtt MyFunctionRole.Arn
Runtime: nodejs24.x
Tags:
- Key: lambda:createdBy
Value: SAM
MyFunctionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Tags:
- Key: lambda:createdBy
Value: SAM
Para una introducción más detallada, consulta este tutorial en la Guía para desarrolladores.
Necesitarás tener Python 3.8+ instalado.
Crea un entorno virtual:
python3 -m venv .venv
source .venv/bin/activate
Configura las dependencias:
make init
Ejecuta las pruebas:
make pr
Consulta DEVELOPMENT_GUIDE.md para obtener más instrucciones de desarrollo, y CONTRIBUTING.md para conocer las pautas de contribución.
La mejor forma de interactuar con el equipo es a través de GitHub. Puedes crear un issue o iniciar una discusión.
También puedes unirte al canal #samdev en Slack.