在尝试在 EC2 实例中运行任务时,我收到了这条可怕的错误消息。
Run tasks failed
Reasons : ["ATTRIBUTE"]
Run Code Online (Sandbox Code Playgroud)
像许多其他人一样,我被要求查看我发现此列表的任务的“requiresAttributes”部分:
"requiresAttributes": [
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.task-eni"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null, …Run Code Online (Sandbox Code Playgroud) 我和我的团队一直试图解决的问题涉及多个 ec2 实例,每个实例都有自己独立的并行访问同一个 S3 存储桶。当每个客户端尝试下载上述 s3 存储桶中的相同文件时,会出现竞争条件问题。每个客户端都试图读取文件,运行一些业务逻辑,然后删除文件。由于有很多延迟机会,竞争条件发生并且多个实例最终运行业务逻辑。
关于工程师如何使用他们的 s3 客户端实现锁定机制的一些建议将不胜感激。
我们集思广益的方法:将 .lock 文件上传到 s3 存储桶,其中包含有关当前持有锁的实例的信息。当持有锁的实例完成进程时,它就会删除它的锁。(上传锁定文件时会出现问题 - 锁定机制的竞争条件)。
最近,我在尝试找出一个可以支持我的“dockerized”Python Django 项目的云环境设置时遇到了困难。我的应用程序的架构很简单;我有一个 Web 服务、一个 Redis 服务和一个数据库服务(请参阅下面我的 compose yml 文件)。
我的困惑是找到将通过 docker compose yml 文件建立的本地设置移动到类似生产环境的正确路径。我非常喜欢 docker compose 实用程序,并希望在我的生产环境中使用类似的配置文件;然而,我发现云上大多数基于容器的方法都比这复杂得多...到目前为止,本指南是我最喜欢的,但它没有深入研究数据库和其他依赖的组件(这遗漏了必要的组件)实质内容!)。
问题:
我还发现 AWS 和 Heroku 缺乏我根据 docker 的流行程度所期望的共同功能。这是普遍持有的观点吗?Heroku 不帮助或提倡在容器中设置数据库,对于尝试使用 v3 编写的 docker-compose yml 文件的用户来说,AWS 仍然落后。
非常感谢任何建议...在过去的三个晚上我一直在努力,没有得出可靠的结论。
version: '3.3'
services:
db:
restart: always
image: postgres
networks:
- webnet
redis:
restart: always
image: redis:latest
expose:
- "6379"
networks:
- webnet
web:
restart: always
build: .
command: …Run Code Online (Sandbox Code Playgroud) 在尝试制作一个可以干净、独立启动的独立 JAR 时,我遇到了涉及 Jersey 和我想要的胖 JAR 的问题。最终的 jar 将被移动到 Docker 镜像。
我得到的错误本质上是这样的:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.glassfish.jersey.server.ResourceConfig]: Factory method 'jerseyResourceConfig' threw exception; nested exception is org.glassfish.jersey.server.internal.scanning.ResourceFinderException: java.io.FileNotFoundException: /dir/myproject-1.0.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
... 48 common frames omitted
Caused by: org.glassfish.jersey.server.internal.scanning.ResourceFinderException: java.io.FileNotFoundException: /dir/myproject/target/myproject-1.0.0-SNAPSHOT.jar!/BOOT-INF/classes (No such file or directory)
at org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:89)
at org.glassfish.jersey.server.internal.scanning.JarZipSchemeResourceFinderFactory.create(JarZipSchemeResourceFinderFactory.java:65)
at org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.addResourceFinder(PackageNamesScanner.java:282)
at org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.init(PackageNamesScanner.java:198)
at org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:154)
at org.glassfish.jersey.server.internal.scanning.PackageNamesScanner.<init>(PackageNamesScanner.java:110)
at org.glassfish.jersey.server.ResourceConfig.packages(ResourceConfig.java:680)
at org.glassfish.jersey.server.ResourceConfig.packages(ResourceConfig.java:660)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at …Run Code Online (Sandbox Code Playgroud) 我试图找出在本地环境中或在开发代码时使用Kubernetes部署的Docker容器中使用Java的最终最佳实践。在理想状态下,Java开发人员应该能够像python / javascript开发人员一样快地移动,但是我很难适应这种速度(甚至接近)。
目前,我有一个工作的手动部署的k8集群。通过Maven是手动(运行构建命令后,我的Java Spring项目建成mvn clean install),然后我运行一个脚本来使图像,在那之后我运行一个脚本来运行minkube(如果尚未运行),最后我不得不apply一部署清单文件(将容器启动到Pod中)。
我所缺少的:
令人遗憾的是,我很高兴使用Skaffold的工具不适用于Java。Java开发人员是否使用其他工具来使其本地部署超级快速并与DUCK语言(py,js)竞争?
我目前正在尝试在 AWS 上将 Apache Camel 与 S3 存储桶结合使用。目前,我们的代码库的每个环境都有 1 个存储桶(例如:开发存储桶、e2e 存储桶、生产存储桶)。
我们希望使用 1 个存储桶,其中包含多个目录,以避免混乱并巩固空间。然后我们可以将 Camel 指向端点内的一个文件夹来监听(似乎可行)。在尝试配置时,这已经变得非常成问题。Camel 似乎期望它可以连接的每个端点都有一个存储桶。
有人可以阐明这是否可行,或者是否有必要每个端点拥有 1 个存储桶?Camel文档没有说明是否可以。
docker ×3
java ×3
amazon-s3 ×2
apache-camel ×1
aws-ecs ×1
django ×1
jersey-2.0 ×1
kubernetes ×1
maven ×1
postgresql ×1
spring-boot ×1