Amazon Comprehend をNode.jsで使う

作りたいアプリケーションがあって、それのために AWS Lambda で APIからPOSTされたテキストを Amazon Comprehendのキーワード抽出にかけてからその結果をDynamoDBに登録する、というコードを書いていた。

AWS SAM でぼちぼち作っていて、DynamoDBへのPOSTはできるようになった。 とりあえず Comprehendを呼ぶ部分のコードだけメモ。

api/src/lib/comprehend.js

const AWS = require("aws-sdk");

AWS.config.update({ region: "ap-northeast-1" });
const comprehend = new AWS.Comprehend();

exports.detectKeyPhrases = async function(text) {
  try {
    const params = {
      LanguageCode: "ja",
      TextList: [ text ]
    };
    const result = await comprehend.batchDetectKeyPhrases(params).promise();
    return result;
  }
  catch(err) {
    console.error(err);
    return null;
  }
}

api/src/handlers/post_event.js

const comprehend = require("../lib/comprehend");

exports.postTextHandler = async (event) => {
  const body = JSON.parse(event.body)
  
  // comprehend
  const keyPhrases = await detectKeyPhrases(body.post);

  ~
}