AWS Lambda関数をRDS mysqlデータベースに接続しようとしています。
ラムダ関数からデータベースを更新したかっただけです。 IAMロールとアクセスポリシーを指定することでRDSにアクセスできますか?.
mysql client。を使用してmysqlデータベースに接続できますが、ラムダを試してみるとそれができません。これが私のコードです。
console.log('Loading function');
var doc = require('dynamodb-doc');
var dynamo = new doc.DynamoDB();
var mysql = require('mysql');
exports.handler = function(event, context) {
//console.log('Received event:', JSON.stringify(event, null, 2));
var operation = event.operation;
delete event.operation;
switch (operation) {
case 'create':
var conn = mysql.createConnection({
Host: 'lamdatest.********.rds.amazonaws.com', // RDS endpoint
user: 'user', // MySQL username
password: 'password', // MySQL password
database: 'rdslamda'
});
conn.connect();
console.log("connecting...");
conn.query('INSERT INTO login (name,password) VALUES("use6","password6")', function(err, info) {
console.log("insert: " + info.msg + " /err: " + err);
});
console.log("insert values in to database");
break;
case 'read':
dynamo.getItem(event, context.done());
break;
default:
context.fail(new Error('Unrecognized operation "' + operation + '"'));
}
context.succeed();
};
はい。 AWS LambdaからMySql RDSデータベースにアクセスできます。
node-mysql
ライブラリを使用できます。
ただし、それに伴う大きな注意事項があります。
AWS Lambdaは(現在)VPC内のプライベートサブネットにアクセスできません。したがって、AWS LambdaがRDSデータベースにアクセスするには、パブリックにアクセスできる必要があります。これは、セキュリティ上のリスクになる可能性があります。
更新(2015-10-30):AWS Lambdaは今後のVPCサポートを発表しました( re:Invent 2015 )、これはずっと長い間問題になりません。
更新(2015-11-17):AWS LambdaはまだVPCをサポートしていません。
更新(2016-02-11):AWS LambdaがVPCリソースにアクセスできるようになりました:
https://aws.Amazon.com/blogs/aws/new-access-resources-in-a-vpc-from-your-lambda-functions/
この機能を実現するために、Lambda関数は実際にはサブネットのVPC内で実行されます。この機能にはいくつかの注意事項があります。
このチュートリアルを試してください: http://docs.aws.Amazon.com/lambda/latest/dg/vpc-rds.html
このチュートリアルでは、次のことを行います。
デフォルトのAmazon VPCでAmazon RDS MySQLデータベースエンジンインスタンスを起動します。
MySQLインスタンスで、サンプルテーブル(Employee)を含むデータベース(ExampleDB)を作成します。
ExampleDBデータベースにアクセスするLambda関数を作成し、テーブル(Employee)を作成し、いくつかのレコードを追加して、テーブルからレコードを取得します。
Lambda関数を手動で呼び出し、クエリ結果を確認します。
ラムダ関数からデータベースを更新したかっただけです。 IAMロールとアクセスポリシーを指定することでRDSにアクセスできますか?.
いいえ、あなたがすることはできません。接続するには、DB url/username/passwordを提供する必要があります。プライベートサブネットにある場合、同じVPCでLambdaを実行する必要がある場合があります。以下のポインタを参照してください。
Mysql client。を使用してmysqlデータベースに接続できますが、ラムダを試してみるとそれができません。
これは厳密ないいえ、いいえです!本当に必要でない限り、インターネットからRDSにアクセスできません。プライベートサブネットで実行し、それに応じて他のAWSサービスを設定してください。
Lambdaからリソースへのアクセスにタイムアウトが発生している場合、私の終わりから2セントです。
詳細- http://docs.aws.Amazon.com/lambda/latest/dg/vpc.html#vpc-internet
AWS Lambdaからpostgres RDSに接続する方法
PS:上記のリンクは、追加の関連情報がある個人ブログに移動します。