Todos os produtos
Search
Central de documentação

Resource Orchestration Service:ALIYUN::FC3::Function

Última atualização: Jun 27, 2026

Cria uma função do Function Compute 3.0.

Sintaxe

{
  "Type": "ALIYUN::FC3::Function",
  "Properties": {
    "FunctionName": String,
    "Handler": String,
    "Runtime": String,
    "Cpu": Number,
    "CustomContainerConfig": Map,
    "Code": Map,
    "CustomRuntimeConfig": Map,
    "CustomDns": Map,
    "Description": String,
    "DiskSize": Integer,
    "EnvironmentVariables": Map,
    "GpuConfig": Map,
    "InstanceLifecycleConfig": Map,
    "InternetAccess": Boolean,
    "InstanceConcurrency": Integer,
    "Layers": List,
    "LogConfig": Map,
    "MemorySize": Integer,
    "NasConfig": Map,
    "OssMountConfig": Map,
    "Role": String,
    "TracingConfig": Map,
    "Timeout": Integer,
    "VpcConfig": Map,
    "DisableOndemand": Boolean,
    "SessionAffinityConfig": Map,
    "InstanceIsolationMode": String,
    "SessionAffinity": String,
    "Tags": List
  }
}

Propriedades

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

FunctionName

String

Sim

Sim

Nome da função.

O nome pode conter letras, dígitos, sublinhados (_) e hifens (-). Deve ter de 1 a 64 caracteres e não pode começar com dígito ou hífen (-).

Handler

String

Sim

Sim

Ponto de entrada de execução da função.

Nenhuma.

Runtime

String

Sim

Sim

Runtime da função.

Valores válidos: nodejs8, nodejs10, nodejs12, nodejs14, nodejs16, nodejs18, nodejs20, go1, python3, python3.9, python3.10, java8, java11, php7.2, dotnetcore3.1, custom, custom.debian10 e custom-container.

Cpu

Number

Não

Sim

Especificação de CPU da função.

Unidade: vCPU. Deve ser múltiplo de 0,05. Valores válidos: 0,05 a 16. A proporção entre CPU e memória (em GB) deve ser de 1:1 a 1:4.

CustomContainerConfig

Map

Não

Sim

Configuração do runtime de contêiner personalizado.

Executa a função com uma imagem de contêiner personalizado. Especifique Code ou CustomContainerConfig. Propriedades de CustomContainerConfig.

Code

Map

Não

Sim

Pacote ZIP do código da função.

Especifique Code ou CustomContainerConfig. Propriedades de Code.

CustomRuntimeConfig

Map

Não

Sim

Configuração do runtime personalizado.

Propriedades de CustomRuntimeConfig.

CustomDns

Map

Não

Sim

Configuração de DNS personalizado.

Propriedades de CustomDns.

Description

String

Não

Sim

Descrição da função.

Nenhuma.

DiskSize

Integer

Não

Sim

Tamanho do disco da função.

Unidade: MB. Valores válidos: 512 e 10240.

EnvironmentVariables

Map

Não

Sim

Variáveis de ambiente da função.

Acessíveis no runtime da função. Exemplo:

{'testKey': 'testValue'}

GpuConfig

Map

Não

Sim

Configuração de GPU da função.

Propriedades de GpuConfig.

InstanceLifecycleConfig

Map

Não

Sim

Configuração do hook de ciclo de vida da instância.

Propriedades de InstanceLifecycleConfig.

InternetAccess

Boolean

Não

Sim

Indica se a função pode acessar a internet.

Padrão: true.

InstanceConcurrency

Integer

Não

Sim

Concorrência máxima da instância.

Nenhuma.

Layers

List

Não

Sim

Lista de layers.

Os layers são mesclados em ordem decrescente de índice. Um layer de índice menor sobrescreve arquivos de mesmo nome provenientes de layers de índice maior. Exemplo:

["acs:fc:cn-beijing:186824xxxxxx:layers/fc_layer/versions/1"]

