如何通过写入S3存储桶的SAM本地运行AWS Lambda?

问题描述 投票:2回答:1

我正在通过SAM在本地运行我们的一些AWS lambda,包括一个写入S3存储桶的lambda。有没有一种方法可以让S3在本地运行,或者与云中的S3存储桶对话并在本地运行lamda时对其进行写入?

amazon-web-services aws-lambda aws-sam-cli
1个回答
0
投票

是的,我实现这一目标的方法(在很多困难之后,文档散布在各处,并专注于不是我的特定用例)是localstack

您需要运行docker,然后:

pip install localstack

然后:

localstack start

[Some documentation I've found建议您使用http://localhost:4566并确实指向其中的浏览器表明存在某些东西,但是我没有运气指向boto3或那里的另一个AWS客户端,得到非常隐蔽的错误消息。

实际端口是4572,请尝试this

aws --endpoint-url=http://localhost:4572 s3api create-bucket --bucket mybucket --region us-west-1

现在,如果您具有这样的lambda函数:

import boto3


def lambda_handler(event, context):
    s3 = boto3.client('s3' ,
        endpoint_url='http://localhost:4572',
        use_ssl=False)
    s3.create_bucket(Bucket="test-bucket")
    #rest of your function here

最后一个组件(可能取决于您的Docker设置),您可能需要像这样调用它:

sam local invoke  --docker-network host
© www.soinside.com 2019 - 2024. All rights reserved.