この記事では、GitHub Codespaces上でDurable Task Schedulerエミュレーターを起動し、FanOutFanInサンプルを実行する手順を紹介します。
以下のリンクをクリックすると、GitHub Codespaces上でSpaceを起動できます。
今回はDockerと.NETを使うので、以下のコマンドでバージョンを確認します。
まずは、.NETのバージョンを確認します。
dotnet --version実行結果
8.0.415次に、Dockerのバージョンを確認します。
docker --version実行結果
Docker version 28.5.1-1では、どのような順番でDurable Task Schedulerエミュレーターを起動するのかを確認してきたいと思います。 今回は.NETを使った方法を紹介します。
順番としては以下のとおりです。
- Durable Task Scheduler エミュレーターをpull
- docker runでDurable Task Scheduler エミュレーターを起動
- ダッシュボードにアクセスする
- Durable-Task-Schedulerのリポジトリをクローンする
- ワーカーをビルドして起動
- クライアントをビルドして起動
- ダッシュボードで動作確認
以下のコマンドを実行して、Durable Task Scheduler エミュレーターのDockerイメージをpullします。
docker pull mcr.microsoft.com/dts/dts-emulator:latest実行結果(一部抜粋)
Digest: sha256:ef0b75cab52358409dadc34b675d659e397729c0b68f4ea51b9afa5136072dfb
Status: Downloaded newer image for mcr.microsoft.com/dts/dts-emulator:latest以下のコマンドを実行して、Durable Task Scheduler エミュレーターを起動します。
docker run --name dtsemulator -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest実行結果(一部抜粋)
dbbf44836d36494ee4aafd9a7d9104eef008375881866053886c7f38ce9706a5実行すると、上記のようなコンテナIDが表示されます。
GitHub Codespacesをブラウザ起動している場合は8082のポートにアクセスすることで、Durable Task Scheduler エミュレーターのダッシュボードにアクセスできます。
※VSCodeから起動している場合はhttp://127.0.0.1:8082/にアクセスすることで、Durable Task Scheduler エミュレーターのダッシュボードにアクセスできます。
以下のコマンドを実行して、Durable-Task-Schedulerのリポジトリをクローンします。
git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git以下のコマンドでDurable-Task-Schedulerのディレクトリに移動します。
cd Durable-Task-SchedulerFanOutFanInのディレクトリに移動します。
cd samples/durable-task-sdks/dotnet/FanOutFanInまずはワーカーをビルドして起動します。
cd Worker
dotnet build
dotnet run新しくターミナルを開き、以下のコマンドでFanOutFanInのディレクトリに移動します。
cd Durable-Task-Scheduler/samples/durable-task-sdks/dotnet/FanOutFanIn以下のコマンドでクライアントをビルドして起動します。
cd Client
dotnet build
dotnet runDurable Task Scheduler エミュレーターのダッシュボードに戻って動作を確認します。
defaultという名前のTask Hubをクリックします。
Task Hubs > default > Orchestrationsという形で表示されます。
Orchestrations IDをクリックします。
Orchestrationの詳細が表示されます。
GitHub Codespaces上でDurable Task Schedulerエミュレーターを起動し、FanOutFanInサンプルを実行する方法は以上です。Durable Task SchedulerはGitHub Codespaces上で試すことができるので、ぜひ活用してみてください。
# ここから下は環境構築手順
以下のコマンドを実行して、Azure Developer CLI (azd) をインストールします。
curl -fsSL https://aka.ms/install-azd.sh | bashインストール方法は公式ドキュメントを参照してください。
以下のコマンドでAzure Developer CLIのバージョンを確認します。
azd version環境変数 AZURE_TENANT_IDが設定されている場合は、以下のコマンドでログインします。
azd auth login --tenant-id $AZURE_TENANT_ID環境変数が設定されていない場合は、以下のコマンドでログインします。
azd auth login以下のコマンドを実行して、Azure CLIをインストールします。
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bashインストール方法は公式ドキュメントを参照してください。
環境変数 AZURE_TENANT_IDが設定されている場合は、以下のコマンドでログインします。
az login --tenant $AZURE_TENANT_ID以下のコマンドでAzure CLIのバージョンとアカウント情報を確認します。
az version
az account listロケーション間違えると以下のようなエラーが出るので注意してください。
(LocationNotAvailableForResourceType) The provided location 'eastus' is not available for resource type 'Microsoft.DurableTask/schedulers'. List of available regions for the resource type is 'northcentralus,westus2,northeurope,uksouth,swedencentral,australiaeast,centralus,eastasia,koreacentral,eastus2,brazilsouth,canadacentral,centralindia,francecentral,germanywestcentral,italynorth,japaneast,japanwest,norwayeast,polandcentral,southafricanorth,southeastasia,switzerlandnorth,uaenorth,westus,westus3'.
Code: LocationNotAvailableForResourceType
Message: The provided location 'eastus' is not available for resource type 'Microsoft.DurableTask/schedulers'. List of available regions for the resource type is 'northcentralus,westus2,northeurope,uksouth,swedencentral,australiaeast,centralus,eastasia,koreacentral,eastus2,brazilsouth,canadacentral,centralindia,francecentral,germanywestcentral,italynorth,japaneast,japanwest,norwayeast,polandcentral,southafricanorth,southeastasia,switzerlandnorth,uaenorth,westus,westus3'.
.envでシークレットを管理する場合、以下のコマンドでCodespacesにシークレットを設定します。
gh secret set --app codespaces -f .envシークレットの一覧を確認するには、以下のコマンドを実行します。
gh secret list --app codespaces単一のシークレットを設定するには、以下のコマンドを使用します。
gh secret set --app codespaces SECRET_NAMEシークレットの削除は以下のコマンドで行います。
gh secret delete --app codespaces SECRET_NAME




