Buildspec.yaml per framework serverless nella pipleline di codice aws

Sep 17 2020

Sto provando le mie mani sulla pipeline CI / CD per framework serverless.

Avevo fatto una cosa simile per il framework SAM e l'avevo fatto funzionare. Il framework SAM prevede due fasi di pacchetto e distribuzione (la distribuzione è gestita dalle azioni di cloudformation)

version: 0.2
phases:
  install:
    runtime-versions:
        nodejs: 10
        #trying after adding the art effect in code deploy  
  build:
    commands:
      - npm install time
      - export BUCKET=lambda-loadeo-git
      - aws cloudformation package --template-file template.yml --s3-bucket $BUCKET --output-template-file outputtemplate.yml
artifacts:
  type: zip
  files:
    - template.yml
    - outputtemplate.yml

Ma non sono così sicuro di come debba funzionare il serverless. So che serverless aveva solo la fase di "distribuzione" e nessun pacchetto e tutto il resto.

Non so come viene gestita la distribuzione qui in CI / CD per serverless. che sta dando un errore al comando di distribuzione senza server.

Ecco il mio file buildspec.yaml

version: 0.1
phases:
  install:
    commands:
      - npm install
      - npm install -g mocha
      - npm install -g serverless
  build:
    commands:
      - serverless deploy 
  post_build:
    commands:

      - echo build complete

che sta tentando di distribuire questo modello:

service: serverless
frameworkVersion: '2'

provider:
  name: aws
  runtime: python2.7
  profile: default 


functions:
  getInfo:
    handler: handler.getInfo
    events:
     - http:
        path: users/info
        method: get

  createInfo:
    handler: handlerpost.createInfo
    events:
     - http:
        path: users/create
        method: post

  patchInfo:
    handler: handlerpatch.patchInfo
    events:
     - http:
        path: users/update
        method: patch

Qualcuno potrebbe aiutarmi con la costruzione e la distribuzione di parte di questo?

Risposte

1 Marcin Sep 17 2020 at 18:41

Basato sui commenti e sulla discussione in chat.

C'erano alcuni problemi che causavano problemi:

  1. Mancante serverless.yml. È stato risolto rinominando template.ymlin serverless.yml.
  2. Profilo errato nel provider serverless. È stato risolto rimuovendolo.
  3. Autorizzazione mancante nel ruolo CodeBuild. Questo problema è stato risolto aggiungendo al ruolo le autorizzazioni di codeformation, s3 e cloudwatch.