如何连接到 Fargate 上的 ECS 服务 运行?

How do I connect to an ECS service running on Fargate?

我正在构建一个 slack 应用程序,我的应用程序应该接收来自 slack 的 webhook 调用。所以我需要给 Slack "endpoint URL for my service"

我不确定我是否了解我需要将哪些 AWS 模块组合在一起才能完成这项工作。 到目前为止,我已经使用 Fargate 配置了我的服务,它在 ECS 上 运行 有 1 个任务。

我不太确定如何将 Internet (slack) 成功连接到我的容器实例。如何创建一个 slack 可以向其发送请求的 "endpoint"?我相信我需要为此使用 API 网关,但我不确定我应该如何配置 API 网关以便将我的 URL 重定向到我的 ECS 服务...?

备注:

我不确定是否有其他选择,但是在 fargate 上设置服务时,为了接收流量,您需要

  • 要有一个负载均衡器(ALB 或 NLB 都可以)
  • 如果是 ALB,必须创建目标组 "IP"
  • 只有在创建服务期间,您才可以select将您的容器放在目标组或 ALB 后面

例如,要分发来自目标组的流量,您可以使用它来配置服务

"loadBalancers": [
        {
            "containerName": "your-container-name-app",
            "containerPort": 80,
            "targetGroupArn": "arn:aws:elasticloadbalancing:eu-central-1:account-id:targetgroup/targetgroup-name/RANDOM-ID"
        }
    ],

像这样创建目标组

aws elbv2 create-target-group \
--name targetgroup-name \
--protocol HTTP \
--port 80 \
--vpc-id vpc-YOUR_VPC_ID \
--health-check-protocol HTTP \
--health-check-path /healthcheck \
--target-type ip

因此,您基本上会使用负载均衡器 DNS 将流量路由到您的实例。使用ALB,您可以很容易地截获某条路径(例如/slack/*)路由到您特定的目标群体,因此同一个ALB可以用于多个不同的服务。

但是你需要一个负载均衡器,而且据我所知不能直接以 Fargate 容器为目标。