AWS Cloud9 の .NET Core サンプル - AWS Cloud9

AWS Cloud9 の .NET Core サンプル

このサンプルを使用すると、AWS Cloud9 開発環境でいくつかの .NET Core コードの実行が有効になります。

このサンプルを作成すると、AWS アカウントに課金される場合があります。Amazon EC2 や Amazon S3 などのサービスに対して発生する可能性がある料金も含まれます。詳細については、「Amazon EC2 料金表」および「Amazon S3 料金表」を参照してください。

前提条件

このサンプルを使用する前に、設定が次の要件を満たしていることを確認します。

  • 既存の AWS Cloud9 EC2 開発環境が存在している必要があります。このサンプルは、Amazon Linux または Ubuntu Server を実行する Amazon EC2 インスタンスに接続された EC2 環境が既にあることを前提としています。別のタイプの環境またはオペレーティングシステムがある場合、このサンプルの指示を関連ツールを設定する必要がある場合があります。詳細については、「AWS Cloud9 で環境を作成する」を参照してください。

  • 既存の環境に既に AWS Cloud9 IDE が開いています。環境を開くと、AWS Cloud9 によってその環境の IDE がウェブブラウザで開かれます。詳細については、「AWS Cloud9 で環境を開く」を参照してください。

ステップ 1: 必要なツールをインストールする

このステップでは、このサンプルの実行に必要な .NET Core SDK を 環境にインストールします。

  1. .NET Core SDK の最新版が 環境に既にインストールされているかどうかを確認します。これを行うには、AWS Cloud9 IDE のターミナルセッションで、--version オプションを使用して .NET Core コマンドラインインターフェース (CLI) を実行します。

    dotnet --version

    .NET コマンドラインツールのバージョンが表示され、バージョンが 2.0 以上の場合、 まで進みますステップ 3: .NET Core コンソールアプリケーションプロジェクトを作成する バージョンが 2.0 未満の場合、または bash: dotnet: command not found などのエラーが表示された場合、.NET Core SDK のインストールを続けます。

  2. Amazon Linux では、 AWS Cloud9 IDE におけるターミナルセッションで、以下のコマンドを実行し、最新のセキュリティ更新プログラムとバグ修正プログラムがインストールされていることを確認して、.NET Core SDK に必要な libunwind パッケージをインストールします。(新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。)

    sudo yum -y update sudo yum -y install libunwind

    Ubuntu Server では、AWS Cloud9 IDE のターミナルセッションで、以下のコマンドを実行し、最新のセキュリティ更新プログラムおよびバグ修正がインストールされていることを確認します。(新しいターミナルセッションを開始するには、メニューバーで、[Window (ウィンドウ)]、[New Terminal (新しいターミナル)] の順に選択します。)

    sudo apt -y update
  3. 次のコマンドを実行して、.NET Core SDK インストーラスクリプトをご自分の環境にダウンロードします。

    wget https://dot.net/v1/dotnet-install.sh
  4. 次のコマンドを実行して、インストールスクリプトを現在のユーザーに実行可能にします。

    sudo chmod u=rx dotnet-install.sh
  5. 次のコマンドを実行して、.NET Core SDK をダウンロードし、インストールするインストーラスクリプトを実行します。

    ./dotnet-install.sh -c Current
  6. PATH に .NET Core SDK を追加します。これを行うには、次のように、環境のシェルプロファイル (たとえば、.bashrcファイル) で、$HOME/.dotnet サブディレクトリを環境の PATH 変数に追加します。

    1. .bashrc vi コマンドを使用して、 ファイルを編集のために開きます。

      vi ~/.bashrc
    2. Amazon Linux では、下向き矢印または j キーを使用して、export PATH で始まる行に移動します。

      Ubuntu Server では、「G」と入力して、ファイルの最後の行に移動します。

    3. 右向き矢印または $ キーを使用して、行の末尾に移動します。

    4. i キーを押して挿入モードに切り替えます (表示の末尾に -- INSERT --- と表示されます)。

    5. Amazon Linux の場合、:$HOME/.dotnet を入力することで、$HOME/.dotnet サブディレクトリを PATH 変数に追加します。必ずコロン文字 (:) を入力します。行は以下のようになります。

      export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.dotnet

      Ubuntu Server では、右矢印キーを押し、Enter を 2 回押してから、ファイルの末尾に次の行を単独で入力します。

      export PATH=$HOME/.dotnet:$PATH
    6. ファイルを保存します。これを行うには、Esc キーを押して (-- INSERT --- が表示の末尾から消えます)、:wq と入力し (ファイルに書き込んで終了します)、Enter キーを押します。

  7. .bashrc ファイルをソースに指定して、.NET Core SDK をロードします。

    . ~/.bashrc
  8. --help オプションで .NET Core CLI を実行することにより、.NET Core SDK が読み込まれることを確認します。

    dotnet --help

    成功した場合、.NET Core SDK のバージョン番号が、その他の使用状況情報と共に表示されます。

  9. 環境に .NET Core SDK インストーラスクリプトを保持したいと思わなくなった場合、次の方法で削除できます。

    rm dotnet-install.sh

