标签: amazon-ecs

AWS ALB 解析为 2 个 IP。这些是什么?

我已经为我的应用程序设置了 AWS ALB。ALB 连接到具有 2 个实例的 AWS ECS 集群。这 2 个实例位于私有子网中。当我解析 ALB DNS 名称的 IP 时,我得到 2 个 IP。这些 IP 可用于访问我的应用程序。

这些IP是什么?我在 ALB 控制台或 ECS 控制台中找不到任何这些 IP。

我计划为此 ALB 创建我自己的域名,但我没有使用 AWS Route53。我打算使用我自己的域名或我已经拥有的子域。所以我想检查这些IP是ALB的IP还是我底层EC2实例的IP。

任何有关 ALB IP 的信息将不胜感激。

amazon-web-services amazon-ecs amazon-alb

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

如何使用 cloudformation 模板在 ECR 上拉取 docker 镜像

我想使用托管在 ECR 上的 docker 映像,并且我想使用 cloudformation 模板自动执行拉取操作。

我附加了具有 ECR 对 ec2 实例的完全访问权限的 IAM 角色,但它不起作用。

我正在做docker pull 1234567897.dkr.ecr.us-west-2.amazonaws.com/repo:tag,我收到错误Error response from daemon: Get https://1234567897.dkr.ecr.us-west-2.amazonaws.com/repo:tag/manifests/latest: no basic auth credentials

amazon-ec2 amazon-web-services amazon-cloudformation amazon-ecs

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

没有 ELB 的 ECS 任务的 HealthCheck

我们有一个运行在 ECS 集群中的 Docker 容器(Spring Boot)。我们在没有 Elastic Load Balancing 的情况下运行它。

我们希望在不停机的情况下更新服务,因此当新任务正常运行时,旧任务停止。我们一直在尝试在任务定义上添加健康检查,但它拒绝工作。我已经尝试过这些基本的健康检查命令。

[ "CMD-SHELL","exit 0" ]
[ "CMD-SHELL","exit 1" ]
Run Code Online (Sandbox Code Playgroud)

我希望前者会导致一个健康状况良好的任务,而后者会导致健康检查失败..在这两种情况下,新任务都可以正常启动,但健康状况未知。

这与我们不使用 ELB 有关系吗?文档不是很好,我的谷歌搜索没有返回任何有用的东西。

amazon-ecs

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

ECS 容器中的 HEALTHCHECK

我正在努力为 Amazon ECS 中的任务定义内的容器设置正确的 HEALTHCHECK。

我尝试了多种解决方案,但无法让最简单的“始终正确”的健康检查真正起作用。

我的健康检查看起来像这样:

[ "CMD-SHELL", "echo"]
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该总是产生一个健康的容器,但不幸的是,我总是处于不健康状态。当我对不健康的容器进行 docker 检查时,我得到以下信息

