【发布时间】:2021-12-01 03:34:44
【问题描述】:
我做了尽可能多的研究,但我似乎无法找到一种方法来按照我想要的方式构建我的文件夹。
我的文件夹结构如下:
aws-lambdas
database_credentials.yml (just a file to read the creds from in a var)
serverless.yml
functions
ETLTool
somefile1.py
somefile2.py
lambda_function.py
ETLToolFullLoadSLS.yml
ETLToolSLS.yml
TriggerSnowflakeETL
somefile1.py
somefile2.py
lambda_function.py
TriggerSnowflakeETLSLS.yml
我想要做的是将所有 .yml 从函数文件夹中拉入根文件夹的 serverless.yml 中。我的主要 serverless.yml 文件如下所示:
service: SnowflakePoc
frameworkVersion: '2'
custom:
database_credentials: ${file(./database_credentials.yml):database_credentials}
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
timeout: 90
memorySize: 2048
stage: dev
region: eu-west-2
vpc:
securityGroupIds:
- sg-013059b0cbf4054b5
- sg-02c6fcaa9f2bfac7f
subnetIds:
- subnet-04aa5cacdb8d9d077
- subnet-0ea7eb629fbc6f6a8
iam:
role: arn:aws:iam::309161096106:role/LamdaRDSAccess
functions:
- ${file(./functions/ETLTool/ETLToolSLS.yml)}
- ${file(./functions/ETLTool/ETLToolFullLoadSLS.yml)}
- ${file(./functions/TriggerSnowflakeETL/TriggerSnowflakeETLSLS.yml)}
plugins:
- serverless-python-requirements
问题是每个 lambdas 都会拾取整个 functions/* 文件夹,即使我在每个内部函数 yml 文件中都有类似的内容。
TriggerETLTool:
timeout: 600
memorySize: 5000
reservedConcurrency: 3
handler: functions/TriggerSnowflakeETL/lambda_function.lambda_handler
layers:
- arn:aws:lambda:eu-west-2:309161096106:layer:Snowflake:3
- arn:aws:lambda:eu-west-2:309161096106:layer:DatabaseUtilities:5
package:
patterns:
- '!functions/TriggerSnowflakeETL/**'
- functions/TriggerSnowflakeETL/lambda_function.py
在 AWS 内部是这样的: Pic from AWS Lambda Source Code
-
有没有比每个 lambda 有 1 个目录更好的模式?
-
我希望每个函数中的文件都位于我的 lambdas 的根目录中,而一旦它们到达 AWS,它们就不会像在图像中那样位于文件夹中。另外,我想只将每个内部函数的文件放在函数文件夹中,而不是整个函数目录。
【问题讨论】:
标签: python-3.x aws-lambda serverless-framework serverless