CodePipeline: CodeDeploy сообщает: «BundleType должен быть либо YAML, либо JSON» - PullRequest
0 голосов
/ 04 ноября 2018

CodeDeploy reports

appspec.yml is in the root dir of CodeCommit

buildspec.yml:

version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Python code...
      - python HelloWorld_tst.py
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - HelloWorld.py
    - appspec.yml
  discard-paths: yes

appspec.yml

version: 0.0
Resources:
    - autovisionfunction:
        Type: AWS::Lambda::Function
        Properties:
            Name: "autovisionfunction"
            Alias: "staging"
            CurrentVersion: "1"
            TargetVersion: "2"
            

Кажется, что в CodePipeline не удается найти appspec.yml

Я скачал zip артефакта из корзины S3, в нем есть appspec.yml.

enter image description here

Что мне не хватает?

Спасибо

Оля

1 Ответ

0 голосов
/ 06 ноября 2018

Я в настоящее время борюсь с той же проблемой.

После некоторого копания я обнаружил, что это выглядит как ограничение соединения двух сервисов (codebuild и codedeploy) через codepipelines

В настоящее время codebuild поддерживает только ZIP / TAR / TGZ в качестве типов пакетов (выходов), которые codedeploy не поддерживает

аналогичная тема с ответом AWS https://forums.aws.amazon.com/thread.jspa?messageID=864336

Обходной путь - вызвать развертывание кода с помощью codebuild :: project buildspec. Пример ниже

export REVISION="revisionType=S3,s3Location{bucket=$BUCKET_DEPLOYMENTS,key=$CODEBUILD_BUILD_ID/appspec.yml,bundleType=YAML}"

aws deploy create-deployment \
    --application-name=$APPLICATION_NAME \
    --deployment-group-name=$DEPLOYMENT_GROUP_NAME \ 
    --revision=$REVISION \
    --deployment-config-name='CodeDeployDefault.LambdaCanary10Percent30Minutes'

Надеюсь, это даст вам некоторые идеи о том, как снять ограничение

С уважением,

...