私は、ServiceStack .Redis.Coreライブラリ(バージョン1.0.44)を使用して、私のLambda関数からAWS Elasticache(Redis)を活用しようとしています。私のローカルマシン(mac osx)からラムダを実行すると、すべて正常に動作します。私はエラーなしでAWS Redisキャッシュと対話できます。しかしServiceStack RedisがAWS Lambdaで動作しない
、私は彼らのラムダサーバー上でコードを実行するためにAWSへの私の機能を展開するとき、もはや作品とServiceStack.Text.EnvライブラリがPlatformNotSupportedException例外がスローされます。
{
"errorType": "RedisException",
"errorMessage": "[13:50:14.793] Unable to Connect: sPort: 55382, Error: The type initializer for 'ServiceStack.Text.Env' threw an exception.
at ServiceStack.Redis.RedisNativeClient.FlushSendBuffer()
at ServiceStack.Redis.RedisNativeClient.SendReceive[T](Byte[][] cmdWithBinaryArgs, Func`1 fn, Action`1 completePipelineFn, Boolean sendWithoutRead)",
"stackTrace": [
"at ServiceStack.Redis.RedisNativeClient.CreateConnectionError(Exception originalEx)",
"at ServiceStack.Redis.RedisNativeClient.SendReceive[T](Byte[][] cmdWithBinaryArgs, Func`1 fn, Action`1 completePipelineFn, Boolean sendWithoutRead)",
"at ServiceStack.Redis.RedisNativeClient.get_Info()",
"at ServiceStack.Redis.RedisClient.GetServerRole()",
"at ServiceStack.Redis.RedisResolver.CreateRedisClient(RedisEndpoint config, Boolean master)",
"at ServiceStack.Redis.RedisManagerPool.GetClient()",
**snip**
"at lambda_method(Closure , Stream , Stream , ContextInfo)"
],
"cause": {
"errorType": "TypeInitializationException",
"errorMessage": "The type initializer for 'ServiceStack.Text.Env' threw an exception.",
"stackTrace": [
"at ServiceStack.Redis.RedisNativeClient.FlushSendBuffer()",
"at ServiceStack.Redis.RedisNativeClient.SendReceive[T](Byte[][] cmdWithBinaryArgs, Func`1 fn, Action`1 completePipelineFn, Boolean sendWithoutRead)"
],
"cause": {
"errorType": "PlatformNotSupportedException",
"errorMessage": "Operation is not supported on this platform.",
"stackTrace": [
"at System.Runtime.InteropServices.OSPlatform.get_Linux()",
"at ServiceStack.Text.Env..cctor()"
]
}
}
}
だから、使用することが可能ですAWS Lambdaで動作している場合はServiceStack.Redis.Coreパッケージ?
OSXでアプリケーションをビルドしてラムダにアップロードしましたか? – dashmug
はい、.NET Standard 1.6フレームワークをターゲットとした私のmac上に構築されました。 FWIWラムダの他のすべてがうまく動作します。コードがServiceStack.Redisとの対話をトリガーするときだけ、この例外がスローされます。 – Jez
LambdaはLinux上で動作するので、Linuxマシン上でコードをコンパイルし、コンパイルしたコードをLambdaにアップロードする必要があります。 – dashmug