LogConfig

Map

Não

Sim

Configuração de log.

Os logs da função são gravados no Logstore configurado. Propriedades de LogConfig.

DisableOndemand

Boolean

Não

Não

Indica se a criação de instâncias sob demanda deve ser desativada.

Quando ativado, apenas instâncias provisionadas são utilizadas.

SessionAffinityConfig

Map

Não

Não

Configuração de afinidade de sessão.

Nenhuma.

InstanceIsolationMode

String

Não

Não

Modo de isolamento da instância.

Nenhuma.

SessionAffinity

String

Não

Não

Política de afinidade de sessão.

Valores válidos:

  • MCP_SSE: implementa afinidade de requisição para o protocolo MCP SSE.

  • GENERATED_COOKIE: afinidade baseada em cookie.

  • HEADER_FIELD: afinidade baseada em cabeçalho.

  • NONE: Sem associação.

MemorySize

Integer

Não

Sim

Tamanho da memória da função.

Unidade: MB. Deve ser múltiplo de 64. Intervalo válido: 128 MB a 32 GB. A proporção entre CPU e memória (em GB) deve ser de 1:1 a 1:4.

NasConfig

Map

Não

Sim

Configuração do NAS.

Permite que a função acesse recursos NAS especificados. Propriedades de NasConfig.

OssMountConfig

Map

Não

Sim

Configuração de montagem do OSS.

Propriedades de OssMountConfig.

Role

String

Não

Sim

Função do RAM concedida ao Function Compute.

O Function Compute assume essa função para gerar credenciais temporárias de acesso a serviços da Alibaba Cloud, como OSS e Tablestore.

TracingConfig

Map

Não

Sim

Configuração do Tracing Analysis.

Registra latência de requisição, tempo de cold start e tempo de execução dentro da função por meio da integração com o Tracing Analysis. Propriedades de TracingConfig.

Timeout

Integer

Não

Sim

Tempo limite de execução da função.

Unidade: segundos. Valores válidos: 1 a 86400. Padrão: 3. A função é encerrada após esse período.

Tags

List

Não

Não

Lista de tags personalizadas.

VpcConfig

Map

Não

Sim

Configuração da VPC.

Permite que a função acesse recursos de VPC especificados. Propriedades de VpcConfig.

Sintaxe de Tags

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Propriedades de Tags

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Value

String

Não

Não

Valor da tag.

Comprimento: 0 a 256 caracteres.

Key

String

Sim

Não

Chave da tag.

Comprimento: 1 a 256 caracteres.

Sintaxe de TracingConfig

"TracingConfig": {
  "Type": String,
  "Params": Map
}

Propriedades de TracingConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Type

String

Não

Sim

Tipo de protocolo para o Tracing Analysis.

Apenas Jaeger é suportado.

Params

Map

Não

Sim

Parâmetros do Tracing Analysis.

Um map[string]string. A chave é "endpoint" e o valor é o endpoint interno do Tracing Analysis. Exemplo: endpoint: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_xxx/api/otlp/traces.

Sintaxe de VpcConfig

"VpcConfig": {
  "VpcId": String,
  "VSwitchIds": List,
  "SecurityGroupId": String
}

Propriedades de VpcConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

VpcId

String

Não

Sim

ID da rede VPC.

Nenhuma.

VSwitchIds

List

Não

Sim

Lista de vSwitches.

Nenhuma.

SecurityGroupId

String

Não

Sim

ID do grupo de segurança.

Nenhuma.

Sintaxe de InstanceLifecycleConfig

"InstanceLifecycleConfig": {
  "PreStop": Map,
  "Initializer": Map
}

Propriedades de InstanceLifecycleConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

PreStop

Map

Não

Sim

Configuração do método PreStop.

Propriedades de PreStop.

Initializer

Map

Não

Sim

Configuração do método initializer.

Propriedades de Initializer.

Sintaxe de PreStop

"PreStop": {
  "Timeout": Integer,
  "Handler": String
}

