我正在尝试在 aws-ecs-fargate-1.4.0 平台上运行一个私有存储库。
对于私有存储库身份验证,我遵循了文档并且运行良好。
以某种方式更新现有服务多次后,它无法运行任务并抱怨错误,例如
ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to get registry auth from asm: service call has been retried 1 time(s): asm fetching secret from the service for <secretname>: RequestError: ...
我没有更改它ecsTaskExecutionRole,它包含获取秘密值所需的所有策略。
我收到“不支持一项或多项请求的功能”。尝试从 AWS FARGATE 上的 Amazon EFS 挂载卷时出错。
我正在 ECS 集群上运行 Docker 映像,以对其进行 shell 并运行一些简单的测试。但是当我运行这个时:
aws ecs execute-command  \
  --cluster MyEcsCluster \
  --task $ECS_TASK_ARN \
  --container MainContainer \
  --command "/bin/bash" \
  --interactive
我收到错误:
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
An error occurred (TargetNotConnectedException) when calling the ExecuteCommand operation: The execute command failed due to an internal error. Try again later.
我可以确认任务+容器+代理都在运行:
aws ecs describe-tasks \
  --cluster MyEcsCluster \
  --tasks $ECS_TASK_ARN \
  | jq '.'
aws ecs execute-command  \
  --cluster …我尝试在AWS Fargate上设置一个小例子,并尝试在那里有一个带有一个数据库容器的应用程序容器.
任务定义启动两个容器,但我的app容器失败了getaddrinfo ENOTFOUND db db:3306.因此,我的应用程序容器找不到数据库容器.
由于Fargate不允许Docker容器的"链接",我想知道他们如何相互通信.数据库容器的名称db带有端口3306,我的app容器配置为使用它.
不幸的是,定义容器的链接不适用于Fargate,但仅适用于"oldschool"ECS/EC2.
在本地的docker-compose设置中,它以这种方式工作.
我对这个 Docker 世界还很陌生,我正在尝试将图像(nodejs-typescript 服务)从 aws ECR 部署到 aws ECS,但是当我在集群内创建服务时,会出现此错误,并且任务永远不会运行:
exec /usr/local/bin/docker-entrypoint.sh: exec format error
我的 Dockerfile 如下所示:
FROM node:lts-alpine
WORKDIR /usr/app
COPY package*.json ./
COPY tsconfig*.json ./
RUN yarn install --quiet
RUN yarn global add pm2
COPY . .
RUN yarn build
CMD ["pm2-runtime", "build/src/localServer.js"]
当我构建映像并运行它时,它在我的电脑上运行良好:
FROM node:lts-alpine
WORKDIR /usr/app
COPY package*.json ./
COPY tsconfig*.json ./
RUN yarn install --quiet
RUN yarn global add pm2
COPY . .
RUN yarn build
CMD ["pm2-runtime", "build/src/localServer.js"]
任务定义在 Linux/X86_64 上运行。
有什么建议或提示可以找出问题所在吗?谢谢!
编辑:当我像这样向 Dockerfile …
我在Fargate任务定义中有2个容器.其中一个容器是数据库服务器.我想要保留数据目录.但是,在任务定义中设置卷时,Fargate不支持"源路径"字段.有谁知道在Fargate建立持久性的人?
我正在尝试使用ECS Fargate设置计划任务,但我无法弄清楚它为什么没有运行.我可以确认任务正常使用RunTask,但当我尝试按计划触发它时,我得到的是一堆'FailedInvocations',没有任何解释.
我知道虽然规则被触发所以这是一个好兆头.请参见下面的截图:
但每次触发时都会出现'FailedInvocation'.这是调度规则:
ecsEventRole只有ecs:runTask以下内容的默认权限:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
我的预感说这ecsEventsRole没有足够的权限.我应该尝试给它那些ecsTaskExecutionRole吗?
谢谢
编辑:现在支持us-east-1区域.看评论.
目前我正在研究如何在 AWS 上编排我们的 dockerised 微服务。ECS 的 Fargate 选项看起来很有希望消除管理 EC2 实例的需要。
尽管在 Fargate 中启动“任务”所需的时间出奇地长,即使是简单的单容器设置也是如此。60 秒到 90 秒对于我们的 Docker 应用程序镜像来说是典型的。我听说这可能需要更多的时间,比如几分钟左右。
所以问题是:虽然 Docker 容器通常可能会在几秒钟内启动,但在 Fargate 情况下,这种开销的确切原因是什么?
PS 相关问题的搜索返回这样的选项:
但即使在没有部署负载均衡器的最简单的配置中并假设 Docker 镜像未缓存在 ECS 中,在 Fargate 中使用单个 Docker 镜像启动任务(约 60 秒)仍然比启动相同的 Docker 慢至少约 2 倍裸 EC2 实例上的映像(25 秒)
我对整个无服务器环境都很陌生,而且我正试图在使用Fargate和Lambda时解决这个问题.
我知道Fargate是ECS的无服务器子集,Lambda也是无服务器的,但是由事件驱动.但我希望能够以简单的方式向其他熟悉容器的人解释这两种范例,而不是那些使用AWS和无服务器的人.
目前,我们有几个物理服务器负责接收文本文件,解析它们,并用结果填充几个数据库表.根据我的理解,我认为这将是一个更适合Lambda的用例,因为解析文本文件的过程是由计划触发的,不会长时间运行,并且在不使用时会减少.
但是,如果我们要移植一个接收API调用的服务器,我们可能会想要使用Fargate,因为我们总是需要至少一个映像实例启动并运行.
就容器而言,如果容器的设计是这样设计的话,可以安全地说:
docker run <some_input>
然后这是Lambda的工作.
但是,如果容器设计为执行以下操作:
docker run --expose 80
然后这是Fargate的工作.
这是一个很好的比喻吗?
我按照以下步骤使用连接到EC2容器实例,https: //docs.aws.amazon.com/AmazonECS/latest/developerguide/instance-connect.html想知道如何连接到FARGATE管理的容器实例.