【问题标题】:Refreshing DNS after changing s3 bucket target IP address更改 s3 存储桶目标 IP 地址后刷新 DNS
【发布时间】:2020-12-25 03:59:19
【问题描述】:

我有一个本地端口 8501 托管网站 app.py 的 EC2 实例。

为了提供公共访问权限,我在属性对话框中创建了一个指向 ipaddress:port 的 S3 存储桶,并使用 Route53 指向 s3 存储桶。

但是,当我更新我的 EC2 实例时,IP 地址发生了变化。我更新了 S3 目标,它适用于所有新用户,但之前使用过我网站的人会被重定向到旧 IP 地址。

是否可以在不要求老用户清除缓存的情况下也将其指向新的 IP 地址?

【问题讨论】:

    标签: amazon-s3 amazon-ec2 amazon-cloudfront amazon-route53


    【解决方案1】:

    在我看来,有更好的方法来实现你所需要的。

    1. 为实例分配弹性 IP (EIP)。如果您重新启动甚至停止再启动实例,弹性 IP 不会改变。如果您将实例替换为另一个实例,您只需将 EIP 重新分配给新实例即可。

    2. 启动应用程序负载均衡器 (ALB) 并将您的实例附加到它。 ALB 将负责将流量路由到实例,无论它具有什么 IP。实例甚至不必有公共 IP,内部 IP 就足够了。

    3. 考虑使用 Elastic Beanstalk。该服务将为您跨越 EC2 实例和负载均衡器。

    【讨论】:

      【解决方案2】:

      如果您更改了前端资产或 html 文件中的 IP 地址(您将拥有这些地址,因为它们是 S3 对象),那么该资产可能会为某些用户缓存。可以通过检查相关资产返回的headers 来观察缓存的长度。

      关于未来的预防措施,请避免您无法控制的“硬编码”资产。最终,如果您使用 EC2,IP 可能会更改(您可以attach an elastic IP address 来防止这种情况发生),您可能希望在将来更改它,这意味着使用多个主机或者您使用另一个服务,这再次需要在您的代码。

      相反,您应该为您的资产中包含的主机创建一个 DNS 主机名,因为该 DNS 主机名不太可能更改(除非您决定自己做)。创建 A 记录并将其分配给您的 EC2 实例 IP 后,您应该更新您的资产,此过程只需执行一次。

      如果将来您决定更改目标,您只需更新 DNS 主机名以指向其他服务即可。这不需要对资产本身进行任何更改,这意味着一旦 DNS 缓存清除,它将针对您的新服务。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-11
        • 1970-01-01
        • 2022-01-14
        • 2016-06-24
        • 1970-01-01
        • 2018-05-20
        • 2021-11-02
        • 1970-01-01
        相关资源
        最近更新 更多