Serverless.com с конвейерами Bitbucket

У меня действительно простая настройка для моего приложения без сервера, которое использует NodeJS. Все сборки можно найти только в Bitbucket Pipelines, кроме развертывания с помощью стандартной команды serverless deployгде я получаю следующее сообщение об ошибке:

Пользователь: arn:aws:iam::123456789012: пользователь /bitbucket-build-user не авторизован для выполнения: cloudformation:DescribeStackResources на ресурсе: arn:aws:cloudformation:my-region: 123456789012:stack/mylambda-dev/*

Локально работает просто отлично. Вот конфигурация Трубопроводов:

image:
  name: mydocker/serverless-docker:latest
  username: $MY_DOCKER_HUB_USERNAME
  password: $MY_DOCKER_HUB_PASSWORD
  email: $MY_DOCKER_HUB_EMAIL

pipelines:
  default:
    - step:
        script:
          - npm install
          - npm run lint

  branches:
    master:
      - step:
          script:
            - npm install
            - npm run lint
            - serverless config credentials --overwrite --provider aws --key $MY_AWS_KEY --secret $MY_AWS_SECRET
            - serverless deploy

Есть что-то, чего я здесь не хватает?

1 ответ

Решение

Поскольку Serverless использует AWS CloudFormation для полного развертывания (которое вы делаете с serverless deploy), пользователь bitbucket-build должен иметь определенные разрешения для управления стеками CloudFormation. Таким образом, как минимум, вам нужно прикрепить политику, которая выглядит следующим образом:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:Describe*",
                "cloudformation:List*",
                "cloudformation:Get*",
                "cloudformation:PreviewStackUpdate",
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack",
                "cloudformation:DeleteStack"
            ],
            "Resource": "*"
        }
}

Взгляните на https://github.com/serverless/serverless/issues/1439 чтобы понять, какие разрешения могут понадобиться пользователю bitbucket-build-user.

Лично я просто использую https://github.com/dancrumb/generator-serverless-policy для генерации этих политик вместо того, чтобы каждый раз писать их вручную.

Другие вопросы по тегам