jam*_*ker 6 amazon-web-services aws-lambda aws-sam-cli
我正在考虑通过 SAM 在本地运行一些 AWS lambda,包括写入 S3 存储桶的一个。有没有办法让 S3 在本地运行,或者与云中的 S3 存储桶通信并在本地运行 lamda 时写入该存储桶?
是的,我实现这一目标的方法(在经历了很多困难之后,文档分散在各处,并且专注于不属于我的特定用例)是使用localstack。
你需要 docker 运行,然后:
pip install localstack
Run Code Online (Sandbox Code Playgroud)
然后:
localstack start
Run Code Online (Sandbox Code Playgroud)
我发现的一些文档建议您使用http://localhost:4566,并且确实将浏览器指向那里会显示某些内容存在,但我没有运气指向那里boto3或另一个 AWS 客户端,收到非常神秘的错误消息。
真实端口是4572,试试这个:
aws --endpoint-url=http://localhost:4572 s3api create-bucket --bucket mybucket --region us-west-1
Run Code Online (Sandbox Code Playgroud)
现在如果你有一个像这样的 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
Run Code Online (Sandbox Code Playgroud)
最后一个组件(可能取决于您的 Docker 设置)是您可能需要像这样调用它:
sam local invoke --docker-network host
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |