【问题标题】:Invoke a Lambda function with S3 payload from boto3使用来自 boto3 的 S3 有效负载调用 Lambda 函数
【发布时间】:2019-12-05 03:25:24
【问题描述】:

我需要调用一个接受 S3 路径的 Lambda 函数。下面是 lambda 函数的示例代码。

def lambda_handler(event, context):
    bucket = "mybucket"
    key = "mykey/output/model.tar.gz"

    model = load_model(bucket, key)
    somecalc = some_func(model)

    result = {'mycalc': json.dumps(somecalc)}

    return result

我需要使用 boto3 从我的客户端代码中调用此处理程序。我知道我可以提出如下要求

lambda_client = boto3.client('lambda')
    response = lambda_client.invoke(
    FunctionName='mylambda_function',
    InvocationType='RequestResponse',
    LogType='Tail',
    ClientContext='myContext',
    Payload=b'bytes'|file,
    Qualifier='1'
)

但我不确定如何在负载中指定 S3 路径。看起来它需要一个 JSON。

有什么建议吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-lambda boto3


    【解决方案1】:

    您可以像这样指定有效负载:

    payload = json.dumps({ 'bucket': 'myS3Bucket' })
    
    lambda_client = boto3.client('lambda')
        response = lambda_client.invoke(
        FunctionName='mylambda_function',
        InvocationType='RequestResponse',
        LogType='Tail',
        ClientContext='myContext',
        Payload=payload,
        Qualifier='1'
    )
    

    并像这样访问 lamdba 处理程序中的有效负载属性:

    def lambda_handler(event, context):
        bucket = event['bucket'] # pull from 'event' argument
        key = "mykey/output/model.tar.gz"
    
        model = load_model(bucket, key)
        somecalc = some_func(model)
    
        result = {'mycalc': json.dumps(somecalc)}
    
        return result
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 2017-09-09
      • 2021-10-11
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      相关资源
      最近更新 更多