精华内容
下载资源
问答
  • lambda调用函数 In this article, I am going to explain how to create an AWS Lambda function and then call this function from another Lambda function within the same region. This is a useful scenario ...

    lambda调用函数

    In this article, I am going to explain how to create an AWS Lambda function and then call this function from another Lambda function within the same region. This is a useful scenario in which we may need to execute a second lambda function based on the outcome of some previous logic. Another scenario may be to execute a second lambda function several times by using different parameters.

    在本文中,我将解释如何创建一个AWS Lambda函数,然后从同一区域内的另一个Lambda函数调用此函数。 这是一个有用的场景,其中我们可能需要根据某些先前逻辑的结果执​​行第二个lambda函数。 另一种情况可能是使用不同的参数多次执行第二个lambda函数。

    For the sake of this article, we will consider a typical retailer application, in which we can purchase different products from a retailer site using a lambda function.

    为了本文的目的,我们将考虑一个典型的零售商应用程序,在该应用程序中,我们可以使用lambda函数从零售商站点购买不同的产品。

    Architecture Diagram

    If you consider the above architecture diagram, you can see that we have an AWS lambda function – the ParentFunction, which assumes a specific role from the IAM (Invoke Other Lambda Function) and then calls another lambda function – the ChildFunction with a payload. Once the execution of the ChildFunction is completed, it returns a response, which is then passed on to the ParentFunction. The ParentFunction receives the response and handles the job accordingly.

    如果考虑以上架构图,您会看到我们有一个AWS lambda函数– ParentFunction ,它从IAM( 调用其他Lambda函数 )承担特定角色,然后调用另一个lambda函数–带有有效负载的ChildFunction 。 一旦ChildFunction的执行完成,它将返回一个响应,然后将其传递给ParentFunctionParentFunction接收响应并相应地处理作业。

    As in this example, let us assume that the ParentFunction is going to call the ChildFunction with a payload of ProductName, Quantity, and the UnitPrice of that product. The ChildFunction, in turn, will process this payload, calculate the total sales amount, generate a transaction reference ID, and return this information to the ParentFunction.

    在此示例中,让我们假设ParentFunction将使用该产品的ProductName,Quantity和UnitPrice的有效负载来调用ChildFunction 。 反过来, ChildFunction将处理此有效负载,计算总销售额,生成交易参考ID,并将此信息返回给ParentFunction

    创建第一个AWS Lambda函数– ChildFunction (Creating the first AWS Lambda Function – ChildFunction)

    Let us first go ahead and create the ChildFunction, which will process the input payload and return the results to the ParentFunction.

    让我们首先继续创建ChildFunction,该函数将处理输入的有效负载并将结果返回给ParentFunction。

    Head over to https://console.aws.amazon.com/ and login with your credentials. Once you are inside the console, start searching for “Lambda” and click on the first result that appears from the drop-down.

    转到https://console.aws.amazon.com/并使用您的凭据登录。 进入控制台后,开始搜索“ Lambda ”,然后单击下拉菜单中显示的第一个结果。

    Search AWS Lambda Function

    This will take you to the Lambda Function homepage, where you can create a new lambda function by hitting the “Create Function” button.

    这将带您到Lambda函数主页,您可以在其中单击“ 创建函数 ”按钮来创建新的lambda函数。

    Create AWS Lambda Function

    Let the name of this function be – “ChildFunction” and select Python 3.8 as the runtime.

    将该函数的名称设为–“ ChildFunction”,然后选择Python 3.8作为运行时。

    AWS Lambda Function Name

    Select the option to Create a new role with basic lambda permissions and click on Create Function.

    选择选项以创建具有基本lambda权限的新角色,然后单击创建功能

    Selecting the Role

    A new lambda function will be created where you can write your code and test it.

    将创建一个新的lambda函数,您可以在其中编写代码并对其进行测试。

    AWS Lambda Function Created

    Let us now head over to Visual Studio Code and start writing our code for the ChildFunction as follows. This is a very simple application that is going to perform the following steps:

    现在让我们转到Visual Studio Code,并开始为ChildFunction编写我们的代码,如下所示。 这是一个非常简单的应用程序,它将执行以下步骤:

    1. Read data from the ParentFunction

      从ParentFunction读取数据
    2. Generate the Transaction Reference ID

      产生交易参考编号
    3. Calculate the business information

      计算业务信息
    4. Return the result to the Parent Function

      将结果返回给父函数

    Child Function Code
    import json
    import uuid
     
    def lambda_handler(event, context):
        #1 Read the input parameters
        productName = event['ProductName']
        quantity    = event['Quantity']
        unitPrice   = event['UnitPrice']
     
        #2 Generate the Order Transaction ID
        transactionId   = str(uuid.uuid1())
     
        #3 Implement Business Logic
        amount      = quantity * unitPrice
     
        #4 Format and return the result
        return {
            'TransactionID' :   transactionId,
            'ProductName'   :   productName,
            'Amount'        :   amount
        }
     
    #########################################################################
    # No need to include the following snippet into the lambda function
    # Only used to test the function locally
    event = {
        "ProductName"   : "iPhone SE",
        "Quantity"      : 2,
        "UnitPrice"     : 499
    }
    response = lambda_handler(event,'')
    print(response)
    #########################################################################
    

    Once the code is written and tested in the local machine, you can copy and paste the script to the lambda function to test it in AWS.

    在本地计算机中编写和测试代码后,您可以将脚本复制并粘贴到lambda函数以在AWS中对其进行测试。

    Copying code to Lambda Function

    In order to test the ChildFunction, you need to create the Test Event, in which you can pass the payload information that we will be using to call from the ParentFunction. In order to configure test events, click on Test Event, and select Configure.

    为了测试ChildFunction,您需要创建Test Event,在其中您可以传递我们将用于从ParentFunction调用的有效负载信息。 为了配置测试事件,请单击测试事件,然后选择配置

    Configure Test Events

    Give the test event a name and specify the payload information here to test it.

    为测试事件命名,并在此处指定有效负载信息以对其进行测试。

    Configure Test Event

    Hit on Test to execute the ChildFunction with the payload information.

    点击测试以使用有效负载信息执行ChildFunction

    Testing the Function

    If the execution is successful, you will get a successful return with the calculations completed as follows. As you can see in the figure below, the function returns the following items.

    如果执行成功,您将获得成功的回报,并完成以下计算。 如下图所示,该函数返回以下项目。

    1. Transaction ID

      交易编号
    2. Product Name

      产品名称
    3. Amount

    This information will also be visible to the ParentFunction when it calls the ChildFunction.

    当父函数调用子函数时,此信息也将对父函数可见。

    Child Function Executed

    Also, copy the ARN of the Child Function, which can be used later to apply for policies and roles upon.

    同样,复制子功能的ARN,以后可用于在其上申请策略和角色。

    Copy ARN

    设置ParentFunction的策略 (Setting up the Policy for ParentFunction)

    In order to allow the ParentFunction to call the ChildFunction, we need to provide the ParentFunction with specific rights to call another lambda function. This can be done by adding specific policies to a role and then assign that role to the lambda function.

    为了允许ParentFunction调用ChildFunction,我们需要为ParentFunction提供特定的权限来调用另一个lambda函数。 这可以通过向角色添加特定策略,然后将该角色分配给lambda函数来完成。

    Head over to the IAM module inside the AWS portal and select Policies. Click on Create Policy to create a new one.

    转到AWS门户内的IAM模块,然后选择策略 。 单击创建策略以创建一个新策略

    Create Policy

    In the Create Policy page, select the JSON tab and add the following policy summary to it as follows. Remember to update the URL for the Resource which you have copied in the previous step. Give the policy a suitable name and create it. I am going to name this policy as – “InvokeOtherLambdaPolicy”.

    在“创建策略”页面中,选择“ JSON”选项卡,并向其添加以下策略摘要,如下所示。 记住要更新在上一步中复制的资源的URL。 为策略指定一个合适的名称并创建它。 我将这个策略命名为–“ InvokeOtherLambdaPolicy ”。

    Adding Policy JSON

    Navigate to the Roles and click on Create role.

    导航到“ 角色” ,然后单击“ 创建角色”

    Create Role

    Select Lambda as the use case and click on Next to add the required permissions.

    选择Lambda作为用例,然后单击“下一步”添加所需的权限。

    Choose Use Case

    Add the following two policies to this role and create the role.

    将以下两个策略添加到该角色并创建该角色。

    1. AWSLambdaBasicExecutionRole

      AWSLambdaBasicExecutionRole
    2. InvokeOtherLambdaPolicy

      调用其他Lambda政策

    Adding AWS Lambda Basic Execution Role

    Adding Invoke Other Lambda Policy

    Click on Next and proceed forward and create the role. Give this role a suitable name, for example, “InvokeOtherLambdaRole”.

    单击下一步,然后继续并创建角色。 给该角色指定一个合适的名称,例如“ InvokeOtherLambdaRole ”。

    创建AWS Lambda函数– ParentFunction (Creating the AWS Lambda Function – ParentFunction)

    Head over to the Lambda Function page and click on Create New Lambda function. I am calling this lambda function – “ParentFunction”. Choose the run time as Python 3.8 and assign the InvokeOtherLambdaRole role that we just created in the previous step.

    转到Lambda函数页面,然后单击创建新 Lambda函数。 我称这个lambda函数为“ ParentFunction ”。 选择运行时作为Python 3.8,并分配我们在上一步中刚刚创建InvokeOtherLambdaRole角色。

    Creating the Parent Function

    Let us now again head over to Visual Studio Code to write the code and then copy-paste it back to the lambda editor. Since we are going to use an AWS resource in this function, we need to use the Boto3 python library to use the AWS resources. This library can be used to interact with other AWS resources as and when required.

    现在让我们再次转到Visual Studio Code来编写代码,然后将其复制粘贴回lambda编辑器。 由于我们将在此函数中使用AWS资源,因此我们需要使用Boto3 python库来使用AWS资源。 必要时,该库可用于与其他AWS资源进行交互。

    Code for the Parent Function
    import json
    import boto3
     
    # Define the client to interact with AWS Lambda
    client = boto3.client('lambda')
     
    def lambda_handler(event,context):
     
        # Define the input parameters that will be passed
        # on to the child function
        inputParams = {
            "ProductName"   : "iPhone SE",
            "Quantity"      : 2,
            "UnitPrice"     : 499
        }
     
        response = client.invoke(
            FunctionName = 'arn:aws:lambda:eu-west-1:890277245818:function:ChildFunction',
            InvocationType = 'RequestResponse',
            Payload = json.dumps(inputParams)
        )
     
        responseFromChild = json.load(response['Payload'])
     
        print('\n')
        print(responseFromChild)
    

    As you can see in the above code, we have created a boto client to interact with the lambda function. Also, we have created a payload that can be passed on to the ChildFunction when calling it. And once the ChildFunction is executed, it will return the response, which will be stored in the “response” variable.

    如您在上面的代码中看到的,我们已经创建了一个boto客户端来与lambda函数进行交互。 同样,我们创建了一个有效载荷,可以在调用它时将其传递给ChildFunction。 并且一旦执行ChildFunction,它将返回响应,该响应将存储在“ response”变量中。

    Finally, we can parse the payload information from the response and use it according to our needs. In this case, we are just going to print it on the screen. Copy the code from VS Code to the lambda editor.

    最后,我们可以从响应中解析有效负载信息,并根据需要使用它。 在这种情况下,我们只是将其打印在屏幕上。 将代码从VS Code复制到lambda编辑器。

    Parent Function

    Create a sample test event for this function since we are not going to pass any payload for this Parent Function here. Save the event and click on the Test.

    为此函数创建一个示例测试事件,因为在这里我们不会传递此父函数的任何有效负载。 保存事件,然后单击“ 测试”

    Configuring Test Event

    Once you execute the ParentFunction, it will pass the payload information to the ChildFunction, where the result will be calculated, and then the final response will be sent back from the ChildFunction to the ParentFunction. You can see the execution logs and confirm this as follows.

    一旦执行ParentFunction,它将把有效负载信息传递给ChildFunction,在此将计算结果,然后将最终响应从ChildFunction发送回ParentFunction。 您可以查看执行日志并按以下说明进行确认。

    Parent Function Executed

    结论 (Conclusion)

    In this article, I have explained how we can call or execute an AWS Lambda function from another lambda function within the same region. Using the AWS Lambda function, you can easily write serverless applications without having to worry about the infrastructure running behind it. Often, it becomes necessary that we might need to call different AWS Lambda functions from within another lambda due to the handling of complex business logic or something like that.

    在本文中,我解释了如何从同一区域内的另一个lambda函数调用或执行AWS Lambda函数。 使用AWS Lambda函数,您可以轻松编写无服务器应用程序,而不必担心背后运行的基础架构。 通常,由于处理复杂的业务逻辑或类似的事情,我们可能有必要从另一个lambda中调用不同的AWS Lambda函数。

    翻译自: https://www.sqlshack.com/calling-an-aws-lambda-function-from-another-lambda-function/

    lambda调用函数

    展开全文
  • lambda匿名函数

    2019-04-21 16:30:21
    lambda匿名函数 1. lambda是匿名函数,但是可以命名,名字在等号左边 2. lambda中只能包含一个表达式,不能包含复合语句 语法: <函数名> = lambda <参数> : <表达式> f = lambda x, y, z:...

    lambda匿名函数

    1. lambda是匿名函数,但是可以命名,名字在等号左边

    在这里插入图片描述

    2. lambda中只能包含一个表达式,不能包含复合语句

    语法:
    <函数名> = lambda <参数> : <表达式>

    f = lambda x, y, z: x+y+z  #f是表达式的名字
    >>> f(1,2,3)  #像函数一样调用
    6
    

    3. lambda是一个表达式,而不是语句

    • 所以lambda能够出现在Python语法不允许def出现的地方
    • 作为一个表达式,lambda返回一个值(一个新的函数),可以选择性地被赋值给一个变量名

    4. lambda的主体是一个单独的表达式,而不是一个代码块

    • 这样设计的目的是限制程序的嵌套:lambda是一个为编写简单的函数而设计的,而def用来处理更大的任务
    • def 和lambda都能完成同样 种类的工作
    >>> x = (lambda a = "fee", b = "fie", c = "cio" : a + b + c)
    >>> x("acb")
    'acbfiecio'
    

    5 . lambda嵌套

    在外层嵌套被调用的时候,嵌套在内的lambda能够获取到在外层函数作用域中变量名x的值

    >>> def action(x):
    >>> 	return (lambda y:x + y)
    >>> act = action(99)
    <function __main__.action.<locals>.<lambda>>
    >>> act(2)
    101
    

    出于对代码可读性的考虑,一般最好避免使用嵌套的lambda

    展开全文
  • Python 匿名(lambda函数

    千次阅读 2017-06-02 18:40:23
    匿名函数,顾名思义,就是指一个没有名称的函数。 在 Python 中,常规函数使用 `def` 关键字定义,但匿名函数使用 `lambda` 关键字定义。正因如此,匿名函数也被称为 `lambda` 函数

    简述

    匿名函数,顾名思义,就是指一个没有名称的函数。

    在 Python 中,常规函数使用 def 关键字定义,但匿名函数使用 lambda 关键字定义。正因如此,匿名函数也被称为 lambda 函数

    | 版权声明:一去、二三里,未经博主允许不得转载。

    lambda 函数

    语法格式:

    lambda arguments: expression
    • lambda:定义匿名函数的关键字
    • arguments:函数的参数列表,参数之间用逗号(,)分割。
    • expression:被返回的表达式,且表达式只能有一个(注意: lambda 定义不包含 return 语句)。
    • lambda 表达式构建的其实是一个函数对象

    lambda 函数可以在需要函数对象的地方使用。不要试图向 lambda 函数中加入太多东西,如果逻辑比较复杂,应定义一个常规的函数

    来定义一个简单的常规函数,用于求一个数的平方:

    >>> def square(x):
    ...     return x * x
    ... 
    >>> 
    >>> square(6)
    36

    如果使用 lambda 实现的话:

    >>> square = lambda x: x * x
    >>> 
    >>> square
    <function <lambda> at 0x7f9171608950>
    >>> 
    >>> square(6)
    36

    可以看到,lambda 函数和常规函数几乎完全一样,并且可以用相同的方式调用。

    这里,lambda x: x * x 是 lambda 函数,其中 x 是参数,x * x 是表达式。

    这个函数没有名字,它返回一个函数对象,该对象被分配给变量 square,可以将其作为一个正常的函数来调用。

    使用 lambda 函数

    当在短时间内需要一个没有名称的函数时,可以使用 lambda 函数。

    在 Python 中,通常将其用作高阶函数(将其他函数作为参数的函数)的参数。lambda 函数可以与一些内置函数一起使用,例如:filter()、map() 等。

    使用 filter()

    filter(function, iterable)

    提供了一种优雅的方法来过滤 iterable(可迭代对象,例如:列表)中的所有元素,过滤条件是 function 返回 True。

    换句话说:filter() 需要一个函数 function 作为它的第一个参数,function 必须返回一个布尔值(即:True 或 False)。这个函数将作用于 iterable 的每个元素,只有当 function 返回 True 时,迭代器才会产生元素,而迭代器是 filter() 的返回值。

    下述示例,从列表中过滤出所有偶数:

    >>> old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> new_list = list(filter(lambda x: (x%2 == 0), old_list))
    >>> new_list
    [2, 4, 6, 8]

    使用 map()

    map(function, iterable, ...)

    和 filter() 类似,map() 也接收一个 function 和一个 iterable 作为参数。

    该函数会返回一个迭代器,该迭代器将 function 应用于 iterable 的所有元素,并产生结果。

    下述示例,对列表中所有元素求平方:

    >>> old_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> new_list = list(map(lambda x: x * x , old_list))
    >>> new_list 
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

    除此之外,匿名函数也可用于 reduce(),这里就不再赘述了。

    展开全文
  • Python lambda匿名函数

    千次阅读 2015-06-22 10:58:17
    Python lambda匿名函数
    1、定义
    
          lambda函数是一种快速定义单行的最小函数。
    2、示例

          之前定义的函数为:

    def f(x,y):
    	return x*y
    调用的时候为

    f(3,4)
    现在可以通过lambda函数进行调用,如下:

     g = lambda x,y:x*y
    其中:前是参数,后是具体的操作。

    调用

     g(3,4)
    效果相同。

    再举一示例:

    reduce(lambda x,y:x*y,range(1,7))
    结果为720,其中reduce函数为逐次操作list里的每项,接收的参数为2个,最后返回一个结果。      

    展开全文
  • 对于lambda表达式,是可以实现匿名函数定义和挂接委托事件的。具体的可参见该文C#利用lambda实现委托事件的挂接。  要实现函数内创建内部函数,至少有两种方式可以用。  第一种:Func<>.  第二种:...
  • lambda函数

    2019-07-29 09:38:47
    lambda函数也叫匿名函数,就是没有函数名的函数。lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。 lambda函数的语法只包含一个语句: lambda [arg1 [,arg2,.....argn]]:expression 冒号前面的...
  • lambda特性:“一个语法,三个特性,四个用法...它的结构与Python中函数(function)的参数列表是一样的。具体来说,argument_list可以有非常多的形式。例如: a,b a=1,b=2 *args **kwargs a,b=1,*args 这里的lambda arg
  • C++11 lambda匿名函数看这一篇足以

    万次阅读 2021-03-14 17:38:06
    lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等...
  • 主要介绍了python lambda匿名函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:复制代码 代码如下:def f(x):return x**2print f(4)Python中使用lambda的话,写成这样复制代码 代码如下:g = lambda x : x**2print g(4) ...
  • Python中的lambda函数

    万次阅读 多人点赞 2019-03-30 19:41:51
    Python中的lambda函数 在Python中,我们使用lambda关键字来声明一个匿名函数,这就是为什么我们将它们称为“lambda函数”。匿名函数是指没有声明函数名称的函数。尽管它们在语法上看起来不同,lambda函数的行为方式...
  • lambda作为函数的指针

    千次阅读 2015-12-02 20:11:34
    lambda作为函数的指针
  • 今天小编就为大家分享一篇关于Python之lambda匿名函数及map和filter的用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • Lambda函数

    千次阅读 2019-01-15 10:06:58
    语法 lambda 参数 :表达式 参数:类似与function()小括号中的参数,常见形式如下...lambda函数是匿名的,函数没有名字 lambda具有输入输出,参数就是其输入,供表达式使用,表达式结果为函数的返回结果,即输出。...
  • (一)什么是lambda函数:Python支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做lambda的函数是从Lisp中借用来的,可以被用在任何需要函数的地方。lambda 函数是一个可以接收任意多个参数(包括可选...
  • python lambda函数 与 函数式编程

    千次阅读 2016-07-22 11:40:16
    1.lambda函数初探lambda函数又名匿名函数。顾名思义,匿名函数,那肯定就是没有函数名称啦。先看个最简单的例子: 先写个正常的函数:def f(x): return x+1很简单,不解释。如果写成lambda函数:g = lambda x:x+1 ...
  • Lambda函数,是一个匿名函数,创建语法: lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。 expression:不能包含分支或循环(但允许条件表达式),也不能...
  • Python的lambda函数总结

    万次阅读 多人点赞 2019-05-27 15:09:00
    目录Python的匿名函数lambda函数lambda函数定义lambda函数实例lambda函数的特点和使用场景特点使用场景 Python的匿名函数lambda函数 lambda函数定义 python 使用 lambda 来创建匿名函数。lambda函数的语法只包含一个...
  • Python中lambda匿名函数

    千次阅读 2014-10-25 12:43:58
    参考:... lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = lambda
  • lambda匿名函数的使用

    2019-06-23 15:16:29
    语法 lambda x, y: xy;函数输入是x和y,输出是它们的积xy lambda:None;函数没有输入参数,输出是None ...执行语句add=lambda x, y: x+y,定义了加法函数lambda x, y: x+y,并将其赋值给变量add,这样变量add...
  • Python 之 lambda 函数完整详解 & 巧妙运用

    万次阅读 多人点赞 2019-04-01 20:40:29
    lambda 函数在 Python 编程语言中使用频率非常高,那么,什么是lambda?它有哪些用法? 本文参考: https://blog.csdn.net/zjuxsl/article/details/79437563 这里总结了关于 Python 中的 lambda 函数的“一个语法,...
  • lambda 函数

    2018-08-12 16:32:27
    可以这样认为,lambda作为一个表达式,定义了一个匿名函数,冒号左边x为入口参数,右边x+1为函数体/计算表达式。在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直...
  • 功能 gcp cloud函数,aws lambda函数,azure函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,379
精华内容 106,151
关键字:

lambda传函数