标签: ecs-taskdefinition

带有 GitHub Actions 的 Amazon ECS 在部署 ECS 任务定义时卡住

我正在使用GitHub 操作模板的 Amazon ECS“部署任务定义”操作来部署我的应用程序。有时会卡在这一步:

部署 Amazon ECS 任务定义

在终止之前,它可能会卡住很长时间(30 - 60 分钟)。我可以登录 ECS 中的 AWS 控制台并查看它创建的任务定义,然后从新创建的任务定义手动运行新任务。结果很好,因为我看到任务成功运行。

当我查看日志以了解为什么它首先卡住时,我看到了错误消息,例如:

(service myService) 无法放置任务,因为没有容器实例满足其所有要求。最接近的匹配(容器实例 id23244214)没有足够的可用 CPU 单元。

(service myService) 无法放置任务,因为没有容器实例满足其所有要求。最接近的匹配(容器实例 id23244214)没有足够的可用内存。

我的 EC2 实例上有 2 个 vCPU 和 2 (GiB) 内存,并且我的任务定义没有超出该限制。由于我可以在 ECS 仪表板中创建任务,因此 EC2 实例似乎并不缺乏内存或 VCPU。

最后,当我看到类似上面两条的错误消息时,我尝试通过 GitHub 再次重新部署。GitHub Action 正常传递所有作业,但它再次卡在任务定义步骤上。然后,在 Amazon ECS 控制台中最后一次内存/CPU 分配不足后,我停止接收任何事件日志。

它最终失败并显示错误消息:

错误:资源未处于 servicesStable 状态

这是我的任务

