【问题标题】:aws cdk push image to ecraws cdk 将图像推送到 ecr
【发布时间】:2021-07-27 05:44:08
【问题描述】:

我正在尝试做一些看起来相当合乎逻辑和直截了当的事情。

我正在使用 AWS CDK 来预置一个 ecr 存储库:

     repository = ecr.Repository(
                            self, 
                            id="Repo", 
                            repository_name=ecr_repo_name,
                            removal_policy=core.RemovalPolicy.DESTROY
                            )

然后,我有一个 Dockerfile,它位于我的项目的根目录中,我试图将其推送到部署中的同一个 ECR 存储库。

我在相同的服务代码中使用:

    assets = DockerImageAsset(
            self, 
            "S3_text_image", 
            directory=str(Path(__file__).parent.parent),
            repository_name=ecr_repo_name
            )

部署正常并继续进行并创建 ECR 存储库,但映像被推送到默认位置 aws-cdk/assets

如何使部署将我的 Dockerfile 发送到我希望它所在的确切 ECR 存储库?

【问题讨论】:

    标签: amazon-web-services docker aws-cdk amazon-ecr


    【解决方案1】:

    AWS CDK 弃用了 DockerImageAsset 上的 repositoryName 属性。 GitHub 上存在一些引用该问题的问题。请参阅其中一位开发人员的this comment

    目前 CDK 带有 2 个资产系统:

    旧版(目前仍是默认设置),您可以在其中为每个资产指定一个 repositoryName,CLI 将创建并推送到您命名的任何 ECR 存储库。

    新的(将来将成为默认),其中将通过执行 cdk 引导创建单个 ECR 存储库,并将所有图像推送到其中。 CLI 将不再创建存储库,它必须已经存在。 IIRC 这样做是为了限制部署所需的权限。 @eladb,你能帮我记住我们为什么选择这样做吗?

    有一个新构造请求,允许您部署到位于(aws-ecr-assets) ecr-deployment #12597 的自定义 ECR 存储库。

    用例

    我想使用此功能将我的本地图像源代码完全部署到 ECR,使用我之前在我的 CDK 应用程序中创建的 ECR 存储库或更重要的是在应用程序外部使用 arn 创建。最大的问题是由于审计和语义版本控制,图像无法完全抽象到 assets repo 中。

    如果您不想等待 CDK 团队实施新结构,也可以在 https://github.com/wchaws/cdk-ecr-deployment 找到第三方解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多