Serverless.com 使用 Bitbucket 管道

Serverless.com with Bitbucket Pipelines

我的 Serverless application that uses NodeJS. Everything builds just find in Bitbucket Pipelines 设置非常简单,除了通过 serverless deploy 的标准命令进行部署外,我收到以下错误消息:

User: arn:aws:iam::123456789012:user/bitbucket-build-user is not authorized to perform: cloudformation:DescribeStackResources on resource: 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

我在这里遗漏了什么吗?

由于 Serverless 使用 AWS CloudFormation 进行完全部署(您使用 serverless deploy 执行的部署),bitbucket-build-user 必须具有特定权限才能管理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 生成这些策略,而不是每次都手动编写它们。