如何通过UI部署lambda函数的SAM模板?

时间:2019-06-27 14:15:43

标签: amazon-web-services aws-lambda aws-cli aws-sam

我写了一个类似于以下内容的bash脚本:Download an already uploaded Lambda function

对于通过SAM模板文件部署的所有lambda函数,一切都很好。但是,当我检索通过AWS的Web UI部署的lambda函数(应用程序)的部署包时,得到的只是该函数的部署包中的index.js文件。

无论如何,可以通过在Lambda管理控制台上通过操作>导出功能>下载AWS SAM文件选择给定的lambda应用程序的体系结构,以生成描述该lambda应用程序架构的SAM yaml文件。因此,应该有可能通过aws-cli来做到这一点,或者根本不可能吗?

2 个答案:

答案 0 :(得分:0)

您可以使用awscli https://docs.aws.amazon.com/cli/latest/reference/lambda/get-function-configuration.html获得功能配置,并且响应将包含一个Code部分,并带有一个指向功能包https://docs.aws.amazon.com/lambda/latest/dg/API_FunctionCodeLocation.html的链接

此外,您还可以使用CloudFormer https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-cloudformer.html

从现有基础架构中创建CloudFormation堆栈。

具有CloudFormation模板,您可以获得资源说明。 https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-resources.html以及指向S3上函数源代码的链接。

https://stackoverflow.com/a/55764927/6628583

中了解更多

答案 1 :(得分:0)

抱歉,这是一个提示,而不是完整的答案。应该有(但现在还没有)aws-cli以获取此SAM内容。浏览器中的URI被一些晦涩的网络调用所困扰,例如

https://us-west-2.console.aws.amazon.com/p/log/1/lambda/1/OP/&k0=feevc&m0=1&d0=%7B%22s_fid%22:%2233SNIPPEDC66-34SNIPPED7FE5B%22%7D&p0=exportSAM&cb=1595621538378&proxy-rid=7c6a6a31SNIPPEDf1a400b457cc

似乎没有简单的方法来构造URI来获取exportSAM下载。

浏览器lambda.js并没有太大帮助,例如

        var A = Object(p.connect)((function(e) {
            return {
                blueprint: Object(v.b)(e).query.exportBp,
                integrationConfigs: h.c.getNodes(e),
                downloadMessages: h.c.getDownloadMessages(e),
                isOpen: !!Object(v.b)(e).query.exportModal,
                exporting: h.c.getExporting(e)
            }
        }
        ), (function(e) {
            return {
                downloadSam: function(t) {
                    return e((n = t,
                    {
                        type: b.f.EXPORT_BLUEPRINT_TO_FLOURISH,
                        blueprintName: n
                    }));
                    var n
                },
                close: function() {
                    return e(Object(m.c)({
                        query: {
                            exportModal: void 0,
                            exportBp: void 0
                        }
                    }, {
                        persistQuery: !0
                    }))
                }
            }
        }
        ), (function(e, t, n) {
            return S(S(S(S({}, n), e), t), {}, {
                downloadSam: function() {
                    return t.downloadSam(e.blueprint)
                }
            })
        }