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>