10. [.NET5 / .NET6] AWS ECS/ECRで帳票PDF出力WEBアプリケーションをDockerで動作

.NET5 / .NET6で開発
AWS ECS/ECRで帳票PDF出力WEBアプリケーションをDockerで動作

さて、Docke第2弾です。
前回の復習から書くと、

  1. Docker イメージを作成して、他の環境にコピーして単純に動かしてみる。
  2. Docker イメージをAWS ECR(リポジトリ)に登録して ECSに処理してもらう方法もやってみる。(標準的な方法の一つ)

の2回に分けて記事を書いています。
今回は、2.の AWS ECS で動作させる標準的な手法の手順をお伝えしたいと思います。
Visual Studio 2022で作成したDockerを AWS ECR/ECSの構成のDocker経由で「.NET5で作成したPDF出力用WEBアプリケーション」を動作させる手順をお伝えしていきます。

図に書くと、次のようになります。

f:id:pao_papa_2000:20220212064453p:plain

構成と流れ

外部データベースが AzureのSQL Server というところが何ともダサいですが、この一連の記事のデモでは、SQL Serverの基データを使いまわしておりますので、勘弁してください。

図の処理の流れを記述すると次のようになります。

(1) ECS用ユーザの作成 
(2) ECS用ロール(役割・権限)作成
(3) AWS CLI のインストール(Windows編)
(4) AWS CLIログイン
(5) ECR にDockerイメージをアップロード
(6) Fargeteクラスタの作成
(7) タスク定義の作成
(8) サービスの作成- タスクがタスク定義から自動で作成される

それでは、この流れを実現するまでの操作の手順について
わかりやすく、細かく説明した動画を作成しましたので、是非、ご覧ください。

youtu.be

 

 

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

9. [.NET5 / .NET6] Dockerの最も単純な方法でAWS-EC2上で.NET5帳票出力WEBアプリを動作させる手順

.NET5 / .NET6で開発
Dockerの最も単純な方法でAWS-EC2上で、
帳票出力WEBアプリを動作させる手順

いよいよDockerを使います。
ただ、Docker と言ってもいくつも手法があります。
色々ネットで調べたり、動画を見たりしましたが、いまいちピンときません。
Dockerに内包してして、そのイメージをコピーすれば、どこでも動くでしょ?
なんで、その単純な手法が検索しても出てこないんだろう??

実際の開発となれば、みんなで開発しますし、手順を確立してサイクル化することにより、効率的で、人手によるミスを減らすことができる。
それはわかるのですが、それでも、単純にDockerのイメージをコピーするだけの方法をやってみたかった。そこで、Dockerについては、次の2回に分けて記事を書くことにしました。

  1. Docker イメージを作成して、他の環境にコピーして単純に動かしてみる。
  2. Docker イメージをAWS ECR(リポジトリ)に登録して ECSに処理してもらう方法もやってみる。(標準的な方法の一つ)

今回の記事は、1.の単純な手法です。構成と流れを図にすると次のような感じです。

f:id:pao_papa_2000:20220212062124p:plain

Dockerを使った最も単純な手順 - 構成と流れ

(1) ローカルVS2022でWSL2にdocker image作成

(2) docker save で tarファイル保存

(3) tarファイルを scp で AWS-EC2へ

(4) AWS-EC2でdocker load でtarファイルをimagesに追加

(5) docker run

 

(1) の Visual Studio から Dockerイメージの作成(docker build)は、ものすごく簡単です。

基本的に、Dockerfile もVisual Studioが作成してくれます。

それでは、この単純な手法の手順につていて、分かりやすく細かく説明した動画を作成しましたので、是非、ご覧ください。

 

youtu.be


繰り返しになる部分もありますが、動画での説明の流れを記述しておきます。
また、使用するコマンドもそのまま記載しておきます。

Visual Studio 2022で作成したDockerを最もシンプルな手法を使用して、AWC-EC2でDocker経由で「.NET5で作成したPDF出力用WEBアプリケーション」を動作させる手順の動画です。
次にその手順を記載しておきます。
.NET6では、.NET6のバグフィックスまで利用できない手法です。マイクロソフトもバグ情報を受け取ったため近いうちに.NET6のパッチが出ると思います。

(1) Visual Studio 2022 で Dockerイメージ作成 DockerFile

(2) 自パソコンでまずコンテナを動かしてみる
docker run --rm -it -p 5000:5000 webapplication10

(3) Dcokerイメージをコピー&動作させるためのEC2を作成

(4) EC2にdockerをインストール

sudo yum update -y
sudo amazon-linux-extras install docker
sudo service docker start
sudo usermod -a -G docker ec2-user

(5) 自PCのWSL2でDockerイメージ→tarファイル
docker save webapplication10 -o pao.tar

(6) scpでtarファイル(pao.tar)をEC2へコピー

(7) EC2 で tarファイル→Dockerイメージ
docker load -i pao.tar 

(8) EC2でコンテナ実行
docker run --rm -it -p 5000:5000 webapplication10

 

