aws-lambda - AWS SAM 模板不执行 BuildMethod
问题描述
我有一个 lambda 函数,它有一些非标准的包装。我正在使用 aMakefile
来帮助我打包我需要的东西并将其用作我的构建方法和sam build
命令。但是我没有看到这个makefile被执行。想不通为什么不。这是我所拥有的:
sam_template.yaml:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
subscriptions_functions
Sample SAM Template for subscriptions_functions
Globals:
Function:
Timeout: 3
Resources:
GetSubscriptionsFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: .
Handler: app.lambda_handler_individual_methods
Runtime: python3.7
Events:
GetSubscriptions:
Type: Api
Properties:
Path: /subscriptions
Method: get
Metadata:
BuildMethod: makefile
Environment:
Variables:
SERVICE_METHOD_NAME: 'xyz'
REQ_CLASS_NAME: 'xyz'
RES_CLASS_NAME: 'xyz'
Makefile:(名称基于一些 AWS 示例)
build-GetSubscriptionsFunction:
@echo "Buliding artifacts with sls. Destination dir " $(ARTIFACTS_DIR)
sls package --env aws
mkdir -p $(ARTIFACTS_DIR)
unzip .serverless/subscriptions.zip -d $(ARTIFACTS_DIR)
cp requirements.txt $(ARTIFACTS_DIR)
python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR)
rm -rf $(ARTIFACTS_DIR)/bin
运行时构建成功sam build -t sam_template.yaml
,但我可以告诉 Makefile 没有运行(没有打印出任何消息,它会创建一个.serverless
目录,但它没有)
有人知道这个设置有什么问题吗?
解决方案
所以我想通了,这与语法无关。我从 IntelliJ 终端运行。由于我遇到了这个问题,我开始四处寻找并运行其他一些 SAM 命令。运行sam validate
也一直失败,但错误指向未设置的默认区域。我的区域在两者中都已正确设置,.aws/config
我什至尝试导出一个 env 变量AWS_DEFAULT_REGION
,但没有任何效果。它一直因未设置的区域而失败。所以我开始在 IntelliJ 中查看我的插件,结果发现我同时安装了AWS Toolkit
和Debugger for AWS Lambda
(通过 Thundera)。我卸载了后者,我又开始营业了。不清楚为什么这个插件会干扰我的控制台和 cli,但确实如此。摆脱它就成功了
推荐阅读
- python - 将年份转换为水年份 Matplotib 可视化
- spring - liquibase 用弹簧靴回滚
- heap - 我应该如何解决我的堆选择问题?
- python - NameError 名称未定义如何解决?
- java - 无法从 neo4j 流向 kafka 主题发送消息
- react-native - 从 React 上下文访问 Animated.Value
- linux - Linux中是否有任何方法可以检查目录树是否已更改?
- c# - WNetOpenEnum 在根级别之后不返回任何内容
- python - 检查列表列表中的列表元素并返回子列表
- firebase - 如何使用uid删除firebase用户?