【问题标题】:How to check whether if I'm running the code on a GCP / AWS instance?如何检查我是否在 GCP / AWS 实例上运行代码?
【发布时间】:2020-09-11 11:03:01
【问题描述】:

有没有办法检查我在哪个平台上?我的意思不是我想检查它是Linux 还是Darwin 我的意思是我需要检查我是否在云实例上,我使用 GCP 和 AWS 所以我需要一些准确的方法。

我找到的唯一答案是在一些非常古老的post 中,它使用os.environ() 检查我尝试过的SERVER_NAME,但它不起作用。我可能会硬编码检查我的 IP 地址或任何只对我有用的东西,但我认为有一个干净的解决方案。

【问题讨论】:

    标签: python amazon-web-services google-cloud-platform


    【解决方案1】:

    为了可靠的方法,我会查询外部 IP 地址(前提是实例具有互联网连接),例如使用 https://ifconfig.me/ ,然后检查答案是否在 AWS/GCP IP 地址中范围(对于 AWS:https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html,我不了解 GCP)。

    【讨论】:

    【解决方案2】:

    只要为两台主机都设置了主机名,您就可以使用sockets获取运行代码的机器的当前主机名:

    import socket
    print(socket.gethostname())
    

    【讨论】:

    • 它返回的是GCP实例的名称,当然会有所不同,没有在AWS上尝试过,但我认为它几乎是一样的,有没有更好的方法?
    • GCP 和 AWS 实例是否有一种命名约定,可以使它们相互识别?你能在 GCP 上设置你的机器的主机名吗?我不熟悉这个服务。
    • 不,据我所知没有什么与众不同的地方
    【解决方案3】:

    AWS 和 GCP 对实例元数据使用相同的 URL:http://169.254.169.254

    但是,返回的内容不同。因此,您可以使用该信息来确定代码是否在云系统上运行,以及在哪个系统上运行。

    【讨论】:

    • 只需转到169.254.169.254。例如,curl http://169.254.169.254
    • 好的,我会检查并告诉你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多