Azure Spring Apps でのアプリとデプロイ
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象:✅ Java ✅ C#
この記事の適用対象:✅ Basic または Standard ✅ Enterprise
アプリとデプロイは、Azure Spring Apps のリソース モデルにおける 2 つの重要な概念です。 Azure Spring Apps では、"アプリ" は、1 つのビジネス アプリを抽象化したものです。 アプリとしてデプロイされたコードまたはバイナリの 1 つのバージョンがデプロイで実行されます。 アプリは、次に示すように、Azure Spring Apps サービス インスタンス (単に サービス インスタンス と呼ばれることもあります) で実行されます。
1 つの Azure サブスクリプション内に複数のサービス インスタンスを含めることができますが、ビジネス アプリを構成するすべてのアプリが 1 つのサービス インスタンス内にある場合は Azure Spring Apps サービスを使用するのが最も簡単です。 その理由の 1 つは、アプリが相互に通信する可能性が高いからです。 サービス インスタンスで Eureka サービス レジストリを使用することで、簡単にこれを行うことができます。
Azure Spring Apps の Standard プランでは、1 つのアプリに 1 つの運用環境デプロイと 1 つのステージング デプロイが割り当てられ、簡単にブルー/グリーン デプロイを行うことができます。
アプリ
以下の機能とプロパティは、アプリ レベルで定義されています。
機能 | 説明 |
---|---|
パブリック エンドポイント |
アプリにアクセスする URL。 |
Custom Domain |
カスタム ドメインをセキュリティで保護する CNAME レコード。 |
サービス バインド |
その他の Azure サービスとの既定の接続。 |
Managed Identity |
アプリで Microsoft Entra ID によるマネージド ID を使用すると、他の Microsoft Entra で保護されたリソース (Azure Key Vault など) に簡単にアクセスできます。 |
永続的 ストレージ |
アプリの再起動後もデータを保持できるようにする設定。 |
展開
以下の機能とプロパティはデプロイ レベルで定義され、運用環境デプロイとステージング デプロイのスワップ時に交換されます。
機能 | 説明 |
---|---|
CPU | アプリ インスタンスあたりの仮想コアの数。 |
メモリ | アプリ インスタンスあたりのメモリの GB 数。 |
Instance Count |
手動または自動で設定されるアプリ インスタンスの数。 |
Auto-Scale | 事前に定義されたルールとスケジュールに基づいてインスタンス数を自動的にスケーリングします。 |
JVM オプション |
設定する JVM オプション。 |
Environment Variables |
設定する環境変数。 |
Runtime Version |
Java 8 または Java 11。 |
環境
Azure Spring Apps では、一部の読み取り専用 YAML ファイルがデプロイされたアプリにマウントされます。 これらのファイルには、デプロイの Azure コンテキストが含まれています。 次の一覧は、これらの YAML ファイルのパスと内容を示しています:
/etc/azure-spring-cloud/context/azure-spring-apps.yml
AZURE_SPRING_APPS: SUBSCRIPTION_ID: <your-azure-subscription-id> RESOURCE_GROUP: <your-resource-group-name> NAME: <your-azure-spring-apps-name>
/etc/azure-spring-cloud/context/azure-spring-apps-deployment.yml
AZURE_SPRING_APPS: APP: NAME: <your-app-name> DEPLOYMENT: NAME: <your-deployment-name> ACTIVE: true # true if the deployment is in production, false if in staging
アプリが Spring Boot アプリの場合、これら 2 つのファイル パスが SPRING_CONFIG_ADDITIONAL_LOCATION
環境変数に追加されます。 これにより、アプリでこれらのプロパティを構成として読み込み、コードで使用できます。 たとえば、 @ConfigurationProperties
注釈を使用して、YAML プロパティを Java クラスにバインドできます。 次のコード スニペットは、Azure コンテキストを表す @Configuration
クラスを作成する方法を示しています:
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "azure-spring-apps")
@Data
public class AzureSpringAppsContext {
private String subscriptionId;
private String resourceGroup;
private String name;
private AppContext app;
private DeploymentContext deployment;
@Data
public static class AppContext {
private String name;
}
@Data
public static class DeploymentContext {
private String name;
private boolean active;
}
}
その他の polyglot アプリの場合は、アプリ内の対応するファイルの読み取り/書き込みライブラリを使用して、対応するプロパティの読み取りとアクセスが必要になる場合があります。
制限
- 1 つのアプリに 1 つの運用環境デプロイを割り当てる必要があります。 この API は、運用デプロイの削除をブロックします。 デプロイを削除する前に、ステージング環境にスワップする必要があります。
- アプリには、最大で 2 つのデプロイを含めることができます。 この API は、2 つ以上のデプロイの作成をブロックします。 新しいバイナリは、既存の運用環境デプロイまたはステージング デプロイのいずれかにデプロイします。
- デプロイ管理は、Basic プランでは使用できません。 ブルーグリーン デプロイ機能を使用するには、Standard または Enterprise プランを使用します。