amazon-web-services - aws cdk 将图像推送到 ecr
问题描述
我正在尝试做一些看起来相当合乎逻辑和直截了当的事情。
我正在使用 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 存储库?
解决方案
AWS CDK 贬低repositoryName
了DockerImageAsset
. GitHub 上存在一些引用该问题的问题。请参阅其中一位开发人员的评论:
目前 CDK 带有 2 个资产系统:
旧版(目前仍然是默认设置),您可以在其中为每个资产指定一个 repositoryName,CLI 将创建并推送到您命名的任何 ECR 存储库。
新的(将来将成为默认),其中将通过执行 cdk 引导创建单个 ECR 存储库,并将所有图像推送到其中。CLI 将不再创建存储库,它必须已经存在。IIRC 这样做是为了限制部署所需的权限。@eladb,你能帮我记住为什么我们选择这样做吗?
有一个新构造请求,允许您部署到(aws-ecr-assets) ecr-deployment #12597的自定义 ECR 存储库。
用例
我想使用此功能将我的本地图像源代码完全部署到 ECR,使用我之前在我的 CDK 应用程序中创建的 ECR 存储库或更重要的是在应用程序外部使用 arn 创建。最大的问题是由于审计和语义版本控制,图像无法完全抽象到资产仓库中。
如果您不想等待 CDK 团队实施新结构,也可以在https://github.com/wchaws/cdk-ecr-deployment找到第三方解决方案。
推荐阅读
- google-cloud-platform - I wonder if I can perform data-pipeline by directory of a specific name with DataFusion
- android - 使用 Mockito 进行 Android MVVM 测试,模拟 repository.observeValue() 有问题
- python - 如何使用 okhttp3 连接到烧瓶套接字后端
- deep-learning - 如何为 Kohonen 的 SOM 选择合适的网格数?
- php - 使用 PHP 从 Blob 加载 PNG 的问题
- ruby-on-rails - Rails 6:如何禁用动作邮箱和动作文本加载到内存中?
- pandas-groupby - Groupby id 并从每个不同列中的 id 获取每个字符串
- c++ - 音频处理块的 DRY 原理
- javascript - Typescript:泛型接口扩展
- python-3.x - Python全局变量在Django中不起作用