{
  "ipcMode": null,
  "executionRoleArn": null,
  "containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "environmentFiles": null,
      "logConfiguration": null,
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-ecs github-actions ecs-taskdefinition

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

如何在 ECS 任务定义中放置多行命令

我正在尝试在 docker 容器(ECS - Fargate)内运行 django 应用程序

但是,我无法弄清楚如何在Command任务定义部分运行多个命令,目前它的配置如下

在此输入图像描述

然而我的容器继续运行STOPPING,我什至看不到 CloudWatch 中的日志

在此输入图像描述

我如何让它正确执行?,非常感谢任何帮助

amazon-web-services amazon-ecs aws-fargate ecs-taskdefinition

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

属性验证失败,并显示消息不允许使用无关密钥

我收到以下错误

资源 mytaskdefinition 的属性验证失败,并显示消息:#/ContainerDefinitions/0:不允许使用无关密钥 [linuxParameters]

每个https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html linuxParameters是有效密钥。

正如错误所示,我的任务定义嵌套linuxParameters在 ContainerDefinitions 下。

amazon-ecs aws-cloudformation ecs-taskdefinition

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

将自定义conf文件传递给ECS任务定义

实际上,我有一个简单的用例,我必须在 ECS 任务定义中传递自定义配置文件。示例-假设我想在 ECS 集群中将 Nginx 作为服务运行,现在我必须将自定义 nginx.conf 传递给 ECS 任务定义。我无法找出任何可能的方法来做到这一点。我在 kubernetes 中使用配置映射和秘密做了同样的事情,然后将它们安装到 docker 容器。如何在 ECS 中实现相同的效果?

amazon-ecs ecs-taskdefinition

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

如何查看 ECS 服务的任务定义历史记录

有没有办法查看 ECS 服务的任务定义历史记录?可以轻松查看服务的当前任务定义以及任务的当前任务定义。但我看不到一种方法来查看先前向服务注册的任务定义是什么。我可以轻松查看我拥有的所有任务定义,但我不知道哪些任务定义注册到哪个服务。

由于 Jenkins 框中的作业历史记录,我们通常可以看到该版本。但我们最近遇到了一种情况,詹金斯没有我们想要回滚的历史记录。我们最终猜对了,因为递增的数字很容易猜到。但我不喜欢我们必须猜测。我在 CloudWatch 日志中看不到它。我可以在那里看到自动缩放事件,但看不到任务定义更改。

rollback amazon-web-services amazon-ecs aws-fargate ecs-taskdefinition

6
推荐指数
0
解决办法
1675
查看次数

AWS Elastic Beanstalk EFS 挂载错误:未知文件系统类型“efs”

我正在尝试使用 Dockerrun.aws.json 的任务定义将我的 EFS 安装到多 Docker Elastic Beanstalk 环境。另外,我已将 EFS 的安全组配置为接受来自 EC2(EB 环境)安全组的 NFS 流量。

但是,我面临着错误:

ECS 任务因以下原因停止:来自守护程序的错误响应:创建 ecs-awseb-SeyahatciBlog-env-k3k5grsrma-2-wordpress-88eff0a5fc88f9ae7500:VolumeDriver.Create:安装卷失败:安装:未知文件系统类型“efs”。

我正在使用 AWS 管理控制台上传此 Dockerrun.aws.json 文件:

{
  "AWSEBDockerrunVersion": 2,
  "authentication": {
    "bucket": "seyahatci-docker",
    "key": "index.docker.io/.dockercfg"
  },
  "volumes": [
    {
      "name": "wordpress",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-d9689882",
        "rootDirectory": "/blog-web-app/wordpress",
        "transitEncryption": "ENABLED"
      }
    },
    {
      "name": "mysql-data",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-d9689882",
        "rootDirectory": "/blog-db/mysql-data",
        "transitEncryption": "ENABLED"
      }
    }
  ],
  "containerDefinitions": [
    {
      "name": "blog-web-app",
      "image": "bireysel/seyehatci-blog-web-app",
      "memory": 256,
      "essential": false,
      "portMappings": [
        {"hostPort": 80, "containerPort": 80} …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services docker amazon-elastic-beanstalk amazon-efs ecs-taskdefinition

5
推荐指数
2
解决办法
2万
查看次数

是否可以从 ECS 中正在运行的任务中承担角色?

我正在寻找一个示例,说明如何在 ECS 内正在运行的应用程序中担任角色。

我有一个角色设置,并且已使用此处的设置将 roleARN 添加到任务定义中:https: //docs.aws.amazon.com/en_us/AmazonECS/latest/developerguide/task-iam-roles.html

然后我可以像往常一样承担应用程序逻辑中的角色吗?或者有什么特别需要的吗?

我可以使用此设置,但使用 IAM 用户,该用户具有在我的应用程序中用作凭据的密钥和访问密钥。通过上述设置可以将此身份验证切换到假设角色吗?

amazon-web-services amazon-ecs assume-role ecs-taskdefinition

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

日志驱动程序 awslogs 需要选项:awslogs-region、awslogs-group

我有一个 json 文件,内容如下AWS ECS Task definition

[
    {
      "name": "my-name",
      "image": "url",
      "cpu": 2,
      "dnsSearchDomains": null,
      "network_configuration":"awsvpc",
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 8080,
          "protocol": "tcp",
          "containerPort": 8080
        }
      ],
      "command": null,
      "linuxParameters": null,
      "environment": [],
      "resourceRequirements": null,
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [
        {
          "readOnly": null,
          "containerPath": "/fldr",
          "sourceVolume": "fldr"
        }
      ],
      "workingDirectory": null,
      "secrets": null,
      "dockerSecurityOptions": null,
      "memoryReservation": 128,
      "volumesFrom": [],
      "stopTimeout": null,
      "startTimeout": null,
      "firelensConfiguration": null,
      "dependsOn": null,
      "disableNetworking": null,
      "interactive": null,
      "healthCheck": null,
      "essential": …
Run Code Online (Sandbox Code Playgroud)

containers amazon-web-services amazon-cloudwatch terraform ecs-taskdefinition

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

如何在ECS任务定义命令中转义逗号

我有 docker 镜像和命令:

celery -A bits.payment_tracking.app:app worker -l debug -Q celery,reports --concurrency 3
Run Code Online (Sandbox Code Playgroud)

它在 docker 和 docker-compose 中完美运行。但它在 AWS ECS 任务定义中不起作用,因为 ECS 需要用逗号分隔来定义它,如下所示:

celery,-A,bits.payment_tracking.app:app,worker,-l,debug,-Q,celery,reports,--concurrency,3
Run Code Online (Sandbox Code Playgroud)

并且此命令不起作用,因为-Q celery,reportsECS 始终以逗号分隔。我知道很多解决方法,但我找不到一个问题的答案 - 如何在任务定义命令中转义逗号分隔?

感谢您的帮助。

amazon-ecs ecs-taskdefinition

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