[ec2-user@ip-10-0-0-77 ~]$ docker inspect 8f14979ae4eb
[
    {
        "Id": "8f14979ae4eb4e16ec26a4ac886d29b29f5666e5f00d41c56d25f5efe0c7d57e",
        "Created": "2018-05-15T08:55:50.399791936Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "echo \"The application will start in ${JHIPSTER_SLEEP}s...\" &&     sleep ${JHIPSTER_SLEEP} &&     java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.war"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 783,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-05-15T08:55:51.049068973Z",
            "FinishedAt": "0001-01-01T00:00:00Z",
            "Health": {
                "Status": "starting",
                "FailingStreak": 2,
                "Log": [
                    {
                        "Start": …
Run Code Online (Sandbox Code Playgroud)

docker amazon-ecs

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

AWS 代码构建错误:无法连接到 docker 守护进程

我试图使用 aws 代码构建服务构建 docker 镜像,然后将其推送到 ECR。我用于它的命令"buildspec.yml"在下面指定。

version: 0.2
phases:
  install:
    runtime-versions:
        docker: 18
 pre_build:
      - $(aws ecr get-login --no-include-email --region us-east-1)
      - REPOSITORY_URI=XXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/devopswebbuild
      - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
      - IMAGE_TAG=${COMMIT_HASH:=latest}
  build:
    commands:
      - docker build -t $REPOSITORY_URI:latest .
      - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
  post_build:
    commands:
      - docker push $REPOSITORY_URI:latest
      - docker push $REPOSITORY_URI:$IMAGE_TAG


Run Code Online (Sandbox Code Playgroud)

但是我在构建过程中遇到错误,docker 命令无法连接到 docker daemon。请帮助我解决这些问题。

Docker 构建项目配置详细信息如下:

代码

构建错误详细信息如下:

在此处输入图片说明

amazon-web-services docker amazon-ecs

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

当我将自动扩展组附加到 ECS 服务时,Terraform 返回“不支持的服务命名空间、资源类型或可扩展维度”

在我的 terraform 代码中,我尝试使用aws_autoscaling_target.

resource "aws_appautoscaling_target" "service_app_asg_target" {
  resource_id = "${aws_ecs_service.service_app.arn}"
  min_capacity = 2
  max_capacity = 6
  role_arn = "${aws_iam_role.ecs_autoscale_role.arn}"
}
Run Code Online (Sandbox Code Playgroud)

当我应用这个时,亚马逊给了我错误

不支持的服务命名空间、资源类型或可扩展维度

我的附件有什么问题吗?

amazon-web-services terraform amazon-ecs

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

我的 ECS 服务是否需要内部负载均衡器?

我有一个ECS包含 3 个服务( )的集群FARGATE,这 3 个服务位于私有子网中。1 是可通过面向 Internet 的负载均衡器公开访问的 Web 应用程序,另外 2 个只能从 Web 应用程序访问。对于内部通信,我使用服务发现名称。 在此输入图像描述

一切正常,但现在我正在争论是否需要在 Web 应用程序和 2 个内部服务之间设置一个内部负载均衡器,以防它们横向扩展/收缩。那么,如果我的一项内部服务横向扩展并且我使用服务发现名称进行内部通信,这就足够了吗?或者,我是否需要一个内部负载均衡器来将流量路由到不同的服务实例?

这有道理吗?
在此输入图像描述

load-balancing amazon-web-services amazon-ecs aws-fargate

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

Amazon ECS 网络流量和端口

我创建了一个四子网 VPC,其中两个子网是私有的,两个是公共的。私有子网中的实例只有私有 IP,并通过 IGW/NAT GW 到达互联网。

我可以成功创建跨公有子网的 ECS 集群,但是当我在后端子网中创建集群时,集群实例无法在集群中注册。

我怀疑网络问题,我正在使用 Flowlogs 进行调试。同时,我希望有人能够阐明需要打开哪些端口,或涉及 ECS 集群管理的其他配置。

amazon-web-services amazon-ecs

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

如何在云形成中的同一 ECS 任务中从另一个容器引用容器主机名或 IP

我正在尝试设置一个 AWS ECS 集群,该集群有一个任务,该任务有 3 个单独的容器用于 prometheus、promscale 和 prometheus-ecs-discovery。

我试图弄清楚如何动态地将PROMSCALE_HOSTNAMEprometheus 容器中的环境变量设置为 promscale 容器的主机名或 ip,因为我最终在配置文件中使用此值,以便 prometheus 容器可以与 promscale 通信容器。

有什么办法可以做到这一点,或者我是否必须在我的 VPC 中创建一个负载均衡器来处理这个问题?

PrometheusTask:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: !Sub "${Stage}-prometheus"
      ContainerDefinitions:
        - Name: !Sub "${Stage}-prometheus-container"
          Image: myorg/prometheus:latest
          Environment:
            - Name: STAGE
              Value: !Ref Stage
            - Name: PROMSCALE_HOSTNAME # <-- I WANT THIS VALUE TO BE THE HOSTNAME OR IP OF THE PROMSCALE CONTAINER
              Value: !Sub "${Stage}-promscale-container"
        - Name: !Sub "${Stage}-prometheus-ecs-discovery-container"
          Image: myorg/prometheus-ecs-discovery:latest
          Environment:
            - Name: AWS_REGION
              Value: !Ref AWS::Region
        - …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services docker amazon-ecs

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

如何在AWS上创建私有暂存环境?

我的小公司正在 AWS 上开发一个 Web 应用程序,使用 VPC 和 EC2 容器服务,并使用应用程序负载均衡器将流量引导至我们的应用程序。我已经启动并运行了环境,但我想保护它,以便只有我们公司的人员可以访问它。我不太确定理想的解决方案是什么——其他人是如何解决这个问题的?

amazon-web-services amazon-ecs

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