Propriedades de PreStop

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Timeout

Integer

Não

Sim

Tempo limite do método de callback.

Unidade: segundos.

Handler

String

Não

Sim

Ponto de entrada do método de callback.

Mesmo formato do handler da função.

Sintaxe de Initializer

"Initializer": {
  "Timeout": Integer,
  "Handler": String
}

Propriedades de Initializer

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Timeout

Integer

Não

Sim

Tempo limite do método de callback.

Unidade: segundos.

Handler

String

Não

Sim

Ponto de entrada do método de callback.

Mesmo formato do handler da função.

Sintaxe de CustomContainerConfig

"CustomContainerConfig": {
  "ResolvedImageUri": String,
  "AccelerationInfo": Map,
  "AcrInstanceId": String,
  "Entrypoint": List,
  "Command": List,
  "AccelerationType": String,
  "Port": Integer,
  "HealthCheckConfig": Map,
  "Image": String,
  "RegistryConfig": Map
}

Propriedades de CustomContainerConfig

Propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

ResolvedImageUri

String

Não

Sim

Digest da imagem implantada.

O runtime utiliza a versão do código neste digest. Retornado por GetFunction; não precisa ser especificado.

AccelerationInfo

Map

Não

Sim

Informações de aceleração de imagem.

Propriedade AccelerationInfo.

AcrInstanceId

String

Não

Sim

ID do repositório de imagens do ACR Enterprise Edition.

Obrigatório para imagens do ACR Enterprise Edition.

Entrypoint

List

Não

Sim

Comando de inicialização do contêiner.

Nenhuma.

Command

List

Não

Sim

Parâmetros de inicialização do contêiner.

Nenhuma.

AccelerationType

String

Não

Sim

Indica se a aceleração de imagem deve ser ativada.

O padrão ativa a aceleração de imagem. None desativa a aceleração de imagem.

Port

Integer

Não

Sim

Porta de escuta do servidor HTTP para o runtime de contêiner personalizado.

Nenhuma.

HealthCheckConfig

Map

Não

Sim

Configuração personalizada de verificação de integridade da função.

Propriedades de HealthCheckConfig.

Image

String

Não

Sim

URL da imagem do contêiner.

Nenhuma.

RegistryConfig

Map

Não

Sim

Configuração do repositório de imagens.

Para mais informações, consulte Propriedades de RegistryConfig.

Sintaxe de RegistryConfig

"RegistryConfig": {
  "CertConfig": Map,
  "NetworkConfig": Map,
  "AuthConfig": Map
}

Propriedades de RegistryConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

CertConfig

Map

Sim

Sim

Configuração de certificado.

Para mais informações, consulte Propriedades de CertConfig.

NetworkConfig

Map

Não

Sim

Configuração de rede.

Para mais informações, consulte Propriedades de NetworkConfig.

AuthConfig

Map

Não

Sim

Configuração de autorização.

Para mais informações, consulte Propriedades de AuthConfig.

Sintaxe de CertConfig

"CertConfig": {
  "Insecure": Boolean,
  "RootCaCertBase64": String
}

Propriedades de CertConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Insecure

Boolean

Sim

Sim

Indica se a verificação de certificado deve ser ignorada.

Nenhuma.

RootCaCertBase64

String

Não

Sim

Certificado CA para o repositório de imagens.

Nenhuma.

Sintaxe de NetworkConfig

"NetworkConfig": {
  "VSwitchId": String,
  "VpcId": String,
  "SecurityGroupId": String
}

Propriedades de NetworkConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

VSwitchId

String

Sim

Sim

ID do vSwitch que pode se conectar ao repositório de imagens.

Nenhuma.

VpcId

String

Sim

Sim

ID da VPC que pode se conectar ao repositório de imagens.

Nenhuma.

SecurityGroupId

String

Sim

Sim

ID do grupo de segurança que pode se conectar ao repositório de imagens.

Nenhuma.

