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 2 SDK を 環境 にインストールします。

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

    dotnet --version

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

  2. Amazon Linux では、AWS Cloud9 IDE のターミナルセッションで、以下のコマンドを実行し、最新のセキュリティ更新プログラムとバグ修正プログラムがインストールされていることを確認して、.NET Core 2 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 2 SDK インストーラスクリプトを 環境 にダウンロードします。

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

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

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

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

      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 2 SDK をロードします。

    . ~/.bashrc
  8. --help オプションを指定して .NET Core CLI を実行することにより、.NET Core 2 SDK がロードされることを確認します。

    dotnet --help

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

  9. 環境 に .NET Core 2 SDK インストーラスクリプトを保持する必要がなくなった場合、次の方法で削除できます。

    rm dotnet-install.sh

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

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

  1. ターミナルで、次のコマンドを実行してプロジェクトのディレクトリを作成し、その新しいディレクトリに切り替えます。

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

    dotnet new console -lang C#

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

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

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

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

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

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

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

using System; namespace hello { class Program { static void Main(string[] args) { 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.ToString()); } } }

ステップ 4: コードをビルドおよび実行する

このステップでは、プロジェクトとその依存関係を、実行可能なアプリケーションファイルを含む 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/netcoreapp2.0/hello.dll ファイルは、実行可能なアプリケーションファイルです。

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

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

  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/netcoreapp2.0 ファイルを実行するよう指示します。

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

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

ステップ 5: 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. ターミナルで、以下のコマンドを実行して 環境 のルートディレクトリに移動し、s3 という名前のプロジェクトのディレクトリを作成して、その新しいディレクトリに切り替えます。

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

    dotnet new console -lang C#
  3. 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 認証情報の設定」を参照してください。

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

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

AWS Cloud9 IDE の [Environment (環境)] ウィンドウで、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 { private static RegionEndpoint bucketRegion; private static IAmazonS3 s3Client; static void Main(string[] args) { if (args.Length < 2) { Console.Write("Usage: <the bucket name> <the AWS Region to use>\n" + "Example: my-test-bucket us-east-2\n"); return; } if (args[1] == "us-east-2") { bucketRegion = RegionEndpoint.USEast2; } else { Console.WriteLine("Cannot continue. The only supported AWS Region ID is " + "'us-east-2'."); return; } // Note: You could add more valid AWS Regions above as needed. s3Client = new AmazonS3Client(bucketRegion); var bucketName = args[0]; // Create the bucket. try { if (DoesBucketExist(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); s3Client.PutBucketAsync(bucketName).Wait(); } } 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 (DoesBucketExist(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); s3Client.DeleteBucketAsync(bucketName).Wait(); // Confirm that the bucket was deleted. if (DoesBucketExist(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 = s3Client.ListBucketsAsync().Result; foreach (var bucket in response.Buckets) { Console.WriteLine(bucket.BucketName); } } static bool DoesBucketExist(string bucketName) { if ((AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName).Result)) { return true; } else { return false; } } } }

ステップ 7: 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/netcoreapp2.0 ファイルを実行するよう指示します。

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

      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:

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

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