Serverless Application Engine (SAE) でジョブタスクテンプレートを作成すると、スケジュールに基づいてタスクを自動的に実行したり、HTTP/HTTPS リクエストを送信してタスクをトリガーしたりできます。タスクが完了すると、計算リソースは迅速に解放されます。
利用シーン
SAE ジョブは、レイテンシーに敏感でない非同期オフラインシナリオに適しています。
時間駆動型の処理シナリオ:定時のクーポン送信、日次収益の更新、日次タグ数とクラウドデータの更新など。
バッチデータ処理:月次統計レポートの生成やショートメッセージステータスの一括更新など、リアルタイム性能が重要でない場合。
デカップリングのための非同期実行:アクティビティステータスの更新、オフラインクエリの非同期実行、内部ロジックからのデカップリングなど。
CI/CD:継続的インテグレーション (CI)/継続的デリバリー (CD) タスクが完了した後、計算リソースをすぐに解放できます。
SAE ジョブと、さまざまなシナリオにおける自己構築のオープンソースソリューションとの比較については、「利用シーン」をご参照ください。
事前準備
Alibaba Cloud アカウントを使用する場合、SAE と EventBridge を有効化し、必要な権限を付与する必要があります。
Resource Access Management (RAM) ユーザーを使用するには、次の準備を完了する必要があります。
Alibaba Cloud アカウントで EventBridge を有効化する必要があります。
Alibaba Cloud アカウント所有者は、SAE ジョブを有効化し、コンソールの指示に従って
AliyunServiceRoleForEventBridgeSendToSAEサービスリンクロールを作成する必要があります。Alibaba Cloud アカウントの所有者は、RAM ユーザーに
AliyunEventBridgeReadOnlyAccess権限を付与する必要があります。詳細については、「RAM ユーザーに権限を付与する」をご参照ください。
利用フロー
タスクを実行する前に、タスクテンプレートを作成する必要があります。
タスクは、スケジューリングルールまたは HTTP/HTTPS リクエストの送信によってトリガーされます。トリガーごとに、タスクテンプレートに基づいて新しいタスクが生成されます。
SAE は、各タスクを実行するために新しいインスタンスを作成します。
タスクテンプレートの作成
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択し、[タスクテンプレートの作成] をクリックします。
ウィザードの [基本情報] ページで、パラメーターを設定し、[次へ] をクリックします。
設定項目
説明
タスクテンプレート名
タスクテンプレートのカスタム名を入力します。
名前空間タイプ
[システム作成] の名前空間または [既存の名前空間を選択] を選択します。
タスクデプロイメント方法
イメージによるデプロイ:[イメージの設定] をクリックします。[デモイメージ]、[マイ Alibaba Cloud イメージ] (同一アカウントの Alibaba Cloud Container Registry (ACR) インスタンス内のイメージ)、[他の Alibaba Cloud アカウントのプライベートイメージ] (別アカウントの ACR インスタンス内のイメージ)、または [カスタムイメージ] (ACR インスタンス以外のイメージ) を選択してアプリケーションをデプロイします。また、[他のタスクテンプレートからイメージを参照] することもできます。イメージの作成、プッシュ、プルのプロセスは、アプリケーションのデプロイと同じです。詳細については、「イメージを使用したアプリケーションのデプロイ」をご参照ください。
コードパッケージによるデプロイ:[コードパッケージデプロイメントの設定] をクリックします。[技術スタック言語] と [コードパッケージタイプ] を選択します。次に、コードパッケージをアップロードし、そのランタイム環境を指定します。コードパッケージの作成とアップロードのプロセスは、アプリケーションのデプロイと同じです。詳細については、「コードパッケージを使用したアプリケーションのデプロイ」をご参照ください。
シェルスクリプト:[シェルスクリプトの設定] をクリックし、ページ上のサンプルスクリプトを参照してタスク実行スクリプトを設定します。
インスタンスタイプ
デフォルト:安定したパフォーマンスを提供します。インスタンスはプリエンプトされたり、排除されたりしません。このタイプは、高いリアルタイム性能と安定性が求められるシナリオに適しています。
BestEffort:パフォーマンスが大幅に変動する可能性があります。インスタンスはプリエンプトされたり、排除されたりする可能性があります。このタイプは、リアルタイム性能や安定性に特別な要件がないシナリオに適しています。
BestEffort 優先:システムは BestEffort インスタンスのスケジューリングを優先します。BestEffort インスタンスがプリエンプトされた場合、システムは自動的にデフォルトインスタンスにフォールバックし、タスクの中断を防ぎます。
シングルインスタンス仕様
タスク実行時の単一インスタンスの CPU とメモリの仕様を指定します。
同時実行インスタンス数
任意の時点で同時に実行されるべきインスタンスの数を指定します。
ウィザードの [タスク設定] ページで、パラメーターを設定し、[次へ] をクリックします。
設定項目
説明
タスクタイプ
定期タスク
cron 式:タスク実行のスケジュールを定義します。手動で cron 式 を入力するか、[生成ツールを使用] をクリックして対話的に生成できます。
ワンタイムタスク (HTTP/HTTPS トリガー)
リクエストタイプ:必要に応じてタスク実行をトリガーするリクエストプロトコルを選択します:HTTP、HTTPS、または HTTP&HTTPS。
リクエストメソッド:必要に応じてタスク実行をトリガーするリクエストメソッドを選択します。複数のメソッドを選択できます:GET、POST、PUT、PATCH、DELETE、HEAD。
セキュリティ設定:ドロップダウンリストからセキュリティ設定方法を選択します。オプションは次のとおりです:
設定不要:セキュリティ設定は不要です。受信したすべての URL リクエストはイベントに変換され、EventBridge にプッシュされます。
セキュアドメイン名:セキュアドメイン名を入力します。このドメイン名からの URL リクエストのみがイベントに変換され、EventBridge にプッシュされます。他のすべてのリクエストはフィルターされます。
IP CIDR ブロック:有効な IP アドレスまたは IP CIDR ブロックを入力します。この IP アドレスまたはこの CIDR ブロック内の IP アドレスからの URL リクエストのみがイベントに変換され、EventBridge にプッシュされます。他のすべてのリクエストはフィルターされます。
同時実行ポリシー
[詳細設定] を展開し、同時実行ポリシーを選択します。
許可:タスクの同時実行を許可します。スケジュールされたタスクは継続的に新しいタスクを作成します。
禁止:タスクの同時実行を禁止します。前のタスクが終了していない場合、新しいタスクは作成されません。
置換:新しいタスクを作成する時点で前のタスクが終了していない場合、新しいタスクが前のタスクを置き換えます。
タイムアウト
タスクが実行できる最大時間を指定します。タスクがタイムアウト期間内に終了しない場合、システムはタスクの停止を試みます。値は [0, 604800] の範囲内である必要があります。単位は秒です。デフォルト値は 3600 秒です。
リトライ
タスクが失敗した後にリトライする回数を指定します。値は [0, 10] の範囲内である必要があります。デフォルト値は 3 です。
タスクシャーディングを有効化
[タスクシャーディングを有効化] スイッチをオンにし、[タスクシャード名の編集] をクリックし、[タスクシャード名の編集] パネルで設定を構成します。この機能は、ビッグデータ処理でよく使用され、シャードは実行のために複数のクライアントに均等に分散されます。
(オプション) ウィザードの [詳細設定] ページで、必要な機能を設定します。次の例では、イメージを使用したデプロイメントの設定方法を示します。
[作成] をクリックし、タスクテンプレートが作成されるのを待ちます。
作成されたタスクテンプレートを表示するには、SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
タスクの実行、開始、停止
定期タスクの実行
定期タスクは、タスクテンプレートで指定された cron 式に基づいてスケジュール通りに自動的に実行されます。
ワンタイムタスクの実行
ワンタイムタスクは、HTTP または HTTPS リクエストを送信することでトリガーできます。リクエストのプロトコルとメソッドは、タスクテンプレートの設定によって決まります。
On the SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
Job Settings セクションで、[パブリックリクエスト URL] または [プライベートリクエスト URL] を取得します。パブリックネットワークからリクエストを送信する場合は、[パブリックリクエスト URL] を使用します。
リクエストを送信してタスクをトリガーします。POST リクエストメソッドを設定して、リクエストボディに JSON 形式で特定のパラメーターを渡すことができます。パラメーターの詳細については、「ExecJob」をご参照ください。
例 1:呼び出しで環境変数を指定する。
curl -d '{"Envs":[{"name":"aaa","value":"bbb"},{"name":"ccc","value":"ddd"}]}' -H 'Content-Type: application/json' <url> # 注: <url> を実際の値に置き換えてください。例 2:呼び出しで同時実行インスタンス数を指定する。
curl -d '{"Replicas":"3"}' -H 'Content-Type: application/json' <url> # 注: <url> を実際の値に置き換えてください。
タスクの手動トリガー
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
[タスクテンプレート詳細] ページで、右上隅の [タスクの手動実行] をクリックします。
タスクの停止
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
[タスクテンプレート詳細] ページで、右上隅の [タスクの停止] をクリックし、画面の指示に従います。
タスクレコードの管理
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
左側のナビゲーションウィンドウで、[タスクレコード] をクリックします。[タスクレコード] ページで、タスクの実行ステータスを表示し、タスクに対する操作を実行できます。
タスクを削除するには、[操作] 列の [削除] をクリックし、画面の指示に従います。
詳細を表示するには、タスク ID をクリックして [タスクレコード詳細] ページに移動し、インスタンスの実行ステータスを表示します。
タスクイベントの表示
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
左側のナビゲーションウィンドウで、[イベント情報] をクリックします。上部の検索ボックスで、[ソース名]、[イベント理由]、[ソースタイプ]、[イベントレベル] などの条件でイベントを検索できます。
タスクテンプレートの編集と削除
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
右上隅で、[タスクテンプレートの編集] または [タスクテンプレートの削除] をクリックし、画面の指示に従います。
タスクテンプレートを削除すると、システムはテンプレートに関連付けられているすべてのタスクインスタンスとテンプレートの作成情報を削除します。代理で購入された SLS リソースも解放され、ログを収集して SLS に送信する機能は無効になります。
以前のバージョンへのロールバック
タスクテンプレートを変更した後に新しいバージョンで問題が発生した場合は、以前のバージョンにロールバックできます。
SAE タスクテンプレート ページで、上部のナビゲーションバーでリージョンと名前空間を選択します。次に、対象のタスクテンプレートをクリックして詳細ページに移動します。
右上隅で、[以前のバージョンにロールバック] をクリックします。
[以前のバージョンにロールバック] ページで、ロールバックしたいバージョンを選択し、[OK] をクリックします。