簡體   English   中英

使用來自boto3的S3有效負載調用Lambda函數

[英]Invoke a Lambda function with S3 payload from boto3

我需要調用一個接受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。

有什么建議嗎?

您可以像這樣指定有效負載:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM