サーバーレスアプリケーションセンターの環境は、アプリケーションのデプロイメントをリージョン、Virtual Private Cloud (VPC)、リソース構成ごとに分離します。本番サービスの可用性を高めたり、レイテンシーを低減させたりするために、分離された環境にサービスをデプロイできます。各環境は、Simple Log Service (SLS)、VPC、File Storage NAS (NAS) などのリソースを個別にスコープするため、開発、テスト、本番のワークロードが重複することはありません。各環境には異なるパイプラインルールを関連付けることができます。例えば、開発ブランチへのコミットはテスト環境での継続的インテグレーション (CI) をトリガーし、main ブランチへのマージは本番環境でのリリースをトリガーします。
事前準備
デフォルトでは、環境にドメイン名は割り当てられません。環境ごとに異なるドメイン名を使用するには、リポジトリの
customDomainsフィールドをs.yamlファイルで指定します。環境内で Alibaba Cloud のリソース (SLS、VPC、NAS) をホストするには、対応するサービスの権限が必要です。必要なポリシーを
AliyunFCServerlessDevsRoleロールにアタッチしてください。1 つのサービスを複数の環境にデプロイできます。環境が提供する構成を使用するかどうかを決定できます。
環境の作成
Function Compute コンソールにログインし、アプリケーションの詳細ページを開きます。
[環境の作成] をクリックします。

次のパラメーターを設定します。
パラメーター 説明 環境名 この環境を区別するための分かりやすい名前。1 つの環境タイプに複数の名前付き環境を持つことができます。 環境タイプ フィルター用のカテゴリ: [テスト]、[ステージング]、または[本番]。 説明 リージョンやロール名などの基本情報。ここで指定されたリージョン、ロギング、ネットワーク、ストレージの設定は s.yamlよりも優先されます。例えば、s.yamlが中国 (杭州) を指定していても、環境が中国 (北京) に設定されている場合、リソースは中国 (北京) にデプロイされます。パイプライン構成 各環境はデフォルトで 1 つのパイプラインにマッピングされます。ここでパイプラインのトリガーとビルドステップを設定します。
ブランチと環境のマッピング
推奨されるワークフローは、1 つのブランチを 1 つのパイプラインに、そして 1 つの環境にマッピングするものです。
| ブランチ | 環境 | トリガー |
|---|---|---|
dev | 開発 | dev |
test | テスト | test |
main / master | 本番 | main にマージする main |
プルリクエスト (PR) またはマージリクエスト (MR) を使用して、開発ブランチからテストブランチへ、そして main ブランチへとコードを昇格させます。
一部のシナリオでは、複数のアプリケーションが異なるユーザーのために同じコードベースを共有します。1 つのブランチで複数のパイプラインをトリガーし、1 回のコミットで複数の環境を更新できます。
環境詳細の表示
Function Compute コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
[アプリケーション] ページで、対象のアプリケーションを見つけ、左側の展開アイコンをクリックしてその環境をリスト表示します。
環境名をクリックして [環境詳細] タブを開きます。このタブには以下が表示されます:このタブからは、クラウドベースの開発やパイプライン構成にもアクセスできます。
基本情報
コードソース構成
[デプロイ履歴]
リソース
環境のロールバック
ロールバックは、アプリケーションのビジネスコードにのみ影響します。データベースなどの上流および下流の依存関係はロールバックされません。例えば、エラーのためにアプリケーションがデータベースに接続できない場合、アプリケーションコードだけをロールバックしても問題は解決しません。
ロールバックは、以前のデプロイメントのスナップショットにキャプチャされたコードとリソース構成 (例えば、s.yaml ファイル) を再デプロイします。
対象の環境の [環境詳細] タブを開きます。
[デプロイ履歴] セクションで、復元したいデプロイメントの横にある [ロールバック] をクリックします。

リソースの管理
サーバーレスアプリケーションセンターは、リソースのバインディング情報を読み取り専用モードで表示します。リソースを管理するには、リソース管理ページで直接設定を変更するのではなく、コードリポジトリ内の s.yaml ファイルを使用してください。
s.yaml を対応して更新せずにリソース管理ページで行われた変更は、次のパイプラインデプロイメントで上書きされます。例えば、s.yaml が関数のメモリを 1,024 MB に設定し、開発者が管理ページでそれを 2,048 MB に変更した場合、次のパイプラインデプロイメントでメモリは 1,024 MB にリセットされます。
クラウドでの開発
アプリケーションの詳細ページで、[クラウド開発] をクリックします。
[コードリポジトリの初期化] をクリックして、コード環境をセットアップします。
初期化後、WebIDE を使用してコードの表示、編集、デバッグを行います。
次のいずれかの方法で、変更をリポジトリにプッシュします。
内蔵のターミナルまたは Git プラグインを使用します。
左上隅の [コードをリポジトリに保存] をクリックして、追加、コミット、プッシュを 1 つのステップで行います。

パイプラインの構成
パイプライン構成の詳細については、「パイプラインの管理」をご参照ください。
環境の削除
Function Compute コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
削除する環境を特定し、[削除] を [操作] 列でクリックします。
確認ダイアログで、リストされているリソースを確認します。保持したいリソースの横にあるチェックボックスの選択を解除します。
環境を削除すると、関連するリソースも削除される場合があります。確認する前に、リソース名とタイプを検証してください。

環境間でのサービスの分離
サーバーレスアプリケーションセンターは GitOps モデルに従います:Git リポジトリがアプリケーションの状態の単一の真実のソースであり、Serverless Devs YAML 仕様に準拠した YAML ファイルがデプロイメントを制御します。
多くの企業環境では、開発 (R&D) ロールと運用保守 (O&M) ロールには明確な責任分担があります。O&M チームはインフラを管理し、開発者がそれを使用することを承認します。R&D チームはアプリケーションコードを管理します。すべてのインフラが Git リポジトリで管理されている場合、O&M 担当者はインフラを変更するためにコードをサブミットする必要があり、これはほとんどの O&M エンジニアのワークフローと矛盾します。以下のデプロイメントメソッドは、この分離をさまざまな規模で解決します。
方法 1:環境ごとに個別の YAML ファイルを使用
各環境専用の YAML ファイルを維持し、各パイプラインを対応するファイルにポイントします。

YAML ファイル間の重複を減らすには、Serverless Devs で YAML 継承 を使用します。
方法 2:共有 YAML とパイプライン環境変数を使用
単一の YAML ファイルを使用し、${env(VAR_NAME)} 構文を使用してパイプライン環境変数を通じて環境ごとの値を注入します。
vars:
region: ${env(region)}
service:
name: demo-service-${env(prefix)}
internetAccess: true
logConfig:
project: ${env(LOG_PROJECT)}
logstore: fc-console-function-pre
vpcConfig:
securityGroupId: ${env(SG_ID)}
vswitchIds:
- ${env(VSWITCH_ID)}
vpcId: ${env(VPC_ID)}パイプライン環境変数の設定手順については、「パイプラインの管理」の「パイプライン環境変数」セクションをご参照ください。
方法 3:共有 YAML と環境リソースの出力を使用
単一の YAML ファイルを使用し、${environment.outputs.XXX} 構文を通じて各環境にバインドされたリソースを参照します。
service:
logConfig:
project: ${environment.outputs.slsProject}
logstore: ${environment.outputs.slsLogStore}
vpcConfig:
vpcId: ${environment.outputs.vpcId}
securityGroupId: ${environment.outputs.securityGroupId}
vswitchIds:
- ${environment.outputs.vswitchId}
nasConfig:
userId: 10003
groupId: 10003
mountPoints:
- serverAddr: ${environment.outputs.nasMountTargetId}
nasDir: /fc-deploy-service
fcDir: /mnt/auto方法の選択
| 方法 | 最適なケース | 長所 | 短所 |
|---|---|---|---|
| 1 -- 個別の YAML ファイル | すべてのメンバーが直接 YAML ファイルを管理する小規模チーム | 最も直接的。各環境は完全に自己完結している | 環境間で YAML が重複する |
| 2 -- パイプライン環境変数 | R&D と O&M のロールが明確に分かれており、環境数が少ないチーム | 責任の明確な分離。O&M は変数を管理し、R&D はコードを管理する | インフラが大規模になるとスケールが難しい |
| 3 -- 環境リソースの出力 | 動的な環境を持つ最新のサーバーレスワークフロー | オンデマンドのリソースプロビジョニングをサポート。CI 中に環境を自動的に起動・停止できる。本番リソースの権限をオンデマンドで R&D に付与できる | 環境にリソースバインディングを事前に構成する必要がある |