npm モジュールによるサービスの置き換え
Overview
非推奨のサードパーティ サービス統合は、 npm から利用可能な対応する公式のライブラリを使用するように移行する必要があります。 。このページ後半のセクションには、各サービスの詳細と例が記載されています。
非推奨のサービスから移行するには、次の手順に従います。
npm
のサービス用ライブラリをアプリに追加します。関数にライブラリをインポートします。 組み込みサービス アクションへの呼び出しを、インポートされたライブラリ内の対応するメソッドへの呼び出しに置き換えます。
サービスに Webhook がある場合は、 HTTPS endpointsに変換します。
HTTP Service
HTTP Service クライアントを介して送信された HTTP リクエストを、 no-fetch などの HTTP ライブラリへの呼び出しに置き換え または 軸は以下の とおりです。
ノード取得
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 Service クライアントを介した呼び出しを、公式の Twilio ノード ヘルパー ライブラリへの呼び出しに置き換えます。
npm i twilio
Twilio のリクエストを認証するには、 アカウント SID と認証トークンを値として保存します。 その後は関数内でアクセスし、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 Service
Amazon Web ServicesService クライアントを介する呼び出しを、公式のAmazon Web ServicesJavaScript SDK への呼び出しに置き換えます。
npm i aws-sdk
重要
App Services はまだ、 Amazon Web Services SDK のバージョン 3 をサポートしていません。 バージョン 2 SDK を使用して、関数内の非推奨のAmazon Web Services Service を置き換えます。
Amazon Web Servicesリクエストを認証するには、アクセスキーIDと シークレット アクセスキー を値として保存します。 その後は関数内でアクセスし、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(); }