При создании ресурсов с помощью файла serverless.yml возникает проблема с созданием имени пула идентификаторов. Потому что имя нашего сервиса содержит , и мы добавляем его ко всем ресурсам, созданным в AWS. Однако имя пула удостоверений может содержать только цифры, буквы, символы подчеркивания и пробелы.

// serverless.yml
service: hello-world
provider:
  name: aws
  stage: dev
custom:
  stage: ${opt:stage, self:provider.stage}
  prefix: ${self:service}
  identity_pool_name: ${self:custom.prefix}-identity-pool
resources:
  Resources:
    CongitoIdentityPool:
      Type: AWS::Cognito::IdentityPool
      Properties:
        IdentityPoolName: ${self:custom.identity_pool_name}
        ...

Проблема в том, что мы не хотим переименовывать службу только для того, чтобы соответствовать требованиям к именованию пула удостоверений. Но хорошая новость заключается в том, что в файле yml есть функция Javascript, которая может выполнить эту работу! Он вернет запрограммированное значение обратно в файл конфигурации yml.

// serverless.yml (updated)
service: assets-manangement
provider:
  name: aws
  stage: dev
custom:
  stage: ${opt:stage, self:provider.stage}
  prefix: ${self:service}
resources:
  Resources:
    CongitoIdentityPool:
      Type: AWS::Cognito::IdentityPool
      Properties:
        IdentityPoolName: ${file(./config.js):identityPoolName}
        ...

В config.js у вас есть доступ к serverless объекту

Бинго! Теперь пул идентификаторов создан с допустимым именем hello_world_dev_identity_pool.