На этапе конвейера ошибок «Безсерверное развертывание» говорится: «IamRoleLambdaExecution - превышен максимальный размер политики 10240 байт для роли XXXXX» - PullRequest
0 голосов
/ 13 февраля 2019

Когда я пытаюсь отправить мой новый API в AWS с помощью Bitbucket, конвейер завершается с ошибкой на этапе развертывание без сервера и говорит:

IamRoleLambdaExecution - максимальный размер политикиПревышено 10240 байт для роли XXXXXX

Последняя успешно созданная роль XXXXXX имеет следующий контент:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "logs:CreateLogStream"
            ],
            "Resource": [
                "arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname1:*“,
                 …
                "arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname50:*“           
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname1:*“,
                 …
                "arn:aws:logs:eu-central-1:123456789012:log-group:/aws/lambda/functionname50:*“           
            ],
            "Effect": "Allow"
        }
    ]
}

Когда я удаляю все переводы строк и пробел, я получаю чуть меньше 10240буквы и знаки.Таким образом, я почти уверен, что большое количество разрешений журнала в моей роли - моя проблема.

Когда я удаляю одну из моих функций, она работает и API get развертывается.Когда я добавляю еще одну функцию, она снова показывает ту же ошибку.

Я использую следующие плагины: serverless-plugin-browserify, serverless-offline, serverless-domain-manager, serverless-plugin-split-stacks, serverless-openapi-документации

Я ищу решение и пробую почти неделю.Кто-нибудь знает, как мне избавиться от этой проблемы?

1 Ответ

0 голосов
/ 04 марта 2019

Наконец я нашел решение.Это плагин под названием serverless-plugin-custom-role, который разделяет одну большую роль IAM для сервиса на несколько небольших сервисов, по одному для каждой функции.

Плагин можно найти здесь: https://www.npmjs.com/package/serverless-plugin-custom-roles

И спасибо Майкону Виане Бордин за его статью, которая указала мне на решение и объяснила проблему: https://medium.com/@mayconbordin/lessons-learned-building-a-large-serverless-project-on-aws-74d40f5b0b46

...