【问题标题】:CodePipeline: CodeDeploy reports "BundleType must be either YAML or JSON"CodePipeline:CodeDeploy 报告“BundleType 必须是 YAML 或 JSON”
【发布时间】:2019-04-07 17:34:22
【问题描述】:

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

我从 S3 存储桶下载了 artefact zip,里面有 appspec.yml。

我错过了什么?

谢谢

奥利亚

【问题讨论】:

  • 你确定文件扩展名必须是.yml吗? 12 年来,YAML 文件的 officially recommended extension 一直是 .yaml
  • 我尝试了所有可能的格式和扩展,问题仍然存在appspec.json appspec.yaml appspec.yml buildspec.yml HelloWorld_tst.py HelloWorld.py

标签: amazon-web-services aws-lambda aws-code-deploy aws-codepipeline


【解决方案1】:

我目前一直在努力解决同样的问题。

经过一番挖掘,我发现它似乎是通过代码管道链接两个服务(codebuild 和 codedeploy)的限制

目前 codebuild 仅支持 ZIP/TAR/TGZ 作为 codedeploy 不支持的捆绑类型(输出)

具有 AWS 响应的类似线程 https://forums.aws.amazon.com/thread.jspa?messageID=864336

解决方法是通过 codebuild::project buildspec 触发 codedeploy。下面的例子

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'

希望这能给您一些关于如何解决限制的想法

问候,

【讨论】:

  • 在 2020 年 11 月仍然相关,因为他们仍未解决此问题。非常感谢,这正是我们所需要的。
  • 在 2021 年仍然相关,因为他们仍未解决此问题。
猜你喜欢
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 2018-08-30
相关资源
最近更新 更多