我的 Lambda 代码在 S3 中的存储位置
Posted
技术标签:
【中文标题】我的 Lambda 代码在 S3 中的存储位置【英文标题】:Where in S3 my Lambda code stored 【发布时间】:2018-04-13 00:30:34 【问题描述】:我已阅读 Lambda 常见问题解答,它说它将我的代码存储在 S3 中并且已加密。
它存储在 S3 的什么位置,我可以解密它以编辑我的代码吗?
【问题讨论】:
【参考方案1】:如果您在创建 Lambda 函数之前将源代码上传到自己的 S3 存储桶,那么您将知道源代码的路径。请注意,仅在 S3 中编辑代码不会更新您的 Lambda 函数。请参阅下面的链接。 Amazon 会将您的代码从您的存储桶复制到 Amazon 的 S3 存储桶。
如果您在创建 Lambda 函数时在 AWS 控制台中上传代码,则它会存储在您无法访问的 Amazon S3 位置。
最终结果是您的代码位于您无法访问的私有 Amazon S3 存储桶中。
AWS Lambda Function Code
【讨论】:
【参考方案2】:Lambda 服务将您的代码加密存储在 S3 存储桶中。 AWS 没有提供比这更具体的信息。该服务可能有自己的 S3 存储桶,并且它们单独加密存储在那里的所有对象。
不,您不能直接访问 Lambda 服务的 S3 存储桶,但您可以下载之前上传到 Lambda 函数的代码。转到 AWS Lambda 控制台,选择您的 Lambda 函数,然后单击操作 |导出函数,然后单击下载部署包。注意:如果您的代码是用 Java(或其他编译语言)编写的,那么下载将包含编译文件,而不是原始源代码。
【讨论】:
【参考方案3】:此代码将允许您阅读您的函数:
import requests
import boto3
client = boto3.client('lambda')
function = client.get_function(FunctionName='my_function_name_or_arn')
code_location = function['Code']['Location']
with open("my_function.zip", "wb") as out:
out.write(res.content)
如果您尝试读取其他人的函数,您将收到 AccessDeniedException。
【讨论】:
以上是关于我的 Lambda 代码在 S3 中的存储位置的主要内容,如果未能解决你的问题,请参考以下文章
AWS 云形成 |配置 Lambda 以使用 S3 存储桶中的最新版本代码
如何使用 lambda 将 s3 中的最新代码部署到 lambda 函数
无法在 Lambda 函数(Node JS)中下载 S3 视频
使用 AWS Lambda (Python 3) 读取存储在 S3 中的 Parquet 文件