AWS RDSのMySQLデータベースにアクセスするには、C#.NETコアでAWS Lambdaを使用できますか?AWS Lambda C#経由でMySQLサーバーにアクセスするには?
私はnugetから「Pomelo.EntityFrameworkCore.MySql」V1.1を試してみましたが、AWSラムダにそれをシフトする前に、コンソールアプリケーション(.NETのコア)で働いてテストしました。
私は、Visual Studio Professionalのアップデート3および.NETのコア1.0.1を実行しています - VS 2015ツーリングプレビュー2.
を私のテストコードは簡単です...ちょうどAWS RDSでMySQLデータベースを開くためにテスト、物事が働いていましたコンソールアプリケーションで正常に出力されましたが、エラー "操作はこのプラットフォームではサポートされていません。"をラムダに移動したときに表示しています。
RDS MySQLデータベースにアクセスするためのLambda C#のこのサンプルや問題を解決する方法はありますか?以下は
私のテストコード、
Function.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
using Amazon.Lambda.Serialization;
using Microsoft.EntityFrameworkCore;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializerAttribute(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace AWSLambda1
{
public class Function
{
/// <summary>
/// A simple function that takes a string and does a ToUpper
/// </summary>
/// <param name="input"></param>
/// <param name="context"></param>
/// <returns></returns>
public string FunctionHandler(ILambdaContext context)
{
Console.WriteLine("Lambda starting");
using (var mySQLcontext = new MyContext())
{
// Create database
mySQLcontext.Database.EnsureCreated();
}
return "Lambda stopped";
}
}
public class MyContext : DbContext
{
//public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseMySql(@"Server=your_dbsvr_host;database=testDB;uid=admin;pwd=password123");
}
}
project.json
{
"version": "1.0.0-*",
"buildOptions": {
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"
},
"Amazon.Lambda.Core": "1.0.0*",
"Amazon.Lambda.Serialization.Json": "1.0.1",
"Amazon.Lambda.Tools": {
"type": "build",
"version": "1.3.0-preview1"
},
"Pomelo.EntityFrameworkCore.MySql": "1.1.0"
},
"tools": {
"Amazon.Lambda.Tools" : "1.3.0-preview1"
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
ラムダエラー応答
です{
"errorType": "PlatformNotSupportedException",
"errorMessage": "Operation is not supported on this platform.",
"stackTrace": [
"at System.Runtime.InteropServices.OSPlatform.get_Windows()",
"at MySql.Data.Serialization.ConnectionSettings..ctor(MySqlConnectionStringBuilder csb)",
"at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)",
"at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalConnection.get_DbConnection()",
"at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlRelationalConnection.Open()",
"at Microsoft.EntityFrameworkCore.Storage.Internal.MySqlDatabaseCreator.Exists(Boolean retryOnNotExists)",
"at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureCreated()",
"at AWSLambda1.Function.FunctionHandler(ILambdaContext context)",
"at lambda_method(Closure , Stream , Stream , ContextInfo)"
]
}