我想在 s3 bucket
中的 jar 版本有任何更改时自动部署一个 jar 来aws-lamda
。
例如:有一个S3 bucket
说lambdadeploytest
和一个Lamda function
的名字autoDeployTest
。我在lambdadeploytest
中存储了一个test.jar
的对象。
每当有我上传新版本的对象test.jar
,test.jar
都会自动部署到autoDeployTest
lambda函数。
你可以用一个lambda函数来做到这一点......
在高级别上,步骤是
-
创建一个将下载
test.jar
的 Lambda 函数,并使用 JAR 创建/更新autoDeployTest
Lambda 函数。 -
将新的 lambda 函数配置为在 S3 上修改
test.jar
时触发 -
为新的 Lambda 函数配置读取 S3 存储桶和在 Lambda 上部署代码的权限。
您可以按照本教程创建将由 S3 事件触发的 lambda 函数。 这是您的 lambda 函数可以调用的 Lambda API 来更新autodeployTest
代码。
伪代码是这样的:
read JSON event object to get the bucket name and object name (bucket_name, test.jar)
download a copy of the object (test.jar) to the lambda container
(do additional check on the jar file if required)
call Lambda's UpdateFunctionCode to update autoDeployTest function code with the jar.
执行此操作的最惯用方法是在将新的 JAR 文件上传到 S3 后触发部署。Lambda 本身不会为您处理这个问题,除非您打算为此目的使用另一个 Lambda(我个人不会)。
我不清楚你用什么来上传JAR文件 - 如果是例如Terraform,那将是要走的路。如果您使用 AWS CLI 上传了新版本的 JAR 文件,则可以坚持使用相同的工具来触发 Lambda 部署。