amazon-web-services - 如何使 HTTP 调用到达亚马逊 AWS 负载均衡器后面的所有实例?

标签 amazon-web-services amazon-ec2 elastic-load-balancer

我有一个在 Amazon AWS Elastic Load Balancer 后面运行的 Web 应用程序,附加了 3 个实例。该应用程序有一个 /refresh端点重新加载引用数据。只要有新数据可用,就需要运行它,每周发生几次。

我一直在做的是为所有实例分配公共(public)地址,并独立刷新(使用 ec2-url/refresh )。我同意 Michael's answer on a different topic ,ELB 后面的 EC2 实例不应允许直接公共(public)访问。现在我的问题是如何制作 elb-url/refresh调用到达负载均衡器后面的所有实例?

如果我可以从多个实例收集 HTTP 响应,那就太好了。但我不介意现在盲目地进行刷新。

最佳答案

我解决这个问题的方法之一是

  • 将数据写入 AWS s3 存储桶
  • triggering a AWS Lambda function automatically from the s3 write
  • 使用 AWS 开发工具包从 Lambda 函数中识别附加到 ELB 的实例,例如使用 boto3 from python或 AWS Java SDK
  • 从 Lambda
  • 对单个实例调用/refresh
  • 确保在创建新实例时(由于自动缩放或部署),它会在启动期间从 s3 存储桶中获取数据
  • 确保实例所在的私有(private)子网允许来自附加到 Lambda 的子网的流量
  • 确保附加到实例的安全组允许来自附加到 Lambda 的安全组的流量

  • 该解决方案的主要优势是
  • 从数据写入 s3 的那一刻起,该过程就完全自动化,
  • 避免由于自动缩放/部署导致的数据不一致,
  • 易于维护(您不必在任何地方硬编码实例 IP 地址),
  • 您不必在 VPC 之外公开实例
  • 高可用性(AWS 确保在 s3 写入时调用 Lambda,您不必担心在实例中运行脚本并确保实例启动并运行)

  • 希望这是有用的。

    关于amazon-web-services - 如何使 HTTP 调用到达亚马逊 AWS 负载均衡器后面的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498423/

    相关文章:

    java - 在 Java 上以编程方式进行 Amazon 云开发

    security - 在我的 AWS EC2 实例上设置负载均衡器

    amazon-web-services - 如何在 aws 上为 kubernetes 创建应用程序负载均衡器

    amazon-web-services - 为什么 Elastic Beanstalk 负载均衡器拒绝建立 SSL 连接?

    java - 为Spring Cloud AWS配置Spring Redis缓存?

    Python AWS Boto URL 连接错误

    php - 收到错误AWS HTTP错误: cURL error 6: when creation bucket using 3. 52 php sdk

    amazon-web-services - Lambda@Edge 事件处理程序的 AWS::Serverless::Function lambda 版本

    python - 无法使用 boto 将 SCP 文件发送到 AWS

    linux - 如何在 AWS Linux 实例上运行 .NET Core MVC 站点