未找到图像定义文件 imagedefinitions.json

Posted

技术标签:

【中文标题】未找到图像定义文件 imagedefinitions.json【英文标题】:Did not find the image definition file imagedefinitions.json 【发布时间】:2020-03-09 23:54:21 【问题描述】:

"无效的动作配置 在输入工件 ZIP 文件中找不到图像定义文件 imagedefinitions.json。验证文件是否存储在管道的 Amazon S3 工件存储桶中”

收到此错误,我没有在 AWS 中使用 codebuild 并且图像被直接推送到 ECR,我们使用 maven 构建该图像, 我已将 imagedefinitions.json 上传到 artifi 存储桶,我还压缩了该文件,但没有任何效果,

任何人都可以提出任何建议

【问题讨论】:

嘿@Akshay,您使用的是 CodePipeline 的 Deploy 阶段吗?如果是这样,您需要创建:具有 imagedefinitions 文件的源 s3 操作,或创建相同文件并将其包含在输出工件中的 CodeBuild 步骤。这里:docs.aws.amazon.com/AmazonECS/latest/developerguide/… 【参考方案1】:

当您使用 ECR 作为源时,ECR 会生成一个名为“imageDetail.json”的工件文件,其格式为 [1]。但是 ECS 部署阶段需要一个名为“imagedefinitions.json”的文件,其格式不同 [2]。

要提供所需的文件,请在源代码和部署之间添加一个 CodeBuild 步骤,并使用以下构建规范:(基本上是转换文件)

version: 0.2
phases:
    install:
        runtime-versions:
            docker: 18
    build:
        commands:
            - apt-get install jq -y
            - ContainerName="todo"
            - ImageURI=$(cat imageDetail.json | jq -r '.ImageURI')
            - printf '["name":"CONTAINER_NAME","imageUri":"IMAGE_URI"]' > imagedefinitions.json
            - sed -i -e "s|CONTAINER_NAME|$ContainerName|g" imagedefinitions.json
            - sed -i -e "s|IMAGE_URI|$ImageURI|g" imagedefinitions.json
            - cat imagedefinitions.json

artifacts:
    files:
        - imagedefinitions.json

重要 1:更新任务定义中存在的“ContainerName”

重要2:确保部署操作的输入工件是BuildArtifact。

    https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#file-reference-ecs-bluegreen https://docs.aws.amazon.com/codepipeline/latest/userguide/file-reference.html#pipelines-create-image-definitions

【讨论】:

很好地描述并且它有效。附带说明,“apt-get install jq -y”可能不需要,因为“jq”已经可用

以上是关于未找到图像定义文件 imagedefinitions.json的主要内容,如果未能解决你的问题,请参考以下文章

Vue和Typescript:未找到图像导入

Jcrop 和 IE9 图像文件未定义

在 PFQuery 中过滤未定义的文件

图像未按 XML ImageView 中的定义显示

在未找到android studio照片中将图像上传到网站

未找到 Firebase 对象