AWS Lambda:从亚马逊 S3 位置上传代码

AWS Lambda: upload code from amazon S3 location

我已配置 AWS 管道以将我最新的 nodeJS 代码作为 zip 文件部署到 S3。 而不是去 AWS Lambda 并选择“从 Amazon S3 位置上传”选项, 有没有办法让我的 lambda 服务在写入 S3 后获取最新代码,以便在您更新 zip 文件时自动更新其功能代码?

使用 Lambda 触发器,您可以创建一个触发器,每当将新对象写入 S3 位置时就会触发该触发器。 tutorial 指定了如何设置它。

然后,您可以使用 AWS 开发工具包以编程方式更新函数的代码。

看看恰当命名的 Update Function Code 文档。

Python SDK 文档是 here。以下是文档中的代码示例:

response = client.update_function_code(
    FunctionName='string',
    ZipFile=b'bytes',
    S3Bucket='string',
    S3Key='string',
    S3ObjectVersion='string',
    ImageUri='string',
    Publish=True|False,
    DryRun=True|False,
    RevisionId='string',
    Architectures=[
        'x86_64'|'arm64',
    ]
)

我在发布上述内容后发现了这个,CodePipeline 本身似乎有一个自动化解决方案。

https://docs.aws.amazon.com/lambda/latest/dg/services-codepipeline.html

我想这会是解决您问题的更简洁的方法。

我已经使用这个 link 在部署时配置我的 AWS Code Build yaml,并且在 S3 中作为 zip 文件上传的最新源代码被 AWS Lambda 获取。

https://docs.aws.amazon.com/cli/latest/reference/lambda/update-function-code.html

下面给出了我的 yaml 中使用的示例命令

- aws lambda update-function-code --function-name my-function --s3-bucket my-s3-bucket --s3-key sourceFileName.zip