首页 > 解决方案 > 执行错误 - 模块 'lambda_function' 上缺少处理程序 'lambda_handler'"

问题描述

下面是我在 Lambda 中测试时遇到的代码和错误。我是 python 和无服务器的新手。请帮忙。这是为了将结果从安全中心上传到 S3 for POC 而创建的。

import boto3
import json
from botocore.exceptions import ClientError
import time
timestr = time.strftime("%Y%m%d-%H%M%S")

storedata = {}
client = boto3.client('securityhub')
_filter = Filters={
    'GeneratorId': [
        {
            'Value': 'arn:aws:securityhub:::ruleset/cis-aws-foundations-benchmark',
            'Comparison': 'PREFIX'
        }
    ],
}

response = client.get_findings(Filters=_filter)
storedata = json.dumps(response)
print(storedata)

def aws_session(region_name='eu-west-1'):
  return boto3.session.Session()

def upload_data_to_bucket(data, bucket_name, s3_key):
  session = aws_session()
  s3_resource = session.resource('s3')
  obj = s3_resource.Object(bucket_name, s3_key)
  obj.put(ACL='private', Body=data)

  s3_url = f"https://{bucket_name}.s3.amazonaws.com/{s3_key}"
  return s3_url

s3_url = upload_data_to_bucket(storedata, 'sdhkdhiufhasp', 'securityhub_findings.json')
print(s3_url)

标签: aws-lambda

解决方案


当我们使用 Lambda 时,我们需要在 lambda_handler 方法
"def lambda_handler(event, context):" 中编写代码。

正如您提到的,您正在使用 lambda 运行此代码,那么下面的代码可能适合您。

    import boto3
    import json
    from botocore.exceptions import ClientError
    import time
    import glob 
   
    client = boto3.client('securityhub')
    s3 = boto3.resource('s3')
     
     
     storedata = {}
     _filter = Filters={
        'GeneratorId': [
            {
                'Value': 'arn:aws:securityhub:::ruleset/cis-aws-foundations- 
       benchmark',
                'Comparison': 'PREFIX'
            }
        ],
      }

   def lambda_handler(event, context):
    response = client.get_findings(Filters=_filter)
    storedata = json.dumps(response)
    print(storedata)

    save_file = open("/tmp/securityhub_findings.json", "w")
    save_file.write(storeddata)
    save_file.close()
 
    for name in glob.glob(/tmp/*):  
      s3.meta.client.upload_file(name, "you_bucket_name", name)
 

推荐阅读