あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

.NET Core

Reactで画像ファイルをS3からAPI Gateway+Lambda(C#)経由でダウンロードする方法

はじめに 以下の記事で、React で画像や Excel ファイルを API Gateway + Lambda(C#) 経由で S3 にアップロードする方法をご紹介しました。 www.aruse.net せっかくですので、S3 から画像ファイルを API Gateway + Lambda(C#) 経由でダウンロードする方法も…

Reactで画像やExcelをAPI Gateway+Lambda(C#)でアップロードしてS3に保存する方法

はじめに React を使い画像ファイルや Excel ファイルなどのバイナリファイルを、AWS の API Gateway と Lambda (C#) を経由してアップロードし、S3に保存する方法を調べたので記事として残しておきます。 この方法ですが、ネット上に全くといっていいほど情…

C# のLamda関数でExcelファイルをS3から読み込む方法

はじめに 個人プロジェクトで C# の Lamda 関数を使う予定なのですが、いやぁ情報が少ないですね。 今回も S3 にアップロードした Excel ファイルを読み込もうとしたのですが、そもそも S3 のファイルを C# で扱う方法がほとんど見つからない。 まあ、そんな…

.NET Core3.0でWindows Forms/WPFがサポートされたので早速試してみた

Microsoft connect(); 2018 にて、.NET Core 3.0 で Windows Forms / WPF がサポートされたと発表がありました。 blogs.msdn.microsoft.com なので、早速試してみました。 なお、動作確認環境は、基本的に Windows 10 Professional になります。 目次 .NET C…

Lambda(C#),DynamoDBでAuto Increment(アトミックカウンター)する方法

DynamoDB には、他の RDBMS のようなシーケンス番号で KEY を管理する Auto Increment の機能は残念ながらありません。 ですが、それを補う方法として、シーケンス番号を管理するテーブルを作成しておき、カウントアップ更新時にカウントアップした値を返す…

Lambda関数(C#)でDynamoDBにDeleteItem(データ削除)する方法

Lambda 関数(C#)で DynamoDB にアクセスして DeleteItem (データ削除)する方法をメモしておきます。 まず、DynamoDBのItemIdというテーブルを以下のように作成します。パーティションキーはidで、_versionはキーではない属性になります。 項目は以下のように…

Lambda関数(C#)でDynamoDBにUpdateItem(データ更新)する方法

Lambda 関数(C#)で DynamoDB にアクセスして UpdateItem (データ更新)する方法をメモしておきます。 まず、DynamoDBのItemIdというテーブルを以下のように作成します。パーティションキーはidで、_versionはキーではない属性になります。 項目は以下のように…

Lambda関数(C#)でDynamoDBにPutItem(Insert/データ追加)する方法

Lambda 関数(C#)で DynamoDB にアクセスして PutItem (Insert/データ追加)する方法をメモしておきます。 まず、DynamoDBのItemIdというテーブルを以下のように作成します。パーティションキーはidで、_versionはキーではない属性になります。 Lambda 関数(C#…

Lambda関数(C#)でDynamoDBにアクセスしてGetItemする方法

Lambda 関数(C#)で DynamoDB にアクセスして GetItem しようとしたのですが、やたらと苦労したのでメモを残しておきます。 まず、DynamoDBのItemIdというテーブルを以下のように作成します。パーティションキーはidで、_versionはキーではない属性になります…

Lambda関数(C#)でNugetパッケージを追加した場合のAWSへのアップロード方法

AWS Toolkit for Visual Studio で C# の Lambda 関数を作成したのですが、Visual Studio からアップロードするとエラーとなってしまいました。 原因は、Nuget で新しいパッケージをインストールしたことですが、アップロード時になぜか参照が外れてしまいコ…

Fix:コマンド "dotnet-lambda" に一致する実行可能ファイルが見つかりません

以下のコマンドを実行して、Lambda関数のデプロイ用ファイルを作成しようとしたところ、表題のエラーが発生してしましました。 > dotnet lambda package --configuration Release --framework netcoreapp2.1 コマンド "dotnet-lambda" に一致する実行可能フ…

C# のLambda関数でDynamoDBを扱うにはNugetパッケージのインストールが必要

ちょっと悩んだので、メモとして残しておきます。 C# の Lambda 関数で DynamoDB へアクセスしようとしたのですが、Amazon の名前空間に DynamoDB に該当するものが存在しませんでした。 なにかインストールする必要があるのかと思って調べてみたところ、以…

C# のLambda関数でログの出力先をTest FunctionのLog outputエリアに出力する方法

地味に引っかかりそうなので、メモに残しておきます。 C# のLambda関数は Test Function で動作確認すると思いますが、ログの出力先をTest FunctionのLog outputエリア(下図)に出力したい場合は、Console.WriteLineでは出力できません。 Test FunctionのLo…

FacebookのOAuth認証で取得したアクセストークンをC#で検証する方法

はじめに 以下の記事で、Angularな SPA で Facebook の OAuth 認証を行いました。 www.aruse.net OAuth 認証時に取得したアクセストークンは、サーバーに送信して検証をしなければいけないはずなのですが、Facebook がその情報をきちんと公開していません。 …

JSONからC#のクラスを自動生成してくれる「json2csharp」がいい感じ

JSON の文字列を Json.NET などでデシアライズする際、デシアライズ先のクラスを定義する必要がありますが、JSON をクラスにするって難しいですよね。 そんな難しい JSON から C# のクラスを自動生成してくれるのが、「json2csharp」です。 json2csharp.com …

GoogleのOAuth認証で取得したアクセストークンをC#で検証する方法

はじめに 以下の記事で、Angular な SPA で Google の OAuth 認証を行いました。 www.aruse.net 実際には、この時取得したアクセストークンをサーバーサイドに送信して、検証を行わないといけません。 ネットで調べた限りでは、セキュリティに配慮しているサ…

ASP.NET Coreのセッション情報をRedisに格納する方法

概要 ASP.NET Core のセッション情報を Redis に格納する方法を調べてみました。 開発環境は、macOS Mojave と .NET Core 2.2 SDK(v2.2.100-preview2)、Visual Studio Code になります。 まずは、Mac 単体で動作確認後、AWS(Amazon Web Services)の EC2 の W…

ASP.NET CoreでHTTPSエラーが発生する現象の対処方法

いつのバージョンからか分からないのですが、ASP.NET Core 2.xで MVC のプロジェクトを作成して実行すると、以下のような HTTPS のエラーが発生するようになってしまいました。 なお、環境は、macOS Mojave で .NET Core 2.2.100-preview2 になります。 crit…

How to fix "Cannot find compilation library location for package 'Microsoft.Win32.Registry'"

ASP.NET Core アプリケーションを CentOS7 にデプロイして実行すると、以下のエラーが出ました。 fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[0] An unhandled exception has occurred: Cannot find compilation library location f…

ASP.NET Core+Entity Framework CoreでコードからPostgreSQLにデータベースを作成する方法

はじめに この記事では、ASP.NET Core な Web アプリケーションの Entity Framework Core のコードから、PostgreSQL にデータベースとテーブルを作成して、実際に Web アプリケーションを動作させてみます。 なお、環境は Mac (macOS High Sierra 10.13.3) …

.NET Core, コンソールアプリでNLogを使ってログを出力する

はじめに 技術調査の段階では軽視されがちなログ出力ですが、実運用となるとログがなければ問題解決の話にならないこの現実は厳しいなと思う今日この頃、みなさまにおかれましてはログをどのように扱っているでしょうか? さて、ちょっと変わった出だしです…

.NET Core, Visual Studio Codeでプロジェクト参照を追加する

はじめに Visual Studio Code は単体のプロジェクトの開発をするにはいいのですが、他のクラスライブラリなどのプロジェクト参照を追加しようとすると本家 Visual Studio のように GUI でちゃちゃっとはできません。 以前の記事で、ローカルで NuGet パッケ…

.NET Core, アプリで使用するデータベースを実行環境で構築したり変更する方法

はじめに .NET Core の調査を始めてから気になっていたのが、デプロイをどうするかという情報が極端に少ないことです。 開発に焦点があたりすぎていて、なかなかデプロイの情報にたどり着けません。 このブログでは以下の記事で .NET Core アプリのデプロイ…

CentOS7にPostgreSQL9.6をインストールして.NET Core用の設定をする

はじめに CentOS7に PostgreSQL をインストールするのなら、CentOS7のサポート対象の 9.2 か最新バージョンの 10.x になるのでしょうが、ちょっと Amazon RDS for PostgreSQL を使いたいと思っていたら、どちらもサポートされていないのですね。 Q: Amazon R…

.NET Core, Entity Framework Coreで INNER JOIN / LEFT JOIN を実装する方法

はじめに Entity Framework Core で INNER JOIN と LEFT JOIN を実装する方法ですが、ちょっと試行錯誤したのですがその方法をご紹介します。 アプリケーションはコンソールアプリケーションで、データベースは PostgreSQL を使用しコードファーストでデータ…

.NET Core, ローカルライブラリをNuGetでパッケージ化して、他のプロジェクトにインストールする方法

はじめに .NET Core でローカルのライブラリを作成して NuGet でパッケージ化し、他のプロジェクトにインストールしようと思ったのですが、ネット上のどこにも具体的な方法が掲載されておらずかなり苦労しましたが、ようやくその方法が分かりましたのでご紹…

.NET Core, Entity Framework Coreでトランザクション制御を行う

はじめに .NET Core の Entity Framework Core では、デフォルトでトランザクション制御が行われます。 具体的には、MyContext#SaveChange メソッドが呼び出された際にトランザクションが開始され、データの更新が成功すればコミット、失敗すればロールバッ…

.NET Core, Entity Framework CoreのDbContext#SaveChangesがトランザクション処理をしていることを確認する

はじめに 前の記事では、SELECT 処理の SQL ログの出力方法をご紹介しましたが、更新系のログをフィルタをかけない状態のものをご紹介していませんでした。 なぜフィルタをかけない更新系のログを見る必要があるかというと、DbContext#SaveChanges メソッド…

.NET Core, ASP.NET CoreでNLogを使ってログを出力する

はじめに 前の記事では、.NET Core のコンソールアプリケーションで NLog を使ってログを出力する方法をご紹介しましたが、今回は ASP.NET Core での方法をご紹介したいと思います。 気をつけなければいけないのが、コンソールアプリケーションでは NLog.Ext…

.NET Core, Entity Framework CoreでSQLログを出力する

はじめに .NET Core の Entity Framework Core で LINQ を使用してデータベースアクセスしていると、実際にはどのような SQL が発行されているのか気になることがあります。 Entity Framework Core には、いくつかの方法で SQL ログを出力することができます…