すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:アプリケーション構成の管理

最終更新日:Aug 21, 2026

このトピックでは、Spring Cloud Alibaba Nacos Config を使用して構成管理を行うデモ Spring Cloud アプリケーションを構築し、SAE にデプロイして SAE コンソールからその構成を管理する方法を説明します。

コード内に構成値を保持すると、デプロイメントの柔軟性が失われます。単一の設定を変更するだけで、アプリケーションの再ビルドと再デプロイが必要になります。Nacos で構成を外部化することにより、コードを変更したりサービスを再起動したりすることなく、ランタイムで値を更新できます。SAE は、アプリケーション構成管理 (ACM) を介してオープンソースの Nacos と連携します。アプリケーションを SAE にデプロイすると、SAE コンソールは構成の変更を管理し、実行中のインスタンスに直接プッシュします。

このトピックでは、nacos-config-example デモアプリケーションを使用します。手順に従うには、nacos-config-example.zip をダウンロードしてください。

前提条件

開始する前に、以下の準備が整っていることを確認してください:

  • Maven をダウンロードし、システムの PATH に追加済みであること

  • スタンドアロンモードで実行されているローカルの Nacos Server (下記の Nacos Server の起動 をご参照ください)

  • ローカルの Nacos Server コンソールで構成が作成済みであること (下記の ローカル Nacos Server での構成の作成 をご参照ください)

Nacos Server の起動

  1. Nacos Server パッケージをダウンロードして展開します。

  2. nacos/bin ディレクトリに移動し、お使いの OS に対応する起動コマンドを実行します:

    • Linux、Unix、macOS: sudo sh startup.sh -m standalone

    • Windows: startup.cmd -m standalone

    -m standalone フラグは、Nacos をデフォルトのクラスターモードではなく、スタンドアロンモードで起動します。Windows では、startup.cmd をダブルクリックするとクラスターモードで起動し、失敗します。これを修正するには、ファイルを開き、MODE="standalone" と設定します。詳細については、「Nacos のクイックスタート」をご参照ください。

ローカル Nacos Server での構成の作成

  1. Nacos Server コンソールにログインします。デフォルトのユーザー名とパスワードは、どちらも nacos です。

  2. 左側のナビゲーションペインで、[設定] をクリックします。[設定] ページで、右上隅にある add icon アイコンをクリックします。

  3. [設定の作成] ページで、以下のパラメーターを設定し、[公開] をクリックします:

    • [Data ID]: nacos-config-example.properties

    • [グループ]: DEFAULT_GROUP

    • [構成内容]: test.name=nacos-config-test

ステップ 1: Nacos Config を使用したアプリケーション構成の管理

バージョンの互換性

この例では、Spring Boot 2.1.4.RELEASE と Spring Cloud Greenwich.SR1 を使用します。お使いの Spring Cloud のリリースに一致する Spring Cloud Alibaba のバージョンを選択してください:

Spring Cloud リリース Spring Cloud Alibaba バージョン
Greenwich 2.1.1.RELEASE
Finchley 2.0.1.RELEASE
Edgware 1.5.1.RELEASE (廃止。使用しないでください)

アプリケーションのビルド

  1. nacos-config-example という名前の Maven プロジェクトを作成します。

  2. pom.xml に次の依存関係を追加します。この例では Spring Cloud Greenwich を使用しているため、spring-cloud-starter-alibaba-nacos-config のバージョンは 2.1.1.RELEASE です。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/>
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  3. src/main/java に com.aliware.edas パッケージを作成します。

  4. com.aliware.edas パッケージに、NacosConfigExampleApplication 起動クラスを作成します:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class NacosConfigExampleApplication {
        public static void main(String[] args) {
            SpringApplication.run(NacosConfigExampleApplication.class, args);
        }
    }
  5. com.aliware.edas パッケージに、EchoController コントローラーを作成します:

    • @Value("${test.name}") は、Nacos Config から test.name キーの値をインジェクトします。

    • @RefreshScope により、Nacos が構成変更をプッシュしたときに Bean が再作成されます。これにより、インジェクトされた値が再起動なしで自動的に更新されます。このアノテーションがない場合、アプリケーションは起動時にのみ構成を読み取り、その後の変更は無視します。

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RefreshScope
    public class EchoController {
    
        @Value("${test.name}")
        private String userName;
    
        @RequestMapping(value = "/")
        public String echo() {
            return userName;
        }
    }
  6. src/main/resources に bootstrap.properties を作成し、次の構成を追加してアプリケーションをローカルの Nacos Server に接続します。127.0.0.1:8848 はデフォルトの Nacos Server アドレス、18081 はアプリケーションのサービスポートです。Nacos Server が別の場所で実行されている場合は、アドレスとポートを変更してください。

    spring.application.name=nacos-config-example
    server.port=18081
    spring.cloud.nacos.config.server-addr=127.0.0.1:8848

    利用可能なすべての構成オプションについては、「構成リファレンス」をご参照ください。

  7. NacosConfigExampleApplication の main メソッドを実行して、アプリケーションをローカルで起動します。

ステップ 2: SAE へのアプリケーションのデプロイ

ローカルでテストした後、アプリケーションを SAE にデプロイします。デプロイ手順については、「アプリケーションのデプロイ」をご参照ください。

SAE による Nacos 設定の上書き方法

