首页 > 解决方案 > 如何测试进程是否在 AWS 上“在云中”

问题描述

我有一个 python 应用程序,它应该通过 AWS 管道远程运行并使用机密来获取参数,例如数据库凭证。在本地运行应用程序时,参数是从parameters.json文件加载的。我的问题是如何测试我远程运行(所以替换IN_CLOUD_TEST):

import boto3
from json import load

if [IN_CLOUD_TEST]:
    params_raw = boto3.client('ssm').get_parameters_by_path(Path='/', Recursive=True)['Parameters']
    params = format_params(params)
else:
    with open('parameters.txt') as json_file:
        params = load(json_file)

我当然可以使用 try/except,但必须有更好的东西。

标签: pythonamazon-web-servicescloudboto3

解决方案


您可以使用 AWS API 进行检查,但一种更简单的替代方法(并且不需要进行 HTTP 调用,帮助您减少一些延迟)是在远程服务器上设置一个环境变量,告诉它它是生产服务器并读取它从代码。

import boto3
from json import load
from os import getenv

if getenv('IS_REMOTE', False):
    params_raw = boto3.client('ssm').get_parameters_by_path(Path='/', Recursive=True)['Parameters']
    params = format_params(params)
else:
    with open('parameters.txt') as json_file:
        params = load(json_file)

您也可以应用相同的逻辑,但在您的服务器应该是测试服务器时定义一个等于true的变量,并将其设置在本地测试机器上。


推荐阅读