如何解决包括lambda的配置文件
我已经创建了一个lambda,我想从其他目录(即data_dir
)访问某些文件。
我如何包括它们?
到目前为止,我尝试使用图层和efs挂载,但是我没有设法使它们中的任何一个都起作用...
这是我的文件系统结构:
src
|__lambdas
|__my_lambdas.py
data_dir
|__transform.xsl
|__schema.json
|__config.ini
我目前正在将此模板用于sam build --use-container
和sam local invoke IngestFunction
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Description
Resources:
IngestFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/lambdas/
Handler: my_lambdas.some_handler_method
Runtime: python3.7
Events:
IngestSQS:
Type: SQS
Properties:
Queue: arn:aws:sqs:eu-west-1:xxx:xxx
BatchSize: 10
解决方法
通常,您的CodeUri
必须指向所有文件都可用的位置。它可以是文件夹或存档。
第一个选择是将其压缩。
在构建包lambda期间。
zip -qr build/package.zip src data_dir
Handler: src/lambdas/my_lambdas.some_handler_method
CodeUri: ./build/package.zip
第二个选项是复制文件。
在构建副本文件期间。
cp -r src build
cp -r data_dir build
Handler: src/lambdas/my_lambdas.some_handler_method
CodeUri: ./build
,
您可以通过以下两种方法进行此操作:
-
将此
data_dir
保留在lambda文件夹中并在其内部进行访问。 -
创建S3存储桶
data_dir
,并通过boto3
S3download_file
函数访问每个文件。
对于图层,您必须使用__init__.py
创建python程序包,并加载此相关文件并使用图层进行访问。您无法直接访问。
不确定EBS挂载是否尝试过此选项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。