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

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

最終更新日:Apr 02, 2026

このトピックでは、Spring Cloud Alibaba Nacos Config を使用して構成管理を行うデモ Spring Cloud アプリケーションの作成手順を説明し、その後、SAE へのデプロイおよび SAE コンソールを用いた構成管理について解説します。

構成値をコード内に記述すると、デプロイが不安定になります。設定値を 1 つ変更するだけでも、アプリケーションの再ビルドと再デプロイが必要になります。Nacos を用いて構成を外部化することで、コードの変更やサービスの再起動を行わずに、実行時に構成値を更新できます。SAE は、オープンソースの Nacos をアプリケーション構成管理(Application Configuration Management:ACM)を通じて統合しています。SAE へアプリケーションをデプロイした後、SAE コンソールから構成の変更を管理・プッシュし、実行中のインスタンスに直接反映させることができます。

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

前提条件

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

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 IDnacos-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 バージョン
Greenwich2.1.1.RELEASE
Finchley2.0.1.RELEASE
Edgware1.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. main メソッドを NacosConfigExampleApplication から実行し、アプリケーションをローカルで起動します。

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

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

SAE による Nacos 設定のオーバーライド方法

アプリケーションが SAE 上で実行される場合、SAE は bootstrap.properties の値よりも優先度の高いレベルで、以下の Nacos 接続情報を自動的に注入します:Nacos Server の IP アドレスおよびサービスポート、名前空間、アクセスキー、シークレットキー、コンテキストパス。そのため、bootstrap.properties の変更は不要です。元の値はそのまま保持しても、削除しても構いません。

ランタイム環境

最初に SAE コンソール を使用して「JAR パッケージによるデプロイ」でデプロイする場合、アプリケーションランタイム環境標準 Java アプリケーションランタイム環境 に設定します。

t5edYO3jaM

SAE における対応する構成の作成

デプロイ前に、アプリケーションがデプロイ後に構成を読み取れるよう、SAE の構成管理機能で同一の構成を再作成してください。

  1. SAE コンソール にログインします。左側ナビゲーションウィンドウで 名前空間 をクリックし、上部のメニューバーからリージョンを選択します。

  2. 名前空間 ページで、対象の名前空間の名前をクリックします。

  3. 左側ナビゲーションウィンドウで、分散構成管理構成 を選択します。構成 ページで、構成の作成 をクリックします。

  4. 構成の作成 パネルで、パラメーターを設定し、作成 をクリックします。

    パラメーター説明
    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 を入力します。
    構成の説明構成の任意の説明です。
    アプリケーションその他の構成 の下)この構成が属するアプリケーション名です。
    ラベルその他の構成 の下)構成の整理用ラベルです。1 つの構成につき最大 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 が更新された構成を実行中のアプリケーションにプッシュしたことが確認できます。@RefreshScope アノテーションが EchoController に付与されているため、自動的なリフレッシュがトリガーされます。

構成リファレンス

必要に応じて、以下の項目のいずれかを 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.groupDEFAULT_GROUPいいえ構成グループです。
Data ID サフィックスおよび構成フォーマットspring.cloud.nacos.config.file-extensionpropertiesいいえData ID のサフィックスおよび構成ファイルのフォーマットです。サポートされる値: propertiesyamlyml
コンテンツエンコーディングspring.cloud.nacos.config.encodeUTF-8いいえ構成コンテンツのエンコーディングです。
取得タイムアウトspring.cloud.nacos.config.timeout3000いいえ構成取得のタイムアウト(ミリ秒単位)です。
名前空間spring.cloud.nacos.config.namespaceなしいいえ開発、テスト、本番など、環境ごとの構成を分離します。
相対パスspring.cloud.nacos.config.context-pathなしいいえサーバー API の相対パスです。
エンドポイントspring.cloud.nacos.config.endpointUTF-8いいえリージョン内のサービスのエンドポイントです。サーバーアドレスを動的に解決するために使用します。
リスナーおよび自動更新の有効化spring.cloud.nacos.config.refresh.enabledtrueいいえ構成リスニングおよび自動更新を有効化します。デフォルト値のままにしてください。

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

次のステップ