大佬教程收集整理的这篇文章主要介绍了在没有 AWS 机密管理器的情况下在本地使用机密测试 Lambda 函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样的代码
Unix = 'linux'
Mac = 'darwin'
if sys.platform == Unix
do this
elif sys.platform == Mac
do this
我对 sys 平台进行了此检查,因为 aws 是基于 unix 的,因此如果 sys.platform = 'Mac' 然后我在本地运行。
当我尝试对这个应用程序进行 dockerize 时遇到了麻烦,因为 dockerized 版本是基于 linux 的, 所以在这个 if-else 语句中,构建将运行第一个 即使我正在构建 docker,也是 if-else 的一部分 本地容器。
是否可以在 dockerfile 中设置 sys.platform?
编辑:
问题陈述:
尝试 dockerize 一个 aws lambda 函数。为此,我需要 在本地测试 lambda 函数。
我的 Lamba 函数组合如下所示:
app
lambda_function1
database.py
Helper.py
functions
lambda_function1.py
这个lambda函数的主要目的是读取数据 从生产数据库,然后预测一些值 基于数据。
database.py
import Helper
...
class DB:
def __init__(self):
self.secrets = Helper.get_secrets()
self.db_name = self.secrets.get('DB','')
self.db_host = self.secrets.get('Host','')
self.db_password = self.secrets.get('password','')
...
Helper.py
import sys
import boto3
....
def get_secrets():
secrets = {}
if sys.platform == constants.MAC_PLATFORM:
secrets = local_secrets()
return secrets
session = boto3.session.Session()
clIEnt = session.clIEnt(service_name='secretsmanager',region_name='us-West-2')
secrets = get_aws_secrets()
如您所见,如果 sys 平台是 'darwin', 那么秘密将是本地秘密。 如果 sys 平台是 'linux',那么机密将被拉取 来自 aws。
由于某种原因,我无法使用 aws 连接到数据库 由于 TCP/IP 错误,我本地 docker 构建中的秘密。 我认为这是由于我在本地没有 aws 可能有的一些奇怪的配置问题,因此我想首先使用 docker 中的本地数据库,并使用 get_local_secrets 方法 获取秘密。
有什么想法吗?
我会使用环境变量建议并通过在运行时设置一些值在本地运行:
import os
if os.environ.get('LOCAL_TEST','false').lower().Strip() == 'true':
secrets = local_secrets()
else:
# use aws secrets
然后像这样运行你的容器:
docker run -e LOCAL_TEST=true your_image
以上是大佬教程为你收集整理的在没有 AWS 机密管理器的情况下在本地使用机密测试 Lambda 函数全部内容,希望文章能够帮你解决在没有 AWS 机密管理器的情况下在本地使用机密测试 Lambda 函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。