我有一个 python 应用程序,它应该通过 AWS 管道远程运行,并使用 secret 来获取数据库凭据等参数。在本地运行应用程序时,参数将从 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,但一定有更好的东西。
最佳答案
您可以使用 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 的变量,并将其设置在本地测试计算机上。
关于python - 如何测试AWS上的进程是否为 "in cloud",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57479310/