Amazon Web Services ブログ
Amplify Functions の新機能 : スケジューリングとログストリーミング
AWS Amplify は、Amplify Functions に関数の実行ログストリーミングと cron および自然言語によるスケジューリングサポートの 2 つの新機能を発表します。Amplify では、開発者が TypeScript でサーバーレス関数を作成し、数秒でビジネスロジックをデプロイできるため、すばやくイテレーションできます。Amplify Functions の詳細については、AWS Amplify の Functions ドキュメントを参照してください。
ストリーミング関数ログ
Amplify の開発者ごとのクラウドサンドボックス では、開発者がライブリソースを使ってアプリケーションのバックエンドを設計、構築、イテレーションできる開発環境を提供されます。さらにイテレーションサイクルを減らすために、Amplify は開発者が関数の実行ログをターミナルに直接ストリームできるようになり、ローカルの開発環境から離れることなく関数実行のインサイトが得られるようになりました。
開始するには、--stream-function-logs
オプションを指定して、すべての関数ログのストリーミングをオプトインしてください。
たとえば、認証リソースに Amazon Cognito Lambda トリガーとしてアタッチされた関数の集合がある場合、フロントエンドフレームワークの開発サーバーを起動し、認証フローを通って、各関数の呼び出しからログを検査できます。これらはすべて AWS マネジメントコンソールに移動することなく行えます。
例えば、多数の関数があり、バックエンド機能の一部のデバッグだけに興味がある場合、--logs-filter
を指定して関数名に基づいてログ出力をフィルタリングできます。
ログフィルターでは、関数名でフィルタリングできます。上記のコマンド例を使用する場合、トリガーのリソース名の規則は次のようになります。
ただし、複雑なフィルターの場合、--logs-filter
オプションは正規表現を受け入れます。上記と同じ例を用いて、関数名が “auth” で始まるものだけのログをフィルターする場合は次のようになります。
sandbox プロセスは、対応する正規表現と一致する関数のログのみを出力します。
Amplify ドキュメントを参照して、関数ログのストリーミングの詳細を確認してください。
関数の予約実行
2 つ目の改善は、開発者が cron 式や自然言語を使って関数の実行間隔をスケジューリングできるようになったことです。開始するには、新しいschedule
プロパティで間隔を指定します。
スケジュールは間隔として定義され、毎時間パフォーマンスの良い投稿の「トップページ」を生成したり、週次ダイジェストとしてパフォーマンスの良い投稿をまとめるなど、さまざまな用途に使用できます。新しい間隔を作成するには、自然言語を使用するだけです。
以下の例では、「 [リマインド ] 毎日水を飲む」関数のスケジューリングを定義しています。
スケジューリングはさらに、強く型付けされたプロパティ値を提供することで簡素化されます。これにより、タブ補完が可能になり、スケジュールがシステムの期待に沿うことが保証されます。スケジュールは cron 式を使って複雑な要件を定義できます。たとえば、ゴミを出すリマインダーは、特定の時間に 2 日間だけ出る場合があります。
内部的には、スケジュールは Amazon EventBridge ルール によって実現されています。このルールは、EventBridge がイベントにどのように対応するかを記述する方法です。ここでは、これらのルールは関数が実行される間隔を示しています。
スケジューリング関数の詳細は、Amplify のドキュメントをご覧ください
まとめ
2 つの新機能を Amplify Functions で体験していただけることを心よりお待ちしております。フィードバックがあれば、ぜひ GitHub リポジトリまでお寄せください。同じ志を持つ開発者コミュニティにご参加いただく場合は、Discord コミュニティにご参加ください。
本記事は「New features for Amplify Functions: Scheduling and Log Streaming」を翻訳したものです。