ステップ 2 (オプション): Lambda 関数用の .NET CLI 拡張をインストールする

このチュートリアルでは必須ではありませんが、Amazon.Lambda.Tools パッケージもインストールする場合、dotnet CLI を使用して、AWS Lambda 関数および AWS Serverless Application Model アプリケーションをデプロイできます。、

  1. 次のコマンドを実行して、このパッケージをインストールします。

    dotnet tool install -g Amazon.Lambda.Tools
  2. 今、PATH および DOTNET_ROOT 環境変数を設定して、インストールされた Lambda ツールを指します。.bashrc ファイルを見つけるには export PATH セクションを開き、次のように表示されるように編集します (このファイルの編集の詳細については、ステップ 1 を参照してください)。

    export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.dotnet:$HOME/.dotnet/tools export DOTNET_ROOT=$HOME/.dotnet

ステップ 3: .NET Core コンソールアプリケーションプロジェクトを作成する

このステップでは、.NET Core を使用して hello という名前のプロジェクトを作成します。このプロジェクトには、.NET Core が IDE のターミナルからシンプルなアプリケーションを実行するのに必要なすべてのファイルが含まれています。アプリケーションのコードは C# で書かれています。

.NET Core コンソールアプリケーションプロジェクトを作成します。これを行うには、new コマンドを使用して .NET Core CLI を実行します。次のように、使用するコンソールアプリケーションオブジェクトテンプレートタイプとプログラミング言語 (このサンプルでは C#) を指定します。

-n オプションは、プロジェクトが新しいディレクトリ hello に出力されることを示します。続いて、 そのディレクトリに移動します。

dotnet new console -lang C# -n hello cd hello

前述のコマンドは、いくつかのファイルを含む obj という名前のサブディレクトリを追加し、追加のスタンドアロンファイルを hello ディレクトリに追加します。次の 2 つのキーファイルに注意してください。

  • hello/hello.csproj ファイルには、コンソールアプリケーションプロジェクトに関する情報が含まれています。

  • hello/Program.cs ファイルには、実行するアプリケーションのコードが含まれています。

ステップ 4: コードを追加する

このステップでは、アプリケーションにコードを追加します。

AWS Cloud9 IDE の [環境] ウィンドウで、hello/Program.cs ファイルを開きます。

エディタで、ファイルの現在の内容を次のコードに置き換えて、Program.cs ファイルを保存します。

using System; namespace hello { class Program { static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Please provide 2 numbers"); return; } Console.WriteLine("Hello, World!"); Console.WriteLine("The sum of 2 and 3 is 5."); int sum = Int32.Parse(args[0]) + Int32.Parse(args[1]); Console.WriteLine("The sum of {0} and {1} is {2}.", args[0], args[1], sum); } } }

ステップ 5: コードを構築および実行する

このステップでは、プロジェクトとその依存関係を、実行可能なアプリケーションファイルを含む 1 つのバイナリファイルのセットに構築します。次にアプリケーションを実行します。

  1. IDE では、次のように .NET Core のビルダーを作成します。

    1. メニューバーで、[Run (実行)]、[Build System (ビルドシステム)]、[New Build System (新しいビルドシステム)] の順に選択します。

    2. [My Builder.build] タブで、タブの内容を以下のコードに置き換えます。

      { "cmd" : ["dotnet", "build"], "info" : "Building..." }
    3. File (ファイル)]、[Save As (名前を付けて保存)]の順に選択します。

    4. [Filename (ファイル名)] に「.NET Core.build」と入力します。

    5. [Folder (フォルダ)] に「/.c9/builders」と入力します。

    6. [Save] を選択します。

  2. エディタに Program.cs ファイルの内容を表示した状態で、[Run (実行)]、[Build System (ビルドシステム)]、[.NET Core] の順に選択します。次に、[Run (実行)]、[Build (ビルド)] を選択します。

    このビルダは、bin という名前のサブディレクトリを追加し、Debug という名前のサブディレクトリを hello/obj サブディレクトリに追加します。次の 3 つのキーファイルに注意してください。

    • この hello/bin/Debug/netcoreapp3.1/hello.dll ファイルは、実行可能なアプリケーションファイルです。

    • hello/bin/Debug/netcoreapp3.1/hello.deps.json ファイルは、アプリケーションの依存関係をリストします。

    • hello/bin/Debug/netcoreapp3.1/hello.runtimeconfig.json ファイルは、アプリケーションの共有ランタイムとそのバージョンを指定します。

    注記

    フォルダ名 netcoreapp3.1 には、この例で使用されている .NET Core SDK のバージョンを反映しています。インストールしているバージョンによっては、フォルダ名に異なる番号が表示される場合があります。

  3. 次のように、.NET Core のランナーを作成します。

    1. メニューバーで、[Run (実行)]、[Run With (次で実行)]、[New Runner (新しいランナー)] の順に選択します。

    2. [My Runner.run] タブで、タブの内容を以下のコードに置き換えます。

      { "cmd" : ["dotnet", "run", "$args"], "working_dir": "$file", "info" : "Running..." }
    3. File (ファイル)]、[Save As (名前を付けて保存)]の順に選択します。

    4. [Filename (ファイル名)] に「.NET Core.run」と入力します。

    5. [Folder (フォルダ)] に「/.c9/runners」と入力します。

    6. [Save] を選択します。

  4. 追加する 2 つの整数を指定してアプリケーションを実行します (例: 59) を追加します。

    1. エディタに Program.cs ファイルの内容を表示した状態で、[Run (実行)]、[Run Configurations (実行設定)]、[New Run Configuration (新しい実行設定)] の順に選択します。

    2. [[New] - Idle] タブで、[Runner: Auto] を選択し、[.NET Core] を選択します。

    3. [Command (コマンド)] ボックスに、「hello 5 9」と入力します。

    4. [Run (実行)] を選択します。

      デフォルトでは、このランナーは .NET Core に hello.dll ディレクトリで hello/bin/Debug/netcoreapp3.1 ファイルを実行するよう指示します。

      出力を以下と比較します。

      Hello, World! The sum of 2 and 3 is 5. The sum of 5 and 9 is 14.

ステップ 6: AWS SDK for .NET を使用する .NET Core コンソールアプリケーションプロジェクトを作成して設定する

このサンプルを強化して AWS SDK for .NET を使用し、Amazon S3 バケットの作成、利用可能なバケットの一覧表示、さらに作成したバケットの削除を行うことができます。

この新しいプロジェクトでは、AWS SDK for .NET への参照を追加します。AWS SDK for .NET を使用すると、.NET コードから Amazon S3 などの AWS のサービスを簡単に操作できます。その後、環境で AWS 認証情報管理を設定します。これらの認証情報は、AWS SDK for .NET が AWS のサービスとやり取りするために必要です。

プロジェクトを作成するには

  1. .NET Core コンソールアプリケーションプロジェクトを作成します。これを行うには、使用するコンソールアプリケーションオブジェクトテンプレートタイプとプログラミング言語を指定し、new コマンドを使用して .NET Core CLI を実行します。

    -n オプションは、プロジェクトが新しいディレクトリ s3 に出力されることを示します。続いて、 そのディレクトリに移動します。

    dotnet new console -lang C# -n s3 cd s3
  2. AWS SDK for .NET で Amazon S3 パッケージへのプロジェクトリファレンスを追加します。これを行うには、NuGet で Amazon S3 パッケージの名前を指定し、 add package コマンドを使用して .NET Core CLI を実行します。(NuGet では、.NET のパッケージを作成、ホスト、使用する方法が定義され、それらのロールごとにツールが用意されています)。

    dotnet add package AWSSDK.S3

    Amazon S3 パッケージにプロジェクトリファレンスを追加すると、NuGet は AWS SDK for .NET の他の部分にもプロジェクトリファレンスを追加します。

    注記

    NuGet の AWS 関連パッケージの名前とバージョンについては、NuGet ウェブサイトで「NuGet packages tagged with aws-sdk」を参照してください。

AWS 認証情報管理を設定するには

AWS SDK for .NET を使用して AWS のサービスを呼び出すたびに、呼び出しに一連の AWS 認証情報を指定する必要があります。これらの認証情報は AWS SDK for .NET にその呼び出しを行う適切なアクセス許可があるかどうかを判別します。認証情報に適切なアクセス権限がない場合は、呼び出しは失敗します。

認証情報を環境に保存するには、AWS Cloud9 の環境から AWS のサービスを呼び出す の指示を実行してから、このトピックに戻ります。

詳細については、AWS SDK for .NET デベロッパーガイドの「AWS 認証情報の設定」を参照してください。

ステップ 7: AWS SDK コードを追加する

このステップでは、Amazon S3 を操作してバケットを作成し、作成したばかりのバケットを削除した後、利用できるバケットのリストを表示するコードを追加します。

AWS Cloud9 IDE の[環境]ウィンドウで、s3/Program.cs ファイルを開きます。エディタで、ファイルの現在の内容を次のコードに置き換えて、Program.cs ファイルを保存します。

using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; using System; using System.Threading.Tasks; namespace s3 { class Program { async static Task Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Usage: <the bucket name> <the AWS Region to use>"); Console.WriteLine("Example: my-test-bucket us-east-2"); return; } if (args[1] != "us-east-2") { Console.WriteLine("Cannot continue. The only supported AWS Region ID is " + "'us-east-2'."); return; } var bucketRegion = RegionEndpoint.USEast2; // Note: You could add more valid AWS Regions above as needed. using (var s3Client = new AmazonS3Client(bucketRegion)) { var bucketName = args[0]; // Create the bucket. try { if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName)) { Console.WriteLine("Cannot continue. Cannot create bucket. \n" + "A bucket named '{0}' already exists.", bucketName); return; } else { Console.WriteLine("\nCreating the bucket named '{0}'...", bucketName); await s3Client.PutBucketAsync(bucketName); } } catch (AmazonS3Exception e) { Console.WriteLine("Cannot continue. {0}", e.Message); } catch (Exception e) { Console.WriteLine("Cannot continue. {0}", e.Message); } // Confirm that the bucket was created. if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName)) { Console.WriteLine("Created the bucket named '{0}'.", bucketName); } else { Console.WriteLine("Did not create the bucket named '{0}'.", bucketName); } // Delete the bucket. Console.WriteLine("\nDeleting the bucket named '{0}'...", bucketName); await s3Client.DeleteBucketAsync(bucketName); // Confirm that the bucket was deleted. if (await AmazonS3Util.DoesS3BucketExistV2Async(s3Client, bucketName)) { Console.WriteLine("Did not delete the bucket named '{0}'.", bucketName); } else { Console.WriteLine("Deleted the bucket named '{0}'.", bucketName); }; // List current buckets. Console.WriteLine("\nMy buckets now are:"); var response = await s3Client.ListBucketsAsync(); foreach (var bucket in response.Buckets) { Console.WriteLine(bucket.BucketName); } } } } }

ステップ 8: AWS SDK コードを構築および実行する

このステップでは、プロジェクトとその依存関係を、実行可能なアプリケーションファイルを含む 1 つのバイナリファイルのセットに構築します。次にアプリケーションを実行します。

  1. プロジェクトをビルドします。これを行うには、エディタに s3/Program.cs ファイルの内容を表示した状態で、[Run (実行)]、[Build (ビルド)] の順に選択します。

  2. 次のように、作成する Amazon S3 バケットの名前と、バケットを作成する AWS リージョンの ID (例: my-test-bucketus-east-2) をがついたアプリケーションを実行します。

    1. エディタに s3/Program.cs ファイルの内容を表示した状態で、[Run (実行)]、[Run Configurations (実行設定)]、[New Run Configuration (新しい実行設定)] の順に選択します。

    2. [[New] - Idle] タブで、[Runner: Auto] を選択し、[.NET Core] を選択します。

    3. [コマンド] ボックスに、アプリケーションの名前、作成する Amazon S3 バケットの名前、バケットを作成する AWS リージョンの ID を入力します (例: s3 my-test-bucket us-east-2)。

    4. [Run (実行)] を選択します。

      デフォルトでは、このランナーは .NET Core に s3.dll ディレクトリで s3/bin/Debug/netcoreapp3.1 ファイルを実行するよう指示します。

      結果を以下の出力と比較します。

      Creating a new bucket named 'my-test-bucket'... Created the bucket named 'my-test-bucket'. Deleting the bucket named 'my-test-bucket'... Deleted the bucket named 'my-test-bucket'. My buckets now are:

ステップ 9: クリーンアップする。

このサンプルを使用し終わった後 AWS アカウントで料金が継続的に発生するのを防ぐには、環境を削除する必要があります。手順については、AWS Cloud9 で環境を削除する を参照してください。