2019年6月11日にリリースされたPulumi Crosswalkは、AWSインフラストラクチャ・アズ・コードをサポートするコンポーネントのオープンソースライブラリだ。JavaScriptなど、一般的なプログラミング言語でAWSリソースを宣言可能にすることによる、AWSでアプリケーションを開発する際の開発者エクスペリエンスの改善を目的とする。PulumiのSaaSは各言語用のSDKと連携して、コンテナ、サーバーレス機能、その他クラウドインフラストラクチャなどのAWSリソースをプロビジョニングする上で、一貫性のあるワークフローを実現する。
Pulumiは、クラウドインフラストラクチャを作成、展開、管理するための、クラウドネイティブな開発プラットフォームを提供する。YAMLベースの構成ファイルに依存するCloudFormationやTerraformなどのツールとは違い、Pulumiでは、既存のプログラミング言語を使用して、アプリケーションインフラストラクチャを作成したり操作したりすることができる。現時点ではJavaScript、Python、TypeScript、GoのSDKをサポートしており、Amazon AWS、Google GCP、Microsoft Azureなど、複数のクラウドサービス上で動作する。
Crosswalkは、AWSプラットフォーム上で、Pulumi SDKと再利用可能な抽象化を構築するための、エンドツーエンドなアプローチを提供する。特にAWSにおいては、VPCによる開発などのベストプラクティスにアクセスできるように設計されており、AWSアプリケーションの導入を容易にする。Crosswalkは、AWSリソース全般とのインタラクションが可能な、整合性のあるインターフェイスを提供する。その中核的な構成要素は、サーバレス、コンテナ、そして継続的デリバリだ。CrosswalkはAWSプリミティブの上に構築されているため、ユーザは、AWSが提供するサービスを実装することができる。
AWS用Pulumi Crosswalk — Pulumiのブログより
Crosswalkの設計とその潜在的なメリットとして何を注目すべきかは、入力としてAPI Gatewayを、実行にLambdaを使用するサーバレスアプリケーションの例を見れば分かる。次のコード例は、PulumiプロジェクトリポジトリのサンプルSlackbotをベースとしたものだ。
import * as awsx from "@pulumi/awsx";
// Create an API endpoint that slack will use to push events to us with.
const endpoint = new awsx.apigateway.API("mentionbot", {
routes: [{
path: "/events",
method: "POST",
eventHandler: async (event) => {
// process the different types of messages.
return { statusCode: 200, body: "" };
},
}],
});
このアプリケーションでは、Slackのメッセージ送信に対して、そのメッセージを処理するLambda関数をトリガするAPI Gatewayルートを新たに生成して、エンドポイントをセットアップしている。API Gatewayルートの定義にはCrosswalkの"awsx"ライブラリが使用されており、イベントハンドラJavaScript関数によるLambdaが生成される。この関数はアプリケーションが生成した他のリソース(API Gatewayルートなど)にアクセスできるので、リソースARNやIDをLambdaに渡す必要はない。
DynamoDBやSNSなど、他のAWSリソースの設定例も含んだSlackbotアプリケーションの全体は、Pulumiブログで紹介されている。リソースが変更された(例えばDynamoDBからRDSに切り替えた)場合や、Lambda関数のような既存のリソースを適切なアクセスでアップデートする方法についても示されている。CloudWatchを使用してリソースを監視したり、観測性を高めるためにダッシュボードを開発する方法も紹介されている。
Pulumiは、クロスウォークアプローチを他のクラウドプロバイダに拡張することも計画している。AWS向けPulumi Crosswalkは現在、JavaScriptとTypeScriptをサポートしているが、ロードマップではPythonなど他の言語のサポートも予定されている。CrosswalkはPulumiのCommunity Editionと同じくオープンソースで、無償で使用することができる。Pulumiの商用バージョンには、Pulumi Crosswalk for AWSのサポートが含まれている。