为了让 AWS SAM 函数使用最新的层,我们需要重新部署函数和层。步骤如下:
在层代码中进行更改,并将其重新打包。
在 SAM 项目文件中更新层版本,并将函数和层重新部署到 AWS。
代码示例:
这里假设我们已经创建了一个包含函数和层代码的 SAM 项目。现在我们想要更新层代码并使用最新的版本。
假设当前层代码是这样的:
# mylayer.py
def myfunc():
print("Hello from my layer!")
我们想要更新它,改为输出更多的信息:
# mylayer.py
def myfunc():
print("Hello from my layer!")
print("This is the latest version.")
使用 pip 安装的依赖项需要在层文件夹内的 requirements.txt 文件中列出,例如:
mypackage==1.0.0
然后在文件夹内运行以下命令:
pip install -r requirements.txt -t .
该命令会安装依赖项并将其打包到当前目录中。我们也可以手动将需要的文件复制到目录中。
我们需要在 SAM 模板文件中更新层版本。打开 template.yaml 文件,并将层代码路径替换为新的版本:
Resources:
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
CodeUri: function/
Handler: app.lambda_handler
Runtime: python3.8
Layers:
- !Ref MyLayer
MyLayer:
Type: 'AWS::Serverless::LayerVersion'
Properties:
LayerName: my-layer
Description: My custom layer
ContentUri: layer/
CompatibleRuntimes:
- python3.8
LicenseInfo: 'MIT'
Version: 2 # 更新层版本
运行以下命令重新部署:
sam build && sam deploy
现在,我们的函数已经使用最新的层代码。