Sintaxe de AuthConfig

"AuthConfig": {
  "Password": String,
  "UserName": String
}

Propriedades de AuthConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Password

String

Sim

Sim

Senha para o repositório de imagens.

Nenhuma.

UserName

String

Sim

Sim

Nome de usuário para o repositório de imagens.

Nenhuma.

Sintaxe de AccelerationInfo

"AccelerationInfo": {
  "Status": String
}

Propriedade de AccelerationInfo

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Status

String

Não

Sim

Status da aceleração de imagem.

Nenhuma.

Sintaxe de HealthCheckConfig

"HealthCheckConfig": {
  "TimeoutSeconds": Integer,
  "InitialDelaySeconds": Integer,
  "HttpGetUrl": String,
  "PeriodSeconds": Integer,
  "FailureThreshold": Integer,
  "SuccessThreshold": Integer
}

Propriedades de HealthCheckConfig

Propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

TimeoutSeconds

Integer

Não

Sim

Tempo limite da verificação de integridade.

Valores válidos: 1 a 3. Padrão: 1.

InitialDelaySeconds

Integer

Não

Sim

Atraso antes da primeira verificação de integridade após a inicialização do contêiner.

Valores válidos: 0 a 120. Padrão: 0.

HttpGetUrl

String

Não

Sim

URL de verificação de integridade do contêiner.

Comprimento máximo: 2048 caracteres.

PeriodSeconds

Integer

Não

Sim

Intervalo da verificação de integridade.

Valores válidos: 1 a 120. Padrão: 3.

FailureThreshold

Integer

Não

Sim

Limiar de falha da verificação de integridade.

Após esse número de falhas consecutivas, a verificação é considerada malsucedida. Valores válidos: 1 a 120. Padrão: 3.

SuccessThreshold

Integer

Não

Sim

Limiar de sucesso da verificação de integridade.

Após esse número de sucessos consecutivos, a verificação é considerada aprovada. Valores válidos: 1 a 120. Padrão: 1.

Sintaxe de Code

"Code": {
  "SourceCode": String,
  "ZipFile": String,
  "Checksum": String,
  "OssObjectName": String,
  "OssBucketName": String
}

Propriedades de Code

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

SourceCode

String

Não

Sim

Código da função.

Nenhuma.

ZipFile

String

Não

Sim

Pacote ZIP do código da função codificado em Base64.

Nenhuma.

Checksum

String

Não

Sim

Checksum CRC-64 do pacote de código.

Quando fornecido, o Function Compute verifica o checksum do pacote de código.

OssObjectName

String

Não

Sim

Nome do objeto OSS do pacote ZIP de código.

Nenhuma.

OssBucketName

String

Não

Sim

Nome do bucket OSS do pacote ZIP de código.

Nenhuma.

Sintaxe de CustomRuntimeConfig

"CustomRuntimeConfig": {
  "Args": List,
  "Command": List,
  "Port": Integer,
  "HealthCheckConfig": Map
}

Propriedades de CustomRuntimeConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Args

List

Não

Sim

Parâmetros de inicialização da instância.

Nenhuma.

Command

List

Não

Sim

Comando de inicialização da instância.

Nenhuma.

Port

Integer

Não

Sim

Porta de escuta do servidor HTTP.

Nenhuma.

HealthCheckConfig

Map

Não

Sim

Configuração personalizada de verificação de integridade da função.

Propriedades de HealthCheckConfig.

Sintaxe de GpuConfig

"GpuConfig": {
  "GpuMemorySize": Integer,
  "GpuType": String
}

Propriedades de GpuConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

GpuMemorySize

Integer

Não

Sim

Especificação de memória da GPU.

Unidade: MB. Deve ser múltiplo de 1024.

GpuType

String

Não

Sim

Tipo de instância GPU.

Valores válidos:

  • fc.gpu.tesla.1 indica um tipo de instância da série GPU Tesla.

  • fc.gpu.ampere.1 indica um tipo de instância da série GPU Ampere.

  • fc.gpu.ada.1 indica um tipo de instância da série GPU Ada.

