CodePipeline:CodeDeploy 报告“BundleType 必须是 YAML 或 JSON”

Oly*_*lay 11 amazon-web-services aws-code-deploy aws-lambda aws-codepipeline

CodeDeploy 报告“BundleType 必须是 YAML 或 JSON”

appspec.yml 位于 CodeCommit 的根目录中

构建规范.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
Run Code Online (Sandbox Code Playgroud)

appspec.yml

version: 0.0
Resources:
    - autovisionfunction:
        Type: AWS::Lambda::Function
        Properties:
            Name: "autovisionfunction"
            Alias: "staging"
            CurrentVersion: "1"
            TargetVersion: "2"
            
Run Code Online (Sandbox Code Playgroud)

似乎在 CodePipeline 中找不到 appspec.yml

我已经从 S3 存储桶下载了人工制品 zip,里面有 appspec.yml。

在此处输入图片说明

我想念什么?

谢谢

奥利亚

小智 16

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

经过一番挖掘,我发现它看起来是通过代码管道链接两个服务(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'
Run Code Online (Sandbox Code Playgroud)

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

问候,

  • 到 2020 年 11 月仍然相关,因为他们仍然没有解决这个问题。非常感谢,这正是所需要的。 (3认同)
  • 到 2021 年仍然有意义,因为他们仍然没有解决这个问题。 (3认同)