首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Lambda未读取环境变量

AWS Lambda未读取环境变量
EN

Stack Overflow用户
提问于 2018-02-06 06:33:26
回答 2查看 6.2K关注 0票数 2

我正在编写一个python脚本来查询Qualys API中的漏洞元数据。我在AWS中将其作为lambda函数执行。我已经在控制台中设置了我的环境变量,但是当我执行我的函数时,我得到了以下错误:

代码语言:javascript
复制
module initialization error: name 'QUALYS_USERNAME' is not defined

我正在使用这个os模块在我的处理函数的代码中调用它们:

代码语言:javascript
复制
import os
import requests
import time
import lxml
import tinys3
from lxml import etree

def lambda_handler(event, context):
    QUALYS_USERNAME = os.environ('QUALYS_USERNAME')
    QUALYS_PASSWORD = os.environ('QUALYS_PASSWORD')
    ACCESS_KEY = os.environ('ACCESS_KEY')
    SECRET_KEY = os.environ('SECRET_KEY')

s = requests.Session()
s.headers.update({'X-Requested-With':QUALYS_USERNAME})

def login(s):
    payload = {'action':'login', 'username':QUALYS_USERNAME, 
    'password':QUALYS_PASSWORD}

    r = s.post('https://qualysapi.qualys.com/api/2.0/fo/session/', 
    data=payload)

def launchReport(s, polling_delay=120):
    payload = {'action':'launch', 'template_id':'X', 
    'output_format':'xml', 'report_title':'X'}

    r = s.post('https://qualysapi.qualys.com/api/2.0/fo/report/', data=payload)
    global extract_id
    extract_id = etree.fromstring(r.content).find('.//VALUE').text
    print("Report ID = %s" % extract_id)
    time.sleep(polling_delay)
    return extract_id

def bucket_upload(s):
    conn = tinys3.Connection(ACCESS_KEY,SECRET_KEY)
    payload = {'action': 'fetch', 'id': extract_id}
    r = s.post('https://qualysapi.qualys.com/api/2.0/fo/report/', 
    data=payload)

    os.chdir('/tmp')
    with open(extract_id + '.xml', 'w') as file:
        file.write(r.content)
    f = open(extract_id + '.xml','rb')
    conn.upload(extract_id + '.xml',f,'X-bucket')

login(s)
launchReport(s)
bucket_upload(s)

以下是我在Lambda中定义的环境变量:

Env Variables Console

我不确定为什么会出现这个错误。

EN

回答 2

Stack Overflow用户

发布于 2019-02-12 04:24:31

您需要作为字典而不是函数调用来访问环境变量。

QUALYS_USERNAME = os.environ["QUALYS_USERNAME"] QUALYS_PASSWORD = os.environ["QUALYS_PASSWORD"]

票数 6
EN

Stack Overflow用户

发布于 2018-02-06 06:44:26

可能的原因:函数外部的内联代码在事件处理程序之前运行。

无关:您应该将IAM角色用于AWS凭证,而将参数存储用于其他非AWS凭证,而不是将环境变量用于凭证。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48632576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档