8
4

はじめに

AWS Lambdaから社内環境のSQL Serverへの接続方法について紹介していきます:point_up_tone1:
SQLServerへの接続部分で具体的な値の例が無く、苦戦したのでより具体的に値を記載しようと思います!

開発内容

パッケージのインストール

Node.jsでSQLServerへアクセスするために必要なパッケージをインストールします

npm install mssql

Lambdaの設定

特定の環境からのみアクセス可とするため、VPCの設定を行います。
Lambdaの設定タブのVPC からVPC、サブネット、セキュリティグループを設定します。

ソースコード

// パッケージの読み込み
const sql = require('mssql')

// SQL Serverの設定
const config = {
  user: 'sa',
  password: 'XXXXXXX', // 設定したパスワード
  server: '192.168.X.X',
  database: 'DATABASE_NAME', // DB名
}

exports.handler = async (event) => {
  console.log(event)
 
  try {
    const parameter = event.queryStringParameters
    const userId = parameter.userId;
 
    // SQL Serverに接続
    await sql.connect(config)

    // ユーザー情報取得用のSQLを実行    
    const result = await sql.query
      `SELECT * FROM ユーザー情報 WHERE USER_ID = ${userId}`
 
    // 接続を閉じる
    await sql.close();
 
    const record = JSON.stringify(result.recordset)
 
    return {
      statusCode: 200,
      headers: {
        'Access-Control-Allow-Origin': '*'
      },
      body: record
    }
  } catch (err) {
    console.log('SQL ERROR:' + err)
 
    // 接続を閉じる
    await sql.close();
 
    return {
      statusCode: 500,
      headers: {
        'Access-Control-Allow-Origin': '*'
      },
      body: 'ERROR'
    }
  }
};

さいごに

初めてSQLServerと接続の実装を行ったため、上手くいかない原因の特定に時間が掛かり、実装が大変でした・・
こちら参考になれば幸いです:koala::dizzy:

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4