Демистификация раздела глобальных переменных шаблона AWS SAM: подробное руководство

Модель бессерверных приложений AWS (SAM) — это мощная платформа для определения бессерверных приложений на AWS. Одним из ключевых компонентов шаблона SAM является раздел «Глобальные данные», который позволяет вам определять общие свойства и конфигурации, которые применяются к нескольким ресурсам в вашем бессерверном приложении. В этой статье мы рассмотрим различные методы использования раздела Globals в шаблоне AWS SAM с примерами кода.

Метод 1: определение глобальных переменных для всех ресурсов

Globals:
  Function:
    Timeout: 10
    Runtime: python3.8
    Environment:
      Variables:
        ENV_VAR: value

Метод 2: применение глобальных переменных к конкретным типам ресурсов

Globals:
  Api:
    Cors:
      AllowMethods: "'OPTIONS,POST,GET'"
      AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key'"

Метод 3: переопределение глобальных переменных на уровне ресурса

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: my-function/
      Timeout: 20 # Override the global function timeout

Метод 4. Использование внутренних свойств в глобальных переменных

Globals:
  Function:
    Timeout: !Ref MyFunctionTimeout

Метод 5. Использование управляемых политик AWS с глобальными переменными

Globals:
  Function:
    Role: arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Раздел Globals в шаблоне AWS SAM предоставляет мощный и эффективный способ определения общих свойств и конфигураций ресурсов в вашем бессерверном приложении. Используя раздел Globals, вы можете уменьшить дублирование и обеспечить согласованность во всем приложении. Мы изучили различные методы использования раздела «Глобальные переменные», включая определение глобальных переменных для всех ресурсов, применение глобальных переменных к конкретным типам ресурсов, переопределение глобальных переменных на уровне ресурсов, использование встроенных функций и использование политик, управляемых AWS. Использование этих методов упростит процесс разработки бессерверных приложений и улучшит вашу инфраструктуру в плане написания кода.