Noções básicas sobre o suporte do Edge para módulos Node.js

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:

  1. 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
  2. Defina a propriedade como desejado. Por exemplo, para negar acesso apenas ao localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Salve as alterações.
  4. Verifique se o arquivo de propriedades é de propriedade da Apigee usuário:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Reinicie o processador de mensagens:
    &gt; /<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ínio apigee.net, e um certificado SSL curinga para *.apigee.net. Contanto que os apps para o domínio apigee.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

No campo <TargetEndpoint> definição, o elemento <ScriptTarget> elemento leva mais tempo parâmetros opcionais além de <ResourceURL>. Também é possível passar argumentos de linha de comando e variáveis de ambiente para um script em Node.js com a função <EnvironmentVariables> e &lt;Arguments&gt; parâmetros:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>
e