アプリケーションが SAE 上で実行されると、SAE は Nacos Server の IP アドレスとサービスポート、名前空間、アクセスキー、シークレットキー、コンテキストパスといった Nacos 接続情報を、bootstrap.properties の値よりも高い優先度で自動的にインジェクトします。bootstrap.properties の変更は不要で、元の値を保持することも削除することもできます。

ランタイム環境

SAE コンソール を介して [Deployment with JAR Packages] を使用して初めてデプロイする場合、[Application Runtime Environment] を [Standard Java Application Runtime Environment] に設定します。[Java Environment] には [Open JDK 8] を選択し、[File Upload Method] には [Upload JAR Package] を選択します。

SAE での一致する構成の作成

デプロイする前に、SAE の構成管理で同じ構成を再作成し、デプロイ後にアプリケーションがそれを読み取れるようにします。

  1. SAE コンソールにログインします。左側のナビゲーションペインで [Namespace] をクリックし、トップメニューバーからリージョンを選択します。

  2. [Namespace] ページで、ターゲットの名前空間の名前をクリックします。

  3. 左側のナビゲーションペインで、[Distributed Configuration Management] > [Configurations] を選択します。[Configurations] ページで、[Create Configuration] をクリックします。

  4. [Create configuration] パネルで、パラメーターを設定し、[Create] をクリックします。

    パラメーター 説明
    [Data ID] 構成識別子。この例では nacos-config-example.properties を使用します。一意性を保つために、package.class の命名規則に従ってください (例: com.taobao.tc.refund.log.level)。
    [グループ] 構成グループ。この例では DEFAULT_GROUP を使用します。一意性を保つために、product name:module name の形式を使用してください (例: ACM:Test)。グループは認証をサポートします。
    [データ暗号化] 機密情報を含む構成の暗号化を有効にします。Key Management Service (KMS) のアクティベーションと ACM の権限付与が必要です。暗号化された構成の Data ID には、cipher- というプレフィックスが付きます。詳細については、「暗号化された構成の作成と使用」をご参照ください。
    [構成フォーマット] 構成内容のフォーマット。この例では [TEXT] を選択します。
    [構成内容] 構成内容。この例では test.name=nacos-config-test と入力します。
    [構成の説明] 構成のオプションの説明。
    [その他の構成]
    [アプリケーション] ([More Configuration] 配下) 構成が属するアプリケーション名。
    [ラベル] ([More Configuration] 配下) 構成を整理するためのラベル。構成ごとに最大 5 つのラベルを付与できます。

ステップ 3: 結果の検証

アプリケーションが SAE で起動した後、SAE から構成を正しく読み取っていることを確認します。

  1. 次のコマンドを実行します。<application instance IP> と <service port> をアプリケーションの実際の値に置き換えてください。

    curl http://<application instance IP>:<service port>

    例:

    curl http://192.168.0.34:8080

    アプリケーションが構成を正常にロードした場合、コマンドは nacos-config-test を返します。[ヒント:] コマンドが期待される値を返さない場合は、SAE コンソールでアプリケーションログを確認し、Nacos が正常に接続されたことを確認し、SAE の Data ID とグループが bootstrap.properties の値と一致していることを確認してください。

  2. SAE コンソールで、構成内容を nacos-config-test から nacos-config-test2 に更新し、再度 curl コマンドを実行します。

    curl http://192.168.0.34:8080

    コマンドは nacos-config-test2 を返すようになり、SAE が更新された構成を再起動なしで実行中のアプリケーションにプッシュしたことが確認できます。EchoController の @RefreshScope アノテーションが自動更新をトリガーします。

構成リファレンス

必要に応じて、次の項目を bootstrap.properties に追加できます。

設定項目 キー デフォルト 必須 説明
サーバーアドレス spring.cloud.nacos.config.server-addr なし はい Nacos Server のアドレス。
Data ID プレフィックス spring.cloud.nacos.config.prefix ${spring.application.name} いいえ Data ID のプレフィックス。
グループ spring.cloud.nacos.config.group DEFAULT_GROUP いいえ 構成グループ。
Data ID サフィックスと構成フォーマット spring.cloud.nacos.config.file-extension properties いいえ Data ID サフィックスと構成ファイルフォーマット。サポートされている値: properties、yaml、yml。
コンテンツエンコーディング spring.cloud.nacos.config.encode UTF-8 いいえ 構成内容のエンコーディング。
取得タイムアウト spring.cloud.nacos.config.timeout 3000 いいえ 構成を取得するためのタイムアウト (ミリ秒単位)。
名前空間 spring.cloud.nacos.config.namespace なし いいえ 環境 (例:開発、テスト、本番) 間で構成を分離します。
相対パス spring.cloud.nacos.config.context-path なし いいえ サーバー API の相対パス。
エンドポイント spring.cloud.nacos.config.endpoint UTF-8なし いいえ リージョン内のサービスのエンドポイント。これを使用して、サーバーアドレスを動的に解決します。
リスナーと自動更新の有効化 spring.cloud.nacos.config.refresh.enabled true いいえ 構成のリスニングと自動更新を有効にします。これはデフォルト値のままにしてください。

構成項目の完全なリストについては、「Spring Cloud Alibaba Nacos Config のドキュメント」をご参照ください。

次のステップ