Модель бессерверных приложений (SAM) — это платформа, предоставляемая Amazon Web Services (AWS), которая упрощает развертывание и управление бессерверными приложениями на AWS Lambda. С помощью SAM разработчики могут определять свои бессерверные ресурсы и их взаимосвязи, используя файл шаблона, написанный в формате YAML или JSON. В этой статье мы рассмотрим различные методы и предоставим примеры кода, которые помогут вам понять и использовать возможности шаблонов SAM для разработки бессерверных приложений.
Метод 1: определение функций AWS Lambda
Шаблоны SAM позволяют определять функции AWS Lambda и связанные с ними свойства. Вот пример:
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: my-lambda-function/
Handler: index.handler
Runtime: nodejs14.x
Метод 2: указание источников событий
Шаблоны SAM позволяют определить источники событий, которые запускают функции AWS Lambda. Вот пример источника событий API-шлюза:
Resources:
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: prod
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: my-lambda-function/
Handler: index.handler
Runtime: nodejs14.x
Events:
MyApiEvent:
Type: Api
Properties:
RestApiId: !Ref MyApi
Path: /my-endpoint
Method: get
Метод 3: определение ролей и политик AWS IAM
Шаблоны SAM позволяют определить необходимые роли и политики AWS Identity and Access Management (IAM) для ваших бессерверных ресурсов. Вот пример:
Resources:
MyLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: my-lambda-function/
Handler: index.handler
Runtime: nodejs14.x
Role: !GetAtt MyLambdaFunctionRole.Arn
MyLambdaFunctionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
Policies:
- PolicyName: MyLambdaFunctionPolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Resource: arn:aws:logs:*:*:*
Метод 4. Использование ресурсов AWS CloudFormation
Шаблоны SAM являются расширением AWS CloudFormation, поэтому вы можете использовать ресурсы CloudFormation наряду с ресурсами SAM. Вот пример использования ресурса корзины S3:
Resources:
MyS3Bucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-bucket
В этой статье мы рассмотрели различные методы и примеры кода для работы с шаблонами SAM. Мы рассмотрели определение функций AWS Lambda, указание источников событий, определение ролей и политик AWS IAM, а также использование ресурсов AWS CloudFormation в шаблонах SAM. Используя эти методы, вы можете легко и эффективно определять свои бессерверные приложения на AWS Lambda и управлять ими.