Serverless App Engine (SAE) でジョブテンプレートを作成することで、定期的なスケジュールに基づいてジョブを自動実行したり、HTTP/HTTPS リクエストを送信して手動でトリガーしたりできます。タスクが完了すると、SAE はそのコンピューティングリソースを迅速に解放します。
ユースケース
SAE ジョブは、レイテンシに敏感でない非同期オフラインシナリオに適しています。
-
時間駆動型処理:例えば、毎時正時にクーポンを送信したり、日次売上を更新したり、タグカウントやオーディエンスデータを毎日更新したりする場合。
-
バッチデータ処理:例えば、月次統計レポートを生成したり、リアルタイム結果を必要としない SMS メッセージのステータスを一括更新したりする場合。
-
非同期デカップリング:例えば、プロモーションのステータスを更新したり、オフラインクエリを非同期で実行したり、内部ビジネスロジックからデカップリングしたりする場合。
-
CI/CD:CI/CD タスクの完了後、コンピューティングリソースを即座に解放する場合。
SAE ジョブとセルフマネージド型オープンソース製品のさまざまなシナリオでの比較については、ユースケースをご参照ください。
前提条件
プライマリアカウントを使用する場合は、Serverless App Engine と EventBridge をアクティベートし、必要な権限を付与する必要があります。
RAM ユーザーを使用する場合は、まず以下の手順を完了する必要があります。
-
プライマリアカウントを使用して EventBridge をアクティベートします。
-
プライマリアカウントを使用して SAE ジョブをアクティベートし、コンソールの指示に従って
AliyunServiceRoleForEventBridgeSendToSAEサービスリンクロールを作成します。 -
プライマリアカウントを使用して、RAM ユーザーに
AliyunEventBridgeReadOnlyAccess権限を付与します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
ワークフロー
-
ジョブを実行するには、まずジョブテンプレートを作成する必要があります。
-
ジョブは、スケジューリングルールまたは HTTP/HTTPS リクエストによってトリガーされます。各トリガーは、ジョブテンプレートに基づいて新しいジョブを生成します。
-
SAE は各ジョブを実行するために新しいインスタンスを作成します。
ジョブテンプレートの作成
-
SAE ジョブテンプレートページに移動します。上部メニューでリージョンと名前空間を選択し、[ジョブテンプレートの作成] をクリックします。
-
[基本情報] ページで以下のパラメータを設定し、[次へ] をクリックします。
パラメータ
説明
ジョブテンプレート名
ジョブテンプレートのカスタム名を入力します。
名前空間タイプ
[システム作成] 名前空間を選択するか、[既存の名前空間を選択] します。
ジョブデプロイ方法
-
[イメージデプロイを選択]:[イメージの設定] をクリックします。[デモイメージ]、[My Alibaba Cloud images] (同一アカウント配下の Container Registry (ACR) インスタンスのイメージ)、[Other Alibaba Cloud account's private images] (異なるアカウント配下の ACR インスタンスのイメージ)、または [カスタムイメージ] (ACR 以外のインスタンスのイメージ) を使用してアプリケーションをデプロイできます。また、[別のジョブテンプレートのイメージを使用] することもできます。イメージの作成、プッシュ、プルのプロセスは、アプリケーションのデプロイと同じです。詳細については、「イメージを使用したアプリケーションのデプロイ」をご参照ください。
-
[コードパッケージデプロイ]:[デプロイ用コードパッケージの設定] をクリックします。[スタック言語] と [コードパッケージタイプ] を選択し、コードパッケージをアップロードして実行環境を指定します。コードパッケージの作成とアップロードのプロセスは、アプリケーションのデプロイと同じです。詳細については、「コードパッケージを使用したアプリケーションのデプロイ」をご参照ください。
-
[シェルスクリプト]:[シェルスクリプトの設定] をクリックし、ページ上の例を参考にしてジョブの実行スクリプトを設定します。
インスタンスタイプ
-
[Default]:安定したパフォーマンスを提供します。これらのインスタンスはプリエンプトされたりエビクションされたりすることがないため、高いリアルタイム性と安定性が求められるシナリオに適しています。
-
[BestEffort]:パフォーマンスが大きく変動する可能性があります。これらのインスタンスはプリエンプトやエビクションの対象となるため、リアルタイム性や安定性に対する厳格な要件がないシナリオに適しています。
-
[BestEffort First]:システムは BestEffort インスタンスを優先的にスケジューリングします。BestEffort インスタンスがプリエンプトされた場合、システムは自動的に Default インスタンスにフォールバックしてタスクの中断を防ぎます。
単一インスタンス仕様
ジョブ実行時の単一インスタンスの CPU およびメモリ仕様を指定します。
同時実行インスタンス数
任意の時点で同時実行するインスタンスの数を指定します。
-
-
[ジョブ設定] ページで以下のパラメータを設定し、[次へ] をクリックします。
パラメータ
説明
ジョブタイプ
-
定期タスク
-
[Cron 式]:ジョブのスケジュールを定義します。Cron 式を手動で入力するか、[生成ツールを使用] をクリックして対話形式で生成できます。
-
-
ワンタイムタスク (HTTP/HTTPS トリガー)
-
[リクエストタイプ]:必要に応じて、ジョブをトリガーするリクエストプロトコル (HTTP、HTTPS、または HTTP&HTTPS) を選択します。
-
[リクエストメソッド]:ジョブをトリガーするリクエストメソッド (GET、POST、PUT、PATCH、DELETE、または HEAD) を 1 つ以上選択します。
-
[セキュリティ設定]:ドロップダウンリストからセキュリティ設定方法を選択します。以下のオプションがあります。
-
[設定なし]:セキュリティ設定は不要です。受信したすべての URL リクエストがイベントに変換され、EventBridge にプッシュされます。
-
[セキュアドメイン]:セキュアドメイン名を入力します。これらのドメインからの URL リクエストのみがイベントに変換され、EventBridge にプッシュされます。その他のリクエストはフィルタリングされます。
-
[IP 範囲]:IP アドレスまたは CIDR ブロックを入力します。指定された IP アドレスまたは CIDR ブロックからの URL リクエストのみがイベントに変換され、EventBridge にプッシュされます。その他のリクエストはフィルタリングされます。
-
-
同時実行ポリシー
[詳細設定] を展開し、同時実行ポリシーを選択します。
-
[Allow]:ジョブの同時実行を許可します。スケジュールされたトリガーが、継続的に新しいジョブを作成します。
-
[Forbid]:ジョブの同時実行を禁止します。前のジョブがまだ完了していない場合、新しいジョブは作成されません。
-
[Replace]:前のジョブがまだ完了していない場合、新しいジョブが前のジョブを置き換えます。
タイムアウト期間
ジョブの最大実行時間を指定します。ジョブがこの時間を超えた場合、システムはジョブの終了を試みます。値は [0, 604800] の範囲で、単位は秒です。デフォルト値は 3,600 です。
リトライ回数
失敗したジョブをリトライする回数を指定します。値は [0, 10] の範囲です。デフォルト値は 3 です。
タスクシャーディングの有効化
[タスクシャーディングを有効にする] スイッチをオンにし、[タスクシャーディング名の編集] をクリックして [タスクシャーディング名の編集] パネルで設定を行います。これは、ビッグデータワークロードでシャードを複数のクライアントに均等に分散させて実行する際によく使用されます。
-
-
(オプション) [詳細設定] ページで、必要に応じて追加機能を設定します。以下の説明では、イメージデプロイ方法を例として使用します。
-
[作成] をクリックし、ジョブテンプレートが作成されるまで待ちます。
-
作成されたジョブテンプレートを表示するには、SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択します。目的のジョブテンプレートをクリックして詳細ページを開きます。
ジョブの実行と停止
定期タスクの実行
定期タスクは、ジョブテンプレート作成時に設定した Cron 式に基づいて自動的に実行されます。
ワンタイムタスクの実行
ワンタイムタスクは、HTTP または HTTPS リクエストによってトリガーできます。リクエストプロトコルとメソッドは、ジョブテンプレートで設定した内容によって決まります。
-
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> を実際の URL に置き換えてください。 -
例 2:呼び出しで同時実行インスタンス数を指定します。
curl -d '{"Replicas":"3"}' -H 'Content-Type: application/json' <url> # 注:<url> を実際の URL に置き換えてください。
-
ジョブの手動実行
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
[ジョブテンプレート詳細] ページの右上隅にある [ジョブを手動で実行] をクリックします。
ジョブの停止
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
[ジョブテンプレート詳細] ページの右上隅にある [ジョブを停止] をクリックし、画面の指示に従います。
タスク履歴の管理
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
左側メニューで [タスク履歴] をクリックします。[タスク履歴] ページで、タスクの実行ステータスを表示し、必要に応じて操作を行います。
-
タスクを削除するには、[操作] 列の [削除] をクリックし、画面の指示に従います。
-
詳細を表示するには、タスク ID をクリックして [タスクレコード詳細] ページを開き、インスタンスのステータスを表示します。
-
イベント情報の表示
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
左側メニューで [イベント情報] をクリックします。上部の検索ボックスで、[ソース名]、[理由]、[ソースタイプ]、または [重要度] でイベントを検索できます。
ジョブテンプレートの編集と削除
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
右上隅の [ジョブテンプレートを編集] または [ジョブテンプレートを削除] をクリックし、画面の指示に従います。
ジョブテンプレートを削除すると、システムはそのテンプレートから作成されたすべてのジョブインスタンス (テンプレートの作成情報を含む) を削除します。また、お客様に代わって購入された関連 SLS プロジェクトも削除され、ログ収集機能が無効になります。
バージョンのロールバック
変更したジョブテンプレートに問題が発生した場合、以前のバージョンにロールバックできます。
-
SAE ジョブテンプレートページに移動します。上部メニューで目的のリージョンと名前空間を選択し、目的のジョブテンプレートをクリックして詳細ページを開きます。
-
右上隅の [履歴バージョンにロールバック] をクリックします。
-
[履歴バージョンにロールバック] ページで、目的のバージョンを選択し、[OK] をクリックします。