Sintaxe de OssMountConfig

"OssMountConfig": {
  "MountPoints": List
}

Propriedades de OssMountConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

MountPoints

List

Não

Sim

Lista de pontos de montagem do OSS.

Propriedades de MountPoints.

Sintaxe de MountPoints

"MountPoints": [
  {
    "MountDir": String,
    "BucketName": String,
    "Endpoint": String,
    "ReadOnly": Boolean,
    "BucketPath": String
  }
]

Propriedades de MountPoints

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

MountDir

String

Não

Sim

Pasta de montagem local.

Nenhuma.

BucketName

String

Não

Sim

Bucket OSS montado.

Nenhuma.

Endpoint

String

Não

Sim

Endpoint do OSS.

Nenhuma.

ReadOnly

Boolean

Não

Sim

Indica se a montagem é somente leitura.

Nenhuma.

BucketPath

String

Não

Sim

Caminho do bucket OSS montado.

Nenhuma.

Sintaxe de CustomDns

"CustomDns": {
  "Searches": List,
  "DnsOptions": List,
  "NameServers": List
}

Propriedades de CustomDns

Propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Searches

List

Não

Sim

Lista de domínios de busca DNS.

Nenhuma.

DnsOptions

List

Não

Sim

Opções de DNS no arquivo resolv.conf.

Cada item é um par chave-valor no formato key:value (chave obrigatória). Propriedades de DnsOptions.

NameServers

List

Não

Sim

Endereços IP dos servidores DNS.

Nenhuma.

Sintaxe de DnsOptions

"DnsOptions": [
  {
    "Value": String,
    "Name": String
  }
]

Propriedades de DnsOptions

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Name

String

Não

Sim

Nome do item de configuração.

Nenhuma.

Value

String

Não

Sim

Valor do item de configuração.

Nenhuma.

Sintaxe de NasConfig

"NasConfig": {
  "MountPoints": List,
  "UserId": Integer,
  "GroupId": Integer
}

Propriedades de NasConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

MountPoints

List

Não

Sim

Lista de pontos de montagem.

Propriedades de MountPoints.

UserId

Integer

Não

Sim

ID da conta.

Nenhuma.

GroupId

Integer

Não

Sim

ID do grupo.

Nenhuma.

Sintaxe de LogConfig

"LogConfig": {
  "Project": String,
  "LogBeginRule": String,
  "Logstore": String,
  "EnableInstanceMetrics": Boolean,
  "EnableRequestMetrics": Boolean
}

Propriedades de LogConfig

Nome da propriedade

Tipo

Obrigatório

Permite atualizações

Descrição

Restrição

Project

String

Não

Sim

Nome do projeto SLS.

Nenhuma.

LogBeginRule

String

Não

Sim

Regra de correspondência para a primeira linha de um log.

Nenhuma.

Logstore

String

Não

Sim

Nome do Logstore SLS.

Nenhuma.

EnableInstanceMetrics

Boolean

Não

Sim

Indica se métricas no nível da instância devem ser ativadas.

Rastreia utilização de CPU, uso de memória, condições de rede e contagem de requisições por instância. Padrão: false.

EnableRequestMetrics

Boolean

Não

Sim

Indica se métricas no nível da requisição devem ser ativadas.

Rastreia tempo de execução e uso de memória por invocação da função. Padrão: true.

Valores de retorno

Fn::GetAtt

  • FunctionId: ID único da função gerado pelo sistema.

  • FunctionName: Nome da função.

  • ARN: ARN da função.

