小编Cha*_*Hey的帖子

AWS ECS:运行任务失败原因:[“ATTRIBUTE”]

在尝试在 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)

amazon-web-services aws-ecs

10
推荐指数
2
解决办法
4686
查看次数

AWS S3 客户端竞争条件解决方案

我和我的团队一直试图解决的问题涉及多个 ec2 实例,每个实例都有自己独立的并行访问同一个 S3 存储桶。当每个客户端尝试下载上述 s3 存储桶中的相同文件时,会出现竞争条件问题。每个客户端都试图读取文件,运行一些业务逻辑,然后删除文件。由于有很多延迟机会,竞争条件发生并且多个实例最终运行业务逻辑。

关于工程师如何使用他们的 s3 客户端实现锁定机制的一些建议将不胜感激。

我们集思广益的方法:将 .lock 文件上传到 s3 存储桶,其中包含有关当前持有锁的实例的信息。当持有锁的实例完成进程时,它就会删除它的锁。(上传锁定文件时会出现问题 - 锁定机制的竞争条件)。

java amazon-s3 race-condition

7
推荐指数
1
解决办法
6403
查看次数

使用 Django 和 Postgres 在 AWS 上生产 Docker:

最近,我在尝试找出一个可以支持我的“dockerized”Python Django 项目的云环境设置时遇到了困难。我的应用程序的架构很简单;我有一个 Web 服务、一个 Redis 服务和一个数据库服务(请参阅下面我的 compose yml 文件)。

我的困惑是找到将通过 docker compose yml 文件建立的本地设置移动到类似生产环境的正确路径。我非常喜欢 docker compose 实用程序,并希望在我的生产环境中使用类似的配置文件;然而,我发现云上大多数基于容器的方法都比这复杂得多...到目前为止,本指南是我最喜欢的,但它没有深入研究数据库和其他依赖的组件(这遗漏了必要的组件)实质内容!)。

问题:

  • 我应该放弃在生产环境中尝试使用 docker-compose 吗?
  • 我应该使用非容器化的数据库吗?如果不应该,如何将容器化 Web 服务配置到 Amazon RDS 实例?
  • 我应该将 docker-compose.yml 分解为单独的 docker 文件吗?我应该编写脚本来启动这些容器来支持环境吗?
  • 是否有我找不到做此类事情的可靠教程?我感到困惑的是,很多指南都过于简单,甚至对比“Hello World”更复杂的应用程序也没有帮助。

我还发现 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)

django postgresql amazon-web-services docker docker-compose

5
推荐指数
0
解决办法
713
查看次数

Spring Boot Java 项目上的 /BOOT-INF/classes (没有这样的文件或目录)

在尝试制作一个可以干净、独立启动的独立 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)

java maven docker jersey-2.0 spring-boot

5
推荐指数
1
解决办法
6450
查看次数

本地开发最佳实践:Java,Docker,Kubernetes

我试图找出在本地环境中或在开发代码时使用Kubernetes部署的Docker容器中使用Java的最终最佳实践。在理想状态下,Java开发人员应该能够像python / javascript开发人员一样快地移动,但是我很难适应这种速度(甚至接近)。

目前,我有一个工作的手动部署的k8集群。通过Maven是手动(运行构建命令后,我的Java Spring项目建成mvn clean install),然后我运行一个脚本来使图像,在那之后我运行一个脚本来运行minkube(如果尚未运行),最后我不得不apply一部署清单文件(将容器启动到Pod中)。

我所缺少的:

  1. 所有这些都是手动完成的(在创建代码之后,有一个清晰的空间可以自动化构建映像的过程,并可以使用新映像更新k8s)。
  2. 构建是手动指定的(Python在代码保存时重新启动。据我所知,在Java世界中没有热重装)。
  3. 我还没有看到本地开发环境和托管k8集群的云之间的集成。理想情况下,开发人员将在本地进行测试,直到他们准备将其部署到云中为止。准备就绪后,单击按钮并从远程注册表中读取群集可能会很棒,该群集可以获取Docker映像更改并重新加载。

令人遗憾的是,我很高兴使用Skaffold的工具不适用于Java。Java开发人员是否使用其他工具来使其本地部署超级快速并与DUCK语言(py,js)竞争?

java docker kubernetes

5
推荐指数
1
解决办法
667
查看次数

Apache Camel AWS S3 存储桶嵌套目录:

我目前正在尝试在 AWS 上将 Apache Camel 与 S3 存储桶结合使用。目前,我们的代码库的每个环境都有 1 个存储桶(例如:开发存储桶、e2e 存储桶、生产存储桶)。

我们希望使用 1 个存储桶,其中包含多个目录,以避免混乱并巩固空间。然后我们可以将 Camel 指向端点内的一个文件夹来监听(似乎可行)。在尝试配置时,这已经变得非常成问题。Camel 似乎期望它可以连接的每个端点都有一个存储桶。

有人可以阐明这是否可行,或者是否有必要每个端点拥有 1 个存储桶?Camel文档没有说明是否可以。

amazon-s3 apache-camel

1
推荐指数
1
解决办法
2613
查看次数