Esta é a documentação do Apigee Edge.
  Acesse
     Documentação da Apigee X. informações
Com qual versão do Node.js há suporte Apigee Edge?
Atualmente, o Edge oferece suporte ao Node.js 0.10.32.
Quais módulos Node.js padrão são com suporte no Edge?
Use a tabela a seguir para determinar quais módulos Node.js padrão são incluídos no Edge. Em alguns casos, os módulos incluídos são apenas parcialmente aceitos. São módulos integrados ao Node.js.| Módulo | Status | Observações | 
|---|---|---|
assert | 
        Compatível | |
buffer | 
        Compatível | |
child_process | 
        Restrito | Uma exceção será lançada se for feita uma tentativa de gerar um subprocesso. No entanto, “garfo” é compatível com a geração de subscritos. | 
cluster | 
        Desativado | O método cluster.isMaster sempre retorna verdadeiro, e outros métodos não são implementados. Uma cópia de cada script Node.js é implantada em cada processador de mensagens do Edge. | 
crypto | 
        Compatível | |
dns | 
        Compatível | |
domain | 
        Compatível | |
dgram | 
        Restrito | Os aplicativos Node.js no ambiente da Apigee não poderão acessar serviços no via UDP devido à nossa arquitetura de rede. | 
events | 
        Compatível | |
fs | 
        Restrito | O acesso ao sistema de arquivos é restrito ao diretório em que o script foi iniciado: o
        /resources/node. Os scripts Node.js podem ler e gravar arquivos
        diretório, por exemplo, como uma área de rascunho temporária, mas não há garantias de que
        por quanto tempo os arquivos serão mantidos. | 
      
http | 
        Compatível | O host virtual e o caminho das solicitações recebidas são especificados no proxy da API, não pelo módulo HTTP. Consulte "Como compreender o suporte para as APIs http e https módulos" para mais informações. | 
https | 
        Compatível | Como criar um "https" de servidor se comporta de forma idêntica a um "http" servidor. Consulte "Como compreender o suporte para os módulos http e https" para mais informações imprecisas ou inadequadas. | 
module | 
        Compatível | |
net | 
        Restrito | As tentativas de detectar conexões TCP de entrada gerarão uma exceção. | 
path | 
        Compatível | |
module | 
        Compatível | |
process | 
        Suporte parcial | A funcionalidade para manipular o ID do usuário, as associações a grupos e o diretório de trabalho não está suporte. | 
punycode | 
        Compatível | |
querystring | 
        Compatível | |
readline | 
        Desativado | Não há entrada padrão para scripts em execução no Apigee Edge. | 
repl | 
        Desativado | Não há entrada padrão para scripts em execução no Apigee Edge. | 
module | 
        Incluído | |
STDIO | 
        Compatível | 
           A saída e o erro padrão são encaminhados para um arquivo de registros no Apigee Edge do Google Cloud. Para visualizá-los, clique no botão Registros do Node.js e a interface de gerenciamento do Apigee Edge para seu proxy de API. Não há entrada padrão para scripts em execução no Apigee Edge. No entanto, é possível transmitir usando o elemento ScriptTarget de TargetEndpoint. Consulte Configuração avançada do ScriptTarget para mais informações.  | 
      
stream | 
        Compatível | |
string_decoder | 
        Compatível | |
timers | 
        Incluído | |
tls | 
        Compatível | Os parâmetros de Transport Layer Security (TLS) funcionam basicamente da mesma maneira Node.js comum. Consulte Como usar o módulo Node.js TLS (SSL) no Apigee Edge para mais detalhes. | 
tty | 
        Desativado | Não há entrada padrão para scripts em execução no Apigee Edge. | 
url | 
        Compatível | |
util | 
        Compatível | |
vm | 
        Compatível | |
zlib | 
        Compatível | 