これだけです。単純ですよね。(^^;

 

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

8. [.NET5 / .NET6] PDF出力WEBアプリケーションをAWS Linux へデプロイ(Elastic Beanstalk) + Amazon DynamoDB使用

.NET5 / .NET6で開発
PDF出力WEBアプリケーションをAWS Linux へデプロイ(Elastic Beanstalk)
Amazon DynamoDB使用

今回は、Dockerを使用しないで、AWSへデプロイする方法をお伝えしたいと思います。

※Docker は、次回以降2回、違う手法でお伝えします。

具体的には、

AWS Toolkit for Visual Studio 2022 を使用して、 AWS-Linux(Elastic Beanstalk) へ WEBアプリケーションをデプロイし、PDF帳票出力を行うWEBアプリケーションをAWS-Linux上で動作させます。

※たまたま、今回、AWS Toolkit for Visual Studio 2022 を使用したので、

AWS Toolkit for Visual Studio 2019 でも、AWS Toolkit for Visual Studio 2017 でも構いません。

 

デプロイ後、帳票が使用するデータベースを Amazon DynamoDBに変更する操作も行いました。

AWS Toolkit を使用した Elastic Beanstalkへのデプロイ手順+について、
わかりやすく、細かい手順まで動画として作成しましたので、是非、ご覧ください。

 

youtu.be

 

動画内では、外部DBであるAzureのSQL Server に接続できないため、Amazon DynamoDB を使用する流れになってります。
Amazon DynamoDB の説明ができたこと自体はよかったのですが、
外部DBであるAzureのSQL Server への接続は可能でした。
この AWSのWEBアプリケーションのグローバルIPアドレスを Azure SQL Server で許可することにより、
外部データベースへのアクセスは可能となりました。

 

※.NET 6 となっておりますが、同じ手順で.NET 5 でも動作します。

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

7. [.NET5 / .NET6] Linux上で動作する.NET6(C#)-帳票出力WEBアプリ作成手順 - 【WSL2 & Azure-Linux編】

.NET5 / .NET6で開発
Linux上で動作する.NET6(C#)
帳票出力WEBアプリ作成手順
【WSL2 & Azure-Linux編】

【お題】
.NET6で作成した帳票出力WEBアプリケーションをLinux上で動かす!

 

【今後の説明の順番】

  1. まずは、WSDL2+DockerでWindows10上のLinuxで動作させる (今回)
  2. Docker使わないデプロイ - Azureで動作させる (今回)
  3. Docker使わないデプロイ - AWS Elastic Beanstalkで動作させる (次回以降)
  4. Docker使うデプロイ(最も単純な手順) - AWS EC2で動作させる (次回以降)
  5. Docker使うデプロイ(AWS ECRへ) - AWS ECSで動作させる (次回以降)

【目的】
.NET6のPDF出力・グラフィックス・画像処理プログラムを

  1. Linuxで動作させるまでのテクニックを伝えたい
  2. 各デプロイ時のテクニックを伝えたい

これが、目的です。

 

と、先に内容ではなく、これからのことも含めて書いてしまいましたが、

ともかく、前回(6.)で作成した
PDF帳票出力・ダウンロードできるWEBアプリケーションを
Linux上に配置して動作させていきます。

プログラムの内容は、前回(6.)までと全く変わらず、
一部を除いては、データベースも前回(6.)Azureに配置した SQL Server
そのまま使用していきます。
今回は・・・

  1. まずは、WSDL2+DockerでWindows10上のLinuxで動作させる
  2. Docker使わないデプロイ - Azureで動作させる

について、分かりやすく細かい手順の動画を作成しましたので、是非ご覧ください。

 

youtu.be

 

※.NET 6 となっておりますが、同じ手順で.NET 5 でも動作します。

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

6. [.NET5 / .NET6] WEBアプリでPDF帳票出力開発手法 - Azure SQL Server使用 / AzureへのWEBアプリ アップロード手順

.NET5 / .NET6で開発
WEBアプリでPDF帳票出力開発手法
Azure SQL Server使用
AzureへのWEBアプリ アップロード手順

前回(4.)までは、WEB APIの開発と動作確認でした。
今回(5.)からは、WEB APP(WEBアプリケーション)にガラッと変わります。

ご存じと思いますが、相当適当ですが次のように違います。

  1. WEB API ・・・WEBを介した関数のようなもの
  2. WEB APP・・・ブラウザで動作するアプリケーション

従って・・・

  1. 前回(4.)までは、Windowsフォームから帳票データを作成するWEBメソッドを呼び出し、その戻り値として印刷データを取得し、Windowsフォームアプリから印刷を行っておりました。
  2. 今回(5.)からは、ブラウザで操作を行いPDF帳票をブラウザに表示したり、ローカルマシンににPDFファイルをダウンロードしたりすることができます。
  3. ただし、どちらも印刷データを作成しているのは、もちろん、サーバサイドで行っております。

さて、今回は、次のような手順を実現させます。

  1. ブラウザで帳票を選択して「PDF表示」または「PDFダウンロード」ボタンをクリック操作
  2. プログラムの動作としては、データベースからデータを取得して
  3. PDFファイルを作成し
  4. ブラウザにPDF表示、または、PDFファイルをローカルPCにダウンロードさせる。

上記1.~4.は・・・

  1. まずは、ローカルIISデバッグ環境とExcelをデータベースとして行います。
  2. 次に、Azure IIS(Windows Server)へデプロイを行います。
  3. データベースも ローカルのExcelから、AzureのSQL Server に移行します。
  4. そして、最後に、ブラウザからAzureのグローバルドメインにアクセスして
  5. ローカルのデバッグ環境とグローバルなAzureで
    同様の操作を行い同様にPDF出力できることを確認します。

このプログラム開発手順や設定や操作方法について、
細かく、分かりやすく動画にしましたので、是非、ご覧ください。

 

youtu.be

 

繰り返しになる部分もありますが、この動画では、
.NET6 を用い、PDF帳票を出力、または、ダウンロードを行うWEBアプリケーションの開発手法を紹介しております。
帳票では、Azure上のSQL Serverデータベースも使用しております。
また、出来上がったアプリケーションをAzureにデプロイする手順も紹介。
動画内で作成したWEBアプリケーションは、Azure の次のURLよりアクセス可能です。

soya-soya-soya.azurewebsites.net


是非、アクセスしていただいて、PDF帳票出力、または、ダウンロードをお試しください。

※.NET 6 となっておりますが、同じ手順で.NET 5 でも動作します。

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

5. [.NET5 / .NET6] WEB API(REST API)で帳票作成-2 SQL Server編 → Windows Form クライアントで出力

.NET5 / .NET6でWEB API(REST API)で帳票作成
【データベース - SQL Server 使用】
Windows Form クライアントでそのWEB APIを使用して帳票出力

前回(4.)では、データベースを使用しない帳票の出力を行いました。
帳票とは言えないですね。(^^ゞ
今回はいよいよ、SQL Server を使用して帳票出力する WEB API(REST API)を作成しました。
完成形の動きとしては・・・

  1. まず、WEB API(REST API)でデータベースをからデータを取得後、
  2. 印刷データを作成し、
    Windows Form クライアントでそのWEB APIを呼び出して
    印刷データを取得して帳票出力します。

もう少しだけ、動作の流れを細かく書き直します。

  1. Windows Form クライアントから IISREST API (WEB API) へリクエス
    (POST)
  2. IISREST API (WEB API)でSQL Server に問い合わせて帳票のもととなるデータを取得
  3. REST API (WEB API)でそのデータを基に印刷データを作成。
  4. Windows Form クライアントは、印刷データをレスポンスとして受け取る。
  5. Windows Form クライアントで、印刷データを帳票出力(プレビュー)

これを実現するためのプログラム開発や操作手順について、
細かくわかりやすく説明している動画を作成しました。是非、ご覧ください。

 

youtu.be

 

長い動画になってしまいましたが、
ネットで探してもなかなか見つからないような重要な技や、
この環境を構築して動作させるまでの過程の中に色々な技が盛り込まれていると思います。
是非、ご覧いただければ、実践にお役立ちいただけるものと思っております。

web.config を app.config に名前変更する裏技を紹介しましたが、
「不思議」と動画内で発言しておりますが、思い出しました。不思議ではないです。
以前は、カスタム情報をweb.configに書くことができましたが、
ASP.NET Core (.NET 5 / .NET 6 含む)では、web.config は、自動的に作成され システムは、web.config を使い、個別のカスタム情報は別に書かなければならないようなことを読んだ記憶があります。
そのため、app.config に書いてデプロイした後、[web api name].dll.config の中身を編集するという裏技?があるのだと思います。

※.NET 5 となっておりますが、同じ手順で.NET 6 でも動作します。

※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。

4. [.NET5 / .NET6] WEB API(REST API)で帳票作成 → Windows Form クライアントで帳票出力

.NET5 / .NET6でWEB API(REST API)で帳票作成
Windows Form クライアントでそのWEB APIを使用して帳票出力

今回の記事でようやく帳票を出力できます。
完成形の動きとしては・・・

  1. まず、WEB API(REST API)で印刷データを作成し
  2. Windows Form クライアントでそのWEB APIを呼び出して
    印刷データを取得して帳票出力します。

もう少しだけ、動作の流れを細かく書き直します。

  1. Windows Form クライアントから IISREST API (WEB API) へリクエス
    (POST)
  2. IISREST API (WEB API)で印刷データを作成。
  3. Windows Form クライアントは、印刷データをレスポンスとして受け取る。
  4. Windows Form クライアントで、印刷データを帳票出力(プレビュー)

これを実現するためのプログラム開発や操作手順について、
細かくわかりやすく説明している動画を作成しました。是非、ご覧ください。

youtu.be

 

WEB API(REST)は、今回は、Windowsフォームで呼び出していますが、
もちろん物理的にも離れていて環境的にも異なるWEBアプリケーションから呼び出して
印刷データを取得し、PDFであれば帳票出力することができます。
※.NET 5 となっておりますが、同じ手順で.NET 6 でも動作します。


※今回の記事を書く、または動画作成にあたって、使用している帳票ツールは、
20年前からの老舗 C#やVB.NETの帳票ツール【Reports.net】 を利用しています。