将 EC2 标记为暂存或生产

将 EC2 标记为暂存或生产

我对 AWS 还很陌生,想知道一个好的做法:

我有一个 python 应用程序,它有用于开发、登台和生产的单独配置集。

在代码中我目前使用环境变量或目录中的文件集来识别环境(这显然不是 ste SCM 的一部分)

如何将 EC2 实例标记为暂存,以便我的 python 应用程序可以检测到它并应用正确的配置集?

答案1

至少有两种方法:

  • 最简单的方法是使用标签. 具有名为“环境”且值为开发、暂存或生产的标签
  • 为每个环境设置单独的子网、VPC 或账户。这样可以提供更好的隔离,并可以减少在错误的环境中工作的机会

答案2

这通常通过实例来完成tags

EC2 实例可以有任意数量的 key:value 格式的标签。它们通常被广泛用于帮助进一步的流程识别实例角色/类型/环境/等

一些例子:

sometag:somevalue
env:prod
type:webserver
backup:yes

既然您提到了 Python,我假设您正在使用 BOTO。查看 boto 文档,您甚至可以根据某些标签进行过滤:https://boto3.readthedocs.io/en/latest/reference/services/ec2.html#EC2.Client.describe_instances

该文档页面上注明:

标签 :键 =*值*- 分配给资源的标签的键/值组合。在过滤器名称中指定标签的键,在过滤器值中指定标签的值。例如,对于标签 Purpose=X,在过滤器名称中指定 tag:Purpose,在过滤器值中指定 X。

进一步说明文档中的示例:

Filters=[
    {
        'Name': 'tag:env',
        'Values': [
            'prod'
        ]
    },
],

除了 BOTO,许多其他 AWS 交互实用程序通常都会具有基于实例标记的类似过滤器或查询系统。例如 Ansible 等。

实例截图标签EC2 控制台中的面板:

在此处输入图片描述

答案3

Tim 的回答是最好的。最好使用单独的 VPC。使用 lambda,您可以安排夜间和周末的关闭,以关闭所有不使用的 DEV/UAT 服务器。

保持网络分离可以更安全地防止意外的代码更改。

相关内容