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>e