Lambda에서 RDS Proxy를 통해 Aurora(MySQL)에 연결(IAM 인증)
11022 단어 SecretsManager람다RDSProxyNode.js오로라
RDS Proxy
가 도쿄 리전에서 GA되었습니다.htps : // 아 ws. 아마존. 이 m / jp / b ぉ gs / 아 ws / 아마 존 - rds - p 로 xy - w- 게 네라 ly - 아 아 이 b b /
조속히,
Lambda
(으)로부터 이용할 기회가 있었으므로 메모해 둡니다.이번에는 보안에 연결하기 위해
TLS
+ IAM
인증으로 연결합니다.위에서 연결하면
Lambda
에 자격 증명(구체적으로는 DB의 암호)의 취득 코드를 기재하지 않아도 되는 것이 꽤 좋은 느낌입니다.전제
Aurora(MySQL)
존재
절차
Secrets Manager
설정 RDS Proxy
생성 Lambda
에서 연결 Secrets Manager 설정
관리 콘솔에서
Secrets Manager
로 이동하여 자격 증명을 입력하고 비밀을 만듭니다.RDS 프록시 생성
관리 콘솔에서
RDS
로 이동하여 메뉴에서 Proxies
-> 프록시 만들기 버튼 클릭으로 RDS Proxy
를 만듭니다.TLS를 활성화하고,
IAM 인증을 필수로 설정합니다.
Proxy
엔드포인트는 나중에 사용할 수 있으므로 메모해 둡니다.Lambda에서 연결
Node.js
에서 기본 설정으로 만듭니다.Lambda
는 VPC
리소스의 Aurora
에 액세스하므로 VPC
연결이 필요합니다.따라서 먼저
Lambda
에 역할을 부여해야 합니다.여기에서는
EC2FullAccess
를 부여합니다.그런 다음 연결하려는
Aurora
가 있는 VPC
를 Lambda
에 연결합니다.그런 다음
Lambda
에서 만든 RDS Proxy
를 Lambda
에 추가합니다.프로그램
상기에서 모든 설정이 완료되었으므로, 프로그램을 기재해 갑니다.
※ 샘플 코드 전량
htps : // 기주 b. 이 m/테아로스에/아 ws-ぁmb다-사 mpぇ/bぉb/마s r/rds_p로 xy/그리고 x. js
MySQL 클라이언트가 필요하므로 npm 패키지를 포함하여 zip으로 업로드하십시오.
빨리 시도하고 싶은 분은 아래 명령으로 zip을 작성하고 업로드하십시오. ※ yarn이나 npm이 인스톨 되고 있는 전제입니다.
$ git clone [email protected]:Thirosue/aws-lambda-sample.git # サンプルコードをclone
$ cd aws-lambda-sample/rds_proxy/ # 対象ディレクトリに移動
$ yarn # もしくは npm install
$ zip -r src.zip index.js node_modules/ # アップロード用のzip作成
node.js
let AWS = require('aws-sdk');
const mysql2 = require('mysql2/promise');
let connection;
const username = 'admin'; // 接続ユーザを設定してください。
exports.handler = async(event) => {
console.log("Starting query ...\n");
console.log("Running iam auth ...\n");
const signer = new AWS.RDS.Signer({
region: 'ap-northeast-1',
hostname: process.env['proxy_endpoint'], // メモしておいたプロキシエンドポイントを設定します。ここでは環境変数から取得しています。
port: 3306,
username
});
const token = signer.getAuthToken({
username
});
console.log(token);
console.log ("IAM Token obtained\n");
const connectionConfig = {
host: process.env['proxy_endpoint'], // メモしておいたプロキシエンドポイントを設定します。
user: username,
database: 'mysql', // データベース名を設定してください。
ssl: 'Amazon RDS',
password: token,
authPlugins: { mysql_clear_password: () => () => signer.getAuthToken() }
};
connection = await mysql2.createConnection(connectionConfig);
const [rows, fields] = await connection.query("SELECT 1");
console.log(rows);
};
업로드 후 테스트 이벤트를 만들고 콘솔에서 테스트하면 성공적으로 연결되었는지 확인할 수 있습니다.
참고 링크
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / ぁ mb다 / ㅁ st / dg / 곤후 쿠라 치온 - 담배. HTML
Reference
이 문제에 관하여(Lambda에서 RDS Proxy를 통해 Aurora(MySQL)에 연결(IAM 인증)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takeshi_hirosue/items/a76d974a8bca36db42b6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)