Exemplos

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  Function:
    Type: ALIYUN::FC3::Function
    Properties:
      Code:
        SourceCode: |
          import time
          import json
          import urllib.request
          import logging

          def handler(event, context):
              logger = logging.getLogger()

              event = json.loads(event)
              logger.info('receive request: %s', event)

              res_props = event['ResourceProperties']

              result = dict(
                  RequestId=event['RequestId'],
                  LogicalResourceId=event['LogicalResourceId'],
                  StackId=event['StackId'],
                  Status='SUCCESS',
                  PhysicalResourceId='dummy'
              )
              if event['RequestType'] != 'Delete':
                  result['Data'] = dict(z=res_props['X'] + res_props['Y'])

              headers = {
                  'Content-type': 'application/json',
                  'Accept': 'application/json',
                  'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())
              }
              data = json.dumps(result).encode('utf-8')  # Use an encoded byte string.
              req = urllib.request.Request(event['ResponseURL'], data=data, headers=headers, method='PUT')
              with urllib.request.urlopen(req) as resp:
                  resp_content = resp.read().decode('utf-8')  # Read and decode the response.
              logger.info('response: %s', resp_content)
      Handler: index.handler
      FunctionName:
        Ref: FunctionName
      Runtime:
        Ref: Runtime
Parameters:
  Runtime:
    Default: python3.9
    Required: true
    Type: String
    Description:
      en: The programming language of the function.
  FunctionName:
    Default: hello-world
    Required: true
    Type: String
    Description:
      en: The name of the function.
Outputs:
  FunctionId:
    Description: The function ID
    Value:
      Fn::GetAtt:
        - Function
        - FunctionId
  ARN:
    Description: The ARN for ALIYUN::ROS::CustomResource
    Value:
      Fn::GetAtt:
        - Function
        - ARN
  FunctionName:
    Description: The function name
    Value:
      Fn::GetAtt:
        - Function
        - FunctionName
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Resources": {
    "Function": {
      "Type": "ALIYUN::FC3::Function",
      "Properties": {
        "Code": {
          "SourceCode": "import time\nimport json\nimport urllib.request\nimport logging\n\n\ndef handler(event, context):\n    logger = logging.getLogger()\n\n    event = json.loads(event)\n    logger.info('receive request: %s', event)\n\n    res_props = event['ResourceProperties']\n\n    result = dict(\n        RequestId=event['RequestId'],\n        LogicalResourceId=event['LogicalResourceId'],\n        StackId=event['StackId'],\n        Status='SUCCESS',\n        PhysicalResourceId='dummy'\n    )\n    if event['RequestType'] != 'Delete':\n        result['Data'] = dict(z=res_props['X'] + res_props['Y'])\n\n    headers = {\n        'Content-type': 'application/json',\n        'Accept': 'application/json',\n        'Date': time.strftime('%a, %d %b %Y %X GMT', time.gmtime())\n    }\n    data = json.dumps(result).encode('utf-8')  # Use an encoded byte string.\n    req = urllib.request.Request(event['ResponseURL'], data=data, headers=headers, method='PUT')\n    with urllib.request.urlopen(req) as resp:\n        resp_content = resp.read().decode('utf-8')  # Read and decode the response.\n    logger.info('response: %s', resp_content)\n"
        },
        "Handler": "index.handler",
        "FunctionName": {
          "Ref": "FunctionName"
        },
        "Runtime": {
          "Ref": "Runtime"
        }
      }
    }
  },
  "Parameters": {
    "Runtime": {
      "Default": "python3.9",
      "Required": true,
      "Type": "String",
      "Description": {
        "en": "The programming language of the function."
      }
    },
    "FunctionName": {
      "Default": "hello-world",
      "Required": true,
      "Type": "String",
      "Description": {
        "en": "The name of the function."
      }
    }
  },
  "Outputs": {
    "FunctionId": {
      "Description": "The function ID",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "FunctionId"
        ]
      }
    },
    "ARN": {
      "Description": "The ARN for ALIYUN::ROS::CustomResource",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "ARN"
        ]
      }
    },
    "FunctionName": {
      "Description": "The function name",
      "Value": {
        "Fn::GetAtt": [
          "Function",
          "FunctionName"
        ]
      }
    }
  }
}