Outros módulos compatíveis
Esta seção lista outros módulos que não são compatíveis com o Node.js padrão, mas compatível com o Trireme e o Trireme em execução no Apigee Edge. O Trireme é o contêiner Node.js de código aberto executado no Apigee Edge. Ele foi projetado para executar scripts Node.js em uma máquina virtual Java (JVM). Todas as esses módulos estão disponíveis no NPM.
| Módulo | Descrição | 
|---|---|
| apigee-access | Permite que os aplicativos Node.js em execução na plataforma Apigee Edge acessem Funcionalidade específica da Apigee. Use este módulo para acessar e modificar o fluxo variáveis, recuperar dados do armazenamento seguro e usar o cache do Edge, a cota e o OAuth serviços. Consulte também Como usar o módulo apigee-access. | 
| trireme-support | Permite que os aplicativos Node.js aproveitem os recursos específicos do Trireme. Atualmente há suporte para apenas um recurso: carregar módulos Node.js criados em Java. Observação: loadJars não é compatível com o Edge Cloud. | 
| trireme-xslt (em inglês) | Apresenta uma abstração do processamento XLST. Ele foi projetado especificamente para o Trireme para permitir o processamento eficiente de WebGL quando aplicativos Node.js são executados Java. | 
| trireme-jdbc | Fornece acesso ao JDBC a partir do Node.js. Observação: incompatível com o Edge Cloud. Para privacidade de borda Cloud, é possível colocar arquivos JDPC JAR no caminho da classe e usar esse módulo. | 
Suporte para os módulos Node.js usados com frequência
Restrições em scripts Node.js
Observe, entretanto, que o Edge impõe certas restrições aos scripts Node.js, como seguinte:
- Os aplicativos Node.js no ambiente Apigee Edge não podem acessar serviços na Internet via UDP devido à arquitetura de rede de borda.
 
- O acesso ao sistema de arquivos é restrito ao diretório em que o script Node.js foi iniciado: o /resources/node. Os scripts Node.js podem ler e gravar arquivos nesse diretório, para como uma área de rascunho temporária, mas não há garantias de quanto tempo os arquivos persistem.
 
- As tentativas de detectar conexões TCP de entrada geram uma exceção.
 
- A funcionalidade para manipular o ID do usuário, as associações a grupos e o diretório de trabalho não está suporte.
 
- Para entrada padrão, você está limitado a transmitir argumentos usando a classe ScriptTarget
    de TargetEndpoint. Consulte Avançado
    ScriptTarget para mais informações.
 - Para saída padrão, você só pode usar o botão "Registros" do Node.js no Edge
    de gerenciamento de identidade e acesso do proxy. Também é possível usar "apigeetool getlogs" kubectl. Para mais
    consulte Como implantar
    um app Node.js independente.
 - Os módulos que dependem de código nativo não são compatíveis.
 - Módulos que dependem dos recursos do EcmaScript 6, como promessas e geradores, não são
    suporte.
 - As sinalizações de ambiente de execução do Node.js, como "harmony-proxies" não têm suporte.
 
Como definir restrições de conexão IP on Edge para nuvem privada
O Edge para nuvem privada pode impedir que o código Node.js acesse endereços IP desde com "10.", "192.168" e localhost. Se você tentar acessar esses endereços IP, verá um erro no formulário:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Você pode modificar essas restrições definindo a propriedade conf_nodejs_connect.ranges.denied no message-processors.properties. de cada processador de mensagens. Por padrão, essa propriedade tem o valor:
- Edge 4.17.05 e versões anteriores: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
 - Edge 4.17.09 e mais recentes: conf_nodejs_connect.ranges.denied=, que significa sem restrições)
 
Para definir essa propriedade:
- Abra o arquivo message-processor.properties em um
    editor. Se o arquivo não existir, crie-o:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Defina a propriedade como desejado. Por exemplo, para negar acesso apenas ao localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Salve as alterações.
 - Verifique se o arquivo de propriedades é de propriedade da Apigee usuário:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Reinicie o processador de mensagens:
