我正在考虑通过SAM在本地运行我们的某些AWS Lambda,包括一个写入S3存储桶的AWS Lambda。有没有办法让S3在本地运行,或者在本地运行lamda时与云中的S3存储桶对话并对其进行写入?
答案 0 :(得分:1)
是的,我实现这一目标的方法(经过很多困难,文档散布在各处,并专注于不是我的特定用例)是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