Substituir serviços por módulos npm
Nesta página
Visão geral
Você deve migrar integrações de serviços de terceiros obsoletas para usar as bibliotecas oficiais correspondentes disponíveis a partir de npm. As seções mais adiante nesta página contêm detalhes e exemplos para cada serviço.
Para migrar de um serviço obsoleto:
Adicione uma biblioteca para o serviço de
npm
ao seu aplicativo.Importe a biblioteca em suas funções. Substitua quaisquer chamadas para a ação de serviço incorporadas por chamadas para os métodos correspondentes na biblioteca importada.
Se o serviço tiver webhooks, converta-os em HTTPS endpoints.
HTTP Service
Substituir HTTP solicitações enviadas por um cliente por chamadas para HTTP Service uma HTTP biblioteca como node-fetch ou axios.
node-fetch
npm i node-fetch@^2
Importante
O Atlas App Services não suporta a v3 de node-fetch
. Em vez disso, use v2.
exports = async function() { const http = context.services.get("myHttp"); const response = await http.get({ url: "https://www.example.com", headers: { "Content-Type": [ "application/json" ] } }) return response.body.text() }
exports = async function() { const fetch = require("node-fetch"); // require calls must be in exports function const response = await fetch("https://www.example.com", { method: "GET", headers: { "Content-Type": "application/json" } }) return response.text() }
axios
npm i axios
exports = async function() { const http = context.services.get("myHttp"); const response = await http.get({ url: "https://www.example.com", headers: { "Content-Type": [ "application/json" ] } }) return response.body.text() }
exports = async function() { const axios = require("axios"); // require calls must be in exports function const response = await axios.get("https://www.example.com", { headers: { "Content-Type": "application/json" } }) return response.data }
Serviço Twilio
Substitua chamadas por meio de um cliente do Twilio Service por chamadas para a Biblioteca auxiliar oficial do Twilio.
npm i twilio
Para autenticar solicitações do Twilio, armazene o SID da sua conta e o token de autenticação como valores. Em seguida, você pode acessá-los dentro de funções e passá-los para o SDK.
exports = async function() { const twilio = context.services.get("myTwilio"); twilio.send({ to: "+15558675309", from: "+15551234567", body: "Hello from App Services!", }); }
exports = async function() { // Note: require calls must be in the exported function const twilio = require('twilio')( // Your Account SID and Auth Token from https://www.twilio.com/console // Specify the same Twilio credentials as the service configuration context.values.get("TwilioAccountSID"), context.values.get("TwilioAuthToken"), ) await twilio.messages.create({ to: "+15558675309", from: "+15551234567", body: "Hello from App Services!", }) }
Serviço Amazon Web Services
Substitua chamadas por meio de um cliente do Amazon Web Services Service por chamadas para o SDK oficial do Amazon Web JavaScript Services.
npm i aws-sdk
Importante
O App Services ainda não é compatível com a versão 3 do Amazon Web Services SDK. Use o SDK versão 2 para substituir o Amazon Web Services obsoleto em suas funções.
Para autenticar solicitações Amazon Web Services, armazene seu ID de chave de acesso e chave de acesso secreta como valores. Em seguida, você pode acessá-los dentro de funções e passá-los para o SDK.
S3
exports = async function() { const s3 = context.services.get("myAWS").s3("us-east-1"); const putResult = await s3.PutObject({ Bucket: "bucketName", Key: "keyName", Body: EJSON.stringify({ hello: "world" }), }); const getResult = await s3.GetObject({ Bucket: "bucketName", Key: "keyName", }); }
exports = async function() { const S3 = require('aws-sdk/clients/s3'); // require calls must be in exports function const s3 = new S3({ accessKeyId: context.values.get("awsAccessKeyId"), secretAccessKey: context.values.get("awsSecretAccessKey"), region: "us-east-1", }); // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property const putResult = await s3.putObject({ Bucket: "bucketName", Key: "keyName", Body: EJSON.stringify({ hello: "world" }), }).promise(); // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property const getResult = await s3.getObject({ Bucket: "bucketName", Key: "keyName", }).promise(); }
Kinesis
exports = async function() { const kinesis = context.services.get("myAWS").kinesis("us-east-1"); const putResult = await kinesis.PutRecord({ Data: EJSON.stringify({ hello: "world" }), StreamName: "myStream", PartitionKey: "myPartition", }); }
exports = async function() { const Kinesis = require('aws-sdk/clients/kinesis'); // require calls must be in exports function const kinesis = new Kinesis({ accessKeyId: context.values.get("awsAccessKeyId"), secretAccessKey: context.values.get("awsSecretAccessKey"), region: "us-east-1", }); // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Kinesis.html#putRecord-property const putResult = await kinesis.putRecord({ Data: EJSON.stringify({ hello: "world" }), StreamName: "myStream", PartitionKey: "myPartition", }).promise(); }
Lambda
exports = async function() { const lambda = context.services.get('MyAwsService').lambda("us-east-1"); const invokeResult = await lambda.Invoke({ FunctionName: "myLambdaFunction", Payload: EJSON.stringify({ hello: "world" }), }); };
exports = async function() { const Lambda = require('aws-sdk/clients/lambda'); // require calls must be in exports function const lambda = new Lambda({ accessKeyId: context.values.get("awsAccessKeyId"), secretAccessKey: context.values.get("awsSecretAccessKey"), region: "us-east-1", }); // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#invoke-property const invokeResult = await lambda.invoke({ FunctionName: "myLambdaFunction", Payload: EJSON.stringify({ hello: "world" }), }).promise(); }
SES
exports = async function() { const ses = context.services.get('MyAwsService').ses("us-east-1"); const sendResult = await ses.SendEmail({ Source: "sender@example.com", Destination: { ToAddresses: ["receiver@example.com"] }, Message: { Body: { Html: { Charset: "UTF-8", Data: `This is a message from user ${context.user.id} sent through AWS SES` } }, Subject: { Charset: "UTF-8", Data: "Test Email Please Ignore" }, }, }); };
exports = async function() { const SES = require('aws-sdk/clients/ses'); // require calls must be in exports function const ses = new SES({ accessKeyId: context.values.get("awsAccessKeyId"), secretAccessKey: context.values.get("awsSecretAccessKey"), region: "us-east-1", }); // https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html#sendEmail-property const sendResult = await ses.sendEmail({ Source: "sender@example.com", Destination: { ToAddresses: ["receiver@example.com"] }, Message: { Body: { Html: { Charset: "UTF-8", Data: `This is a message from user ${context.user.id} sent through AWS SES` } }, Subject: { Charset: "UTF-8", Data: "Test Email Please Ignore" }, }, }).promise(); }