> /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor reiniciar 
Como entender o suporte para os módulos http e https
Todos os aplicativos Node.js em execução no Apigee Edge precisam usar o http ou
  https para detectar as solicitações recebidas. Se você implantasse um script que
  não detecta solicitações de entrada, ele simplesmente seria executado e sairia.
O método listen dos módulos http e https na
  O Node.js usa um número de porta como parâmetro. Exemplo:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Essa "porta" é obrigatório em Node.js, mas o Apigee Edge ignora esse parâmetro. Em vez disso, o proxy de API em que o script Node.js é executado especifica o "host virtual" que ele ouve, e o aplicativo Node.js usa os mesmos hosts virtuais, assim como qualquer outro Apigee Edge proxy.
Cada ambiente na Apigee tem pelo menos um host virtual. O host virtual define o HTTP
  para conexão com a organização da Apigee. Todos os proxies de API em um ambiente compartilham o
  nos mesmos hosts virtuais. Por padrão, dois hosts virtuais estão disponíveis para cada ambiente:
  default e secure. Para obter mais informações, consulte 
  Get Virtual Host e API
  de desenvolvimento do app.
O comando apigeetool deploynodeapp gera um wrapper de proxy do Apigee Edge
  em torno do aplicativo Node.js. Quando implantado, o aplicativo Node.js detecta no
  host virtual definido para o ambiente. O URL de um aplicativo Node.js será sempre
  http://{org_name}-{env_name}.apigee.net:
Como processar as mensagens recebidas solicitações
Como outros aplicativos da Apigee Edge, se o aplicativo de proxy estiver configurado para detectar no
  secure host virtual, ele aceitará solicitações de entrada usando HTTPS.
Como processar mensagens enviadas solicitações
Além de receber o tráfego de entrada, os aplicativos Node.js na Apigee Edge podem usar a
  Módulos http e https para fazer solicitações de saída como qualquer outro Node.js.
  para o aplicativo. Esses módulos funcionam como sempre no Node.js.
Noções básicas sobre o suporte para o módulo TLS
A Apigee Edge oferece suporte ao módulo tls do Node.js.
  Este módulo usa o OpenSSL para oferecer Transport Layer Security (TLS) e/ou Secure Socket Layer
  comunicação de stream criptografado (SSL). É possível usar o módulo tls para criar objetos
  conexões a serviços de back-end de aplicativos Node.js em execução no Edge.
Para entender como o módulo tls funciona no Apigee Edge, é importante
  entender como virtual hosts são usados no Apigee Edge. Todos os ambientes da Apigee
  tem, no mínimo, um host virtual. O host virtual define as configurações HTTP para conexão com o
  organização da Apigee. Todos os proxies de API em um ambiente compartilham os mesmos hosts virtuais. Por padrão,
  Dois hosts virtuais estão disponíveis para cada ambiente: default e
  secure. Para mais informações sobre hosts virtuais, consulte 
  Get Virtual Host e API
  de desenvolvimento do app.
Agora, vamos conferir como o Apigee Edge lida com a comunicação TLS (SSL) para mensagens de entrada e saída. solicitações em aplicativos Node.js:
Como processar as mensagens recebidas solicitações
Dependendo da configuração dos hosts virtuais na sua organização, o Edge oferece esses opções:
- Se o proxy de API estiver configurado para detectar no host virtual 
default, ele aceita solicitações por HTTP. - Se o proxy de API estiver configurado para detectar no host virtual 
secure, ele aceita solicitações por HTTPS. O URL estará no domínioapigee.net, e um certificado SSL curinga para*.apigee.net. Contanto que os apps para o domínioapigee.net, o certificado SSL será validado normalmente. 
Como processar mensagens enviadas solicitações
É possível fazer solicitações com o módulo tls da mesma forma que você faria
  normalmente em Node.js. Basicamente, é preciso adicionar chaves e certificados do lado do cliente
  (arquivos .pem) para o diretório resources/node e carregue-os no
  script. Para mais informações sobre como usar o módulo tls e os métodos dele, consulte a
  Documentação do módulo TLS do Node.js.
Configuração avançada do ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>