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 для генерации этих политик вместо того, чтобы каждый раз писать их вручную.