Комплексное руководство: изучение методов и примеров кода в шаблонах SAM

Модель бессерверных приложений (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 и управлять ими.