서비스를 npm 모듈로 교체
개요
npm 에서 제공하는 해당 공식 라이브러리를 사용하려면 더 이상 사용되지 않는 타사 서비스 통합을 마이그레이션 해야 합니다. . 이 페이지 뒷부분의 섹션에는 각 서비스에 대한 세부 정보와 예제가 포함되어 있습니다.
더 이상 사용되지 않는 서비스에서 마이그레이션하려면 다음 단계를 따르세요.
npm
의 서비스에 대한 라이브러리를 앱에 추가 합니다.함수 에서 라이브러리를 가져옵니다 . 내장 서비스 조치에 대한 호출을 가져온 라이브러리의 해당 메서드에 대한 호출로 대체합니다.
서비스에 웹훅이 있는 경우 이를 HTTPS endpoints로 변환합니다.
HTTP Service
클라이언트를 통해 HTTP HTTP Service 전송된 요청을 HTTP node-fetch 와 같은 라이브러리에 대한 호출로 바꿉니다. 또는 axios.
node-fetch
npm i node-fetch@^2
중요
Atlas App Services는 node-fetch
의 v3를 지원하지 않습니다. 대신 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 }
Twilio 서비스
Twilio 서비스 클라이언트를 통한 호출을 공식 Twilio 노드 헬퍼 라이브러리에 대한 호출로 대체합니다.
npm i twilio
Twilio 요청을 인증하려면 계정 ID 및 인증 토큰을 values 로 저장합니다. 그런 다음 함수 내에서 액세스하여 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!", }) }
Amazon Web Services 서비스
Amazon Web Services 서비스 클라이언트를 통한 호출을 공식 Amazon Web Services JavaScript SDK에 대한 호출로 대체합니다.
npm i aws-sdk
중요
App Services는 아직 Amazon Web Services SDK 버전 3을 지원하지 않습니다. 버전 2 SDK를 사용하여 함수에서 더 이상 사용되지 않는 Amazon Web Services 서비스를 대체합니다.
Amazon Web Services 요청을 인증하려면 Access Key ID와 비밀 액세스 키를 values 로 저장합니다. 그런 다음 함수 내에서 액세스하여 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(); }