python - 如何测试AWS上的进程是否为 "in cloud"

标签 python amazon-web-services cloud boto3

我有一个 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/

相关文章:

amazon-web-services - 使用 cloudformation yaml 在 Lambda 函数上添加 S3 触发器

amazon-web-services - 谷歌应用程序脚本 : Getting Orders from Amazon Selling Partner API (Signing Requests)

amazon-web-services - 如何获取cloudformation模板中的参数以使用Amazon Go SDK启动?

function - 云函数部署问题

windows - Azure 角色启动时间是否有硬性限制?

python - 任务完成时间比预期要长得多

python - 将帮助的输出分配给变量而不是 python 中的标准输出

python - 如何使用 beautiful soup 从 shopee 抓取数据

java - Google App Engine 云端点在哪里?

python - SlugRelatedField 查询集