我正在尝试使用 SAM(无服务器应用程序模型)和用 Java 编写的 Lambda 构建一个 AWS 应用程序。
通过在模板中使用这样的资源定义,我能够让它在本地运行:
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: HelloWorldFunction
Handler: helloworld.App::handleRequest
Runtime: java8
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
但是为了让sam package
阶段仅将实际代码(而不是整个项目目录)上传到 S3,我必须将其更改为:
...
Properties:
CodeUri: HelloWorldFunction/target/HelloWorld-1.0.jar
...
如 AWS SAM 示例项目自述文件中所述。
但是,这会破坏在本地运行应用程序的能力,sam build
然后是sam local start-api
.
我试图通过将CodeUri
值作为参数(with )来解决这个问题,这在本地工作,但由于SAM 翻译器的一个已知问题--parameter-overrides
而中断了打包阶段。
有没有办法让本地构建和真正的 AWS 部署都工作,最好使用相同的模板文件?