sbt-awsを利用してAWS MarketplaceにSaaSを出品する

こんにちは。ギークフィード araoです。

ギークフィードでは様々な自社開発ソリューションを提供していますが、
その中から、YouWireをAWS MarketplaceにSaaS製品として出品しました。

その際に、AWSが提供しているsbt-awsを利用することで、AWS MarketplaceにSaaS製品としてに必要なAPI処理を対応できたのでご紹介します。

YouWireとは

本題に入る前に、AWS Marketplaceに出品したYouWireをご紹介します。
YouWireは、ビジネスに必要な音声を一元管理するソリューションです。
携帯電話・オフィス電話・Webミーティングなどの音声(通話録音)をYouWireで管理することができ、
音声認識による通話内容のテキスト化や生成AIを利用した要約などを提供しています。

この度、YouWireはAmazon Bedrockと連携し、お客様の業務効率化を実現したことで、
2024 AWS Partner Awardsで Design Partner of the Year – APJを受賞しました!!

詳細は弊社のニュースをぜひぜひぜひご覧ください。

sbt-awsとは

さて、本題です。
sbt-awsはAWSがオープンソースとして公開するソリューションをSaaS化するツールキットです。
Node.jsのライブラリとして利用することができ、SaaSとして必要なControl PlaneとApplication PlaneのAWSリソースをCDKで作成できます。

sbt-conceptual.png
引用元: https://github.com/awslabs/sbt-aws

また、ソリューションのSaaS化だけでなく、AWS Marketplaceの出品に必要なAPIのAWSリソースを作成することが可能です。
今回はAWS Marketplaceに出品するためにsbt-awsをどのように利用するのか説明します。

 

AWS MarketplaceにSaas出品するために必要なこと

本記事では触れませんが、以下が必要です。

 

sbt-awsを利用してAWS Marketplaceと連携するControl Planeを構築

それでは、実際にsbt-awsを利用してAWS Marketplaceと連携するControl Planeを構築します。

AWS Marketplace Management Portalでの事前準備

Control Planeを構築する前に、AWS Marketplace Management PortalでSaaSのプロダクト登録を行います。

プロダクト登録する中でfulfillment URLの設定項目があります。
fulfillment URLはAWS Marketplaceでサブスクライブした後にリダイレクトされるSaaSプロダクトのアカウント登録画面(以下、Registration Page)のことを指します。
事前準備の段階では、適当なURL(https://www.geekfeed.co.jp/など)を登録します。
後述するcdkを適用するとサンプルのRegistration PageのURLが発行できるので差し替えます。

プロダクト登録できると、以下の情報が発行されます。
この情報をcdkに設定します。

  • Product code
  • Metering Service SNS topic ARN
  • Entitlement Service SNS topic ARN

AWS Marketplace Management Portalでプロダクト登録する際に、購入テストできるAWSアカウントを設定できます。
購入テストするAWSアカウントを設定することを忘れないようにしましょう。

cdkコードの範囲

今回は以下を作成するcdkのコードを記載します。

  • Control Planeに必要なAWSリソース(AWS Marketplaceに出品するための記述もあり)
  • AWS Marketplaceでサブスクライブした後のRegistration Pageのサンプルページ

SaaSにはControl PlaneとApplication Planeが必要と記載しましたが、
Application Planeの対応はプロダクトによって異なるので本記事では扱いません。
基本はsbt-awsのREADMEの通りに行います。

cdkのプロジェクトを初期化&sbt-awsをインストール

今回はblog-marketplaceディレクトリで作業します。
cdkのプロジェクトを初期化して、sbt-awsをインストールします。

 

/lib/control-plane.tsを作成

プロジェクト(今回はblog-marketplaceディレクトリ)配下にある/libにcontrol-plane.tsを作成します。
control-plane.tsの中身は以下です。

設定する項目において自分が使う際に説明がほしいと思った項目を以下にまとめました。

設定項目名 概要
systemAdminEmail sbt-awsの管理画面にログインパスワードが通知されるメールアドレス
marketplaceTechAdminEmail AWSから対応が必要な通知先のメールアドレス
productCode AWS Marketplace Management Portalで発行されるプロダクトコード
entitlementSNSTopic AWS Marketplace Management Portalで発行されるEntitlement Service SNS topicのARN
subscriptionSNSTopic AWS Marketplace Management Portalで発行されるMetering Service SNS topicのARN
pricingModel SUBSCRIPTIONS、CONTRACTS、CONTRACTS_WITH_SUBSCRIPTIONから選ぶ
それぞれ、従量課金、契約ベース、契約ベース+従量課金の意味
marketplaceSellerEmail Welcome Emailの送信元メールアドレス
Welcome Emailはfulfillment URLで設定するRegistration Pageでアカウント登録者に送信するメールのこと

 

/bin/blog-marketplace.tsを修正

cdk initするとプロジェクト(今回はblog-marketplaceディレクトリ)配下に自動的に作成されている/bin/blog-marketplace.tsを以下の内容に修正します。
AWS MarketplaceのAPIがバージニアリージョンのみ対応しているため、リージョンをus-east-1に指定します。

 

cdkをデプロイ

cdkをデプロイします。
AWSの認証情報が必要なので、profileを設定するなり、環境変数を設定するなりしてから実行してください。

 

fulfillment URLを修正

cdkのデプロイが成功すると様々なAWSリソースが作成されます。
CloudFrontのディストリビューションも作成されるため、https://CloudFrontのドメイン/redirectmarketplacetoken をfulfillment URLに設定します。
テストのためにCloudFrontのドメインをfulfillment URLに設定していますが、
実際はCNAMEレコードをDNSサーバに登録することになると思います。

実際にプロダクトをテスト購入

あとは、実際にAWS Marketplaceから該当のプロダクトを購入できるか試してみます。
購入テストを許可しているAWSアカウントから該当のプロダクトをAWS Marketplaceで検索し、購入を進めます。
購入すると以下の画面が表示されるので、クリックしましょう。

無事にRegistration Pageが表示されたら、AWS Marketplaceに出品するためのControl Planeの構築が完了しました。
あとは、Application Planeに対応するようにサービスのコードを修正すればSaaSとしてAWS Marketplaceに出品できます。

まとめ

AWS Marketplaceへ出品したいけど、どうやればいいのか情報が少なくて困っているという方に届けと思いながら書きました。
sbt-awsを利用すれば、AWS MarketplaceとのAPI連携をするControl Planeを作ってくれるので、だいぶ楽になると思います。

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
アバター
arao
年齢聞かれた時、すぐに自分の年齢が思い出せない年頃になってきた。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