gpt4 book ai didi

python - 使用 SAM 通过自定义 python 函数构建 AWS Lambda 层

转载 作者:行者123 更新时间:2023-12-05 02:52:15 25 4
gpt4 key购买 nike

我正在尝试使用 SAM 构建我的 lambda 函数。我的 lambda 函数依赖于一个自定义 python 函数,我计划将其构建为 AWS Lambda 层。我的自定义 python 函数对 PyPI 上公开提供的 python 包具有传递依赖性,我在该层的 requests.txt 文件中指定了该包。

这是我的 lambda 函数的文件夹结构:

my-lambda-func
|-- events
|-- event.json
|-- my-func
|-- my_function.py
|-- __init__.py
|-- requirements.txt
|-- my-layer
|-- my_layer.py
|-- requirements.txt
|-- template.yaml
|-- buildspec.yml

这是我的 template.yaml 文件:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
sam-test

Sample SAM Template for sam-test

Globals:
Function:
Timeout: 300

Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: my-func/
Handler: app.lambda_handler
Layers:
- !Ref MyLayer
Runtime: python3.8
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get

MyLayer:
Type: AWS::Serverless::LayerVersion
Properties:
LayerName: MyLayer
Description: My custom Lambda Layer
ContentUri: ./my-layer/
CompatibleRuntimes:
- python3.8
LicenseInfo: MIT
RetentionPolicy: Retain
Metadata:
BuildMethod: python3.8

我的构建规范文件:

version: 0.2

phases:
build:
commands:
- sam package --template-file template.yaml --s3-bucket my-bucket --output-template-file packaged-template.yml

artifacts:
files:
- packaged-template.yml

当我在本地运行 sam build 命令时,我看到正确创建了 2 个资源,包括拉取该层的传递依赖项,但是当我使用构建阶段设置 CodePipeline 来从 builspec 构建命令时文件和使用 CloudFormation 的部署阶段,该层并未按照我的预期构建。当我从控制台下载图层时,它不显示任何传递依赖项。

有人做过类似的事情吗?有人可以帮助解决我做错的事情吗?谢谢!

最佳答案

从未使用过 Lambda Layer,尽管它吸引了我的眼球。我的 buildspec.yml 是您在打包之前没有运行 sam build 。这是我的构建规范文件,也许有帮助

phases:
install:
runtime-versions:
python: 3.7

build:
commands:
- pip install --upgrade aws-sam-cli
- sam build
- sam package --output-template-file packaged.yaml --s3-bucket ${FUNCTIONS_BUCKET}

artifacts:
type: zip
files:
- packaged.yaml

关于python - 使用 SAM 通过自定义 python 函数构建 AWS Lambda 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62701739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com