在无服务器离线状态下有一个 node.js lambda,我想使用 localstack SQS 作为事件源来调用它。
我从这里获取了 localstack 版本:
https://github.com/localstack/localstack
并将其部署到我的码头工人
docker 组成-d
容器运行完美,我可以使用 AWS CLI 与 SQS 服务交互。
在我的 serverless.yaml 中,我包含了
serverless-localstack
插件并按如下方式配置它:
app: my-app
service: my-service
frameworkVersion: "3"
provider:
name: aws
runtime: nodejs18.x
stage: api
region: us-east-1
functions:
update:
handler: src/handler.update
events:
- sqs:
arn:
Fn::GetAtt:
- myQueue:
- Arn
plugins:
- serverless-localstack
- serverless-dotenv-plugin
- serverless-offline
- serverless-webpack
custom:
localstack:
host: http://localhost
edgePort: 4566
stages:
- api
serverless-offline:
lambdaPort: 3001
httpPort: 3000
dotenv:
path: .env.development
resources:
Resources:
myQueue:
Type: AWS::SQS::Queue
Properties:
QueueName: my-queue
我让处理程序在调用时打印日志,但即使此队列中有消息,处理程序也不会被调用。
我正在使用
sls offline
运行我的函数。
我做错了什么?
嗨 - LocalStack Serverless Plugin 目前不支持此类设置。该插件启动 LocalStack 容器并将 LocalStack 设置为无服务器框架使用的 SDK 客户端的端点。它不考虑用户是否使用Serverless Offline插件。除此之外,无服务器插件创建了另一个额外的层来模拟 Lambas 和 API 网关,它们不与 LocalStack 通信。