Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2023-09-28 GMT+08:00

Uma função pode invocar outra função?

Sim. Uma função pode chamar outra função usando uma API ou SDK na mesma região. Para invocação entre regiões, o chamador deve ter acesso público.

Usar uma API

Para obter detalhes, consulte Exemplo 4: uso de uma função para chamar uma subfunção.

Usar um SDK (Python)

  1. Crie uma função chamada FuncB, que será invocada.

    Crie a função do zero com o tempo de execução do Python 3.6 e o seguinte código:

    # -*- coding:utf-8 -*-
    import json
    def handler (event, context):
           # Prints input parameters to verify the invocation result.
        logger = context.getLogger()
        logger.info(event)
        return {
            "statusCode": 200,
            "isBase64Encoded": False,
            "body": json.dumps(event),
            "headers": {
                "Content-Type": "application/json"
            }
        }
  2. Crie uma função chamada FuncA.

    1. Crie a função do zero com o tempo de execução do Python 3.6 e o código a seguir. Substitua <Your Function Region> e <Your Function URN> pela região e URN do FuncB.

    # -*- coding:utf-8 -*-
    from huaweicloudsdkcore.auth.credentials import BasicCredentials
    from huaweicloudsdkfunctiongraph.v2.region.functiongraph_region import FunctionGraphRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkfunctiongraph.v2 import *
    def handler (event, context):
        logger = context.getLogger()
        ak = context.getAccessKey()
        sk = context.getSecretKey()
    
        credentials = BasicCredentials(ak, sk)
        client = FunctionGraphClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(FunctionGraphRegion.value_of("<Your Function Region>")) \
            .build()
    
        try:
            request = InvokeFunctionRequest()
            request.function_urn = "<Your Function URN>"
            # Input parameters.
            request.body = "{'input_key':'input_value'}"
            # Response body format. v0: text; v1: JSON.
            request.x_cff_request_version = "v1"
            response = client.invoke_function(request)
            logger.info(response)
        except exceptions.ClientRequestException as e:
            logger.error(e.status_code)
            logger.error(e.request_id)
            logger.error(e.error_code)
            logger.error(e.error_msg)
        return {
            "statusCode": 200,
            "isBase64Encoded": False,
            "body": "",
            "headers": {
              "Content-Type": "application/json"
            }
        }
    1. Configure dependências para a função.

      Configure dependências huawei-cloud-sdk-core-python-3.x e huaweicloud-sdk-python-v3, que podem ser baixadas de Visão geral do SDK. Para obter detalhes sobre como criar uma dependência, consulte Como criar dependências de função?

    2. Conceda permissões para a função.

      Conceda a permissão FunctionGraph CommonOperation à função criando uma agência para que a função possa chamar outras funções. Para obter detalhes, consulte Criação de uma agência.

  3. Verifique o resultado da execução.

    Configure um evento de teste em branco para FuncA e clique em Test. Um resultado semelhante ao seguinte é exibido.

    Figura 1 Visualização do resultado da execução

    Visualize os logs de execução de FuncB's gerados no mesmo período.