はじめに
かねてより弊社製品のAWSマーケットプレイス出品を目論んでいましたが、ようやく出品することが出来ました。
https://aws.amazon.com/marketplace/seller-profile?id=3882910c-ca33-4358-977d-cdff07e184b8
ここでは、自社製品をAMIにして、AWSマーケットプレイスに出品するための手順をまとめています。AWSマーケットプレイスへの出品を検討している皆さんのご参考になればと思います。
また、今回の出品を受けて弊社製品がAWS上でも使いやすくなりましたので、AWS上での他システム連携などご検討中の方、ぜひご連絡ください。
出品までの大まかな流れ
AWSマーケットプレイス出品までの大まかな流れは以下の通りです。注意点など詳細については後述しています。
・AWSアカウントへの登録とサインアップ
クレジットカードが必要です。既に登録済みの方も多いかと思います。
・AWS Marketplace Management Poralへの登録とサインアップ
事前に登録したAWSアカウントを紐づけます。製品ロゴなどを用意しておきます。
・hyperwalletへの登録と税務情報、口座情報の登録
出品した製品の入金用口座などを用意しておきます。
・出品
今回はAMIを用意してFree版として製品を出品しました。詳細は後述しています。
出品の所感
出品はこれまでU.Sに事務所(法人)を置く必要があるなど、なかなか高いハードルでした。その辺りが緩和されたことで、我々も再挑戦して自社製品の出品までたどり着きました。
紆余曲折ありつつも、1ヶ月以内程度の期間で出品まで進めました。ただ、出品を進める中で下記のような点で、まだまだハードルの高さが伺えます。(2021年8月時点の所感です)
・U.Sに事務所(法人)が無くとも、海外口座は必要
日本法人であっても海外口座の開設をする必要があります。ただ、Hyperwalletという海外口座を簡単に使えるサービスを利用することで、AWSマーケットプレイス出品用の口座開設にすぐ対応できます。AWSアカウントに紐づけもでき、日本の銀行口座情報や住所などを入力することで数分で完了です。
・日本語入力不可(2バイト文字はエラー)
マーケットプレイスポータル画面のrequestsメニュー内に製品説明を入力する欄があるのですが、空白スペースもNGで最後にどこが間違っているかチェックに苦労しました。
・AWS担当者とは英語でコミュニケーション、時差もある
AWS担当者から届くメールはいつも夜中の3時や明け方の5時で、14~15時間の時差があるものと思います。そのため、審査には2日程度(最大3~5営業日)は待つ必要があり、少しでも訂正が入ると再度数日待ちます。また、英語でのコミュニケーションも必要になります。日本語で対応して欲しいところですが、恐らく当面は難しいと思います。
・AWS担当者が出品前に実際の手順を使って操作
一番驚いたことは、AWS担当者が出品前に製品を操作することです。また、テンプレートやデモデータがあれば、その使い方やデモを見せて欲しいという話しを受けました。基本的にはAWSポリシーに違反していないかのチェックのためと思いますが、ある意味しっかりしていると思います。今回、担当者からは製品にログインする際の初期パスワードを動的なパスワードにして欲しいという指摘を受けて、cloud-initを使って動的になるよう開発と調整しました。マニュアルも英語である程度用意する点も苦労しました。具体的にはinstructionsという欄に1024文字以内で箇条書きにして書きました。意外と文字数が少なく文章は簡潔にするなど工夫する必要があるかもしれません。
・出品用のAMIはus-east-1に置く
半日ハマったのですが、出品用のAMIは米国東部 (バージニア北部)us-east-1リージョンに置く必要があります。マーケットプレイスポータル画面上からAMIをインポートするのですが、このリージョンにあるAMIのみ対象です。日本であれば通常、大阪や東京リージョンで操作すると思いますが、出品になるとus-east-1が基本のようです。
・ロゴの準備
意外にも結構細かく指摘されました。製品ロゴは120~640ピクセル内で、背景は白か透過処理、サイズ比1:1または1:2で用意する必要があります。しかも、申請時には画像を添付ではなく、URLで指し示す必要があります。こちらはマーケティングチームや主管部署と調整する必要があるかと思います。
・EULA の準備
エンドユーザーライセンス契約を予め用意しておく必要がありますが、最初はこれも英語か!?とハードルが高いと思いました。ただ日本語で問題なく、意外にも指摘はなかったです。これまで用意されている英語版があれば一番良いと思いますが、日本語版のEULAを日本語のまま使うことが出来ました。これについてAWS担当者からうるさく言われることは無かったです。出品側の責任になるからだと思いますが、中身を見ていないようにも思います。ロゴと同じように申請時は添付ではなく、URLでPDFやページを指し示す必要があります。
・リクエストのReviewボタン位置が分かりづらい
出品にはマーケットプレイスポータル画面のRequestsメニューから、出品のリクエスト(製品の説明、使用するAMIのIDなど)をまとめたフォームに入力していくのですが、Saveボタンを押しても In Draftの状態で、リクエストできません。最終的に Reviewボタンを押すことでリクエストします。ただ、このボタンの位置が非常に分かりづらく苦労しました。リクエストフォームの最後に Note(AWS担当者への任意メッセージ)を書く欄がありその一番下の右側にある小さいReviewボタンを押します。EC2のようにチェックボックスにチェックを付けて「申請」ボタンみたいな分かりやすいインターフェースにして欲しいです。
・マーケットプレイス用のIAMが必要
AWSマネジメントコンソール(AMIの管理画面)とマーケットプレイスポータル(出品のための管理画面)は異なります。システムは内部的で連動していますが、その間の連動する通信にもアクセス制御が入っています。AMIをマーケットプレイスポータルにアセットする作業(出品リクエスト作業)の途中でそのアクセス制御の確認が求められます。少々分かりづらいのですが、具体的にはAWSマネジメントコンソール側で下記2つの権限を含むIAMロールを用意しておき、AMIをアセットする際にそのロールを紐づけます。
・AWSMarketplaceAmiIngestion
・AWSMarketplaceSellerProductsFullAccess
出品のためのAMI準備
ここでは自社製品をAMIにしてマーケットプレイスへ出品する手順についてまとめています。
手順は概ね下記のような手順です。
所感で書いたようなことを検討しておく
下記は出品前のチェックリストです。さらっと書いてますが、意外とお作法が多くて実際はその準備が大変です。
https://docs.aws.amazon.com/ja_jp/marketplace/latest/userguide/aws-marketplace-listing-checklist.html
出品の1~10までを全て説明したガイドは下記URLです。お作法の多さが分かると思います。
https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html
基本的には所感で書いたようなことを事前にご検討いただくと良いと思います。
マーケットプレイスポータルにログインできること(下記URLから登録)
https://aws.amazon.com/marketplace/partners/management-tour
予めAWSアカウントを持っているはずなので、その情報を使うことで比較的簡単に登録は出来ると思います。
今回Free版を出品したのですが、Hyperwalletは無くても良かったかもしれないです。念のため用意しておきました。
出品したい製品をインストールしたEC2を用意
出品したい製品をインストールしたEC2を用意します。ここでポイントなのは製品のログインユーザーのパスワードを動的に変更する仕組みを必要とする点です。今回は下記のように rootユーザーにてcloud-initを使ってEC2インスタンスが生成されるタイミングにのみ1度実行される仕組みを使ってパスワードを動的に変更するようにしました。
/etc/cloud/cloud.cfg.dフォルダに下記のような形でファイルを用意します。
/etc/cloud/cloud.cfg.d/99_test.cfg
99_test.cfgファイルに下記のように記述することで、EC2インスタンスが生成されるタイミングにのみroot権限で1度実行されます。ここではログとして/tmp/status.logというファイルに実行したことを示す文字を書き込んでいます。
#cloud-config runcmd: - /bin/bash <実行したいプログラムファイル名パス> - echo "実行完了" >> /tmp/status.log
また、AWSセキュリティポリシーの要件に合うよう、このEC2を出品用に仕上げることが一番神経を使う作業かと思います。これを失敗すると手戻りにかかる時間と精神的な疲労が大きいです。今回はAmazonLinux2で用意しています。下記にその内容をまとめました。
ec2-userでEC2にログインする
使用する前に AMI ツールを更新する
$ sudo yum upgrade -y aws-amitools-ec2
ルートのパスワードベースのリモートログインを無効にする
テキストエディタで /etc/ssh/sshd_config ファイルを開き下記のように変更
変更前 #PermitRootLogin yes 変更後 PermitRootLogin without-password
ローカルrootのパスワードを消してアクセスを無効にする
$ sudo su - # passwd -d root Removing password for user root. passwd: Success #exit $ sudo passwd -l root
/etc/shadowファイルが下記のようにパスワードが消え、!!(無効)になっていることを確認
変更前 root:$6$Gqkj$ineQdmecDZmoHTIVdMujC2xc68xQ3MpYMts:15500:0:99999:7:::
変更後 root:!!:15500::::::
ハマりポイントですが、 passwd -l の後に passwd -d をすると !!(無効)状態が解除されます。
SSH ホストキーペアと全ての認証キーの削除
$ sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
下記はrootユーザー含めて関連する全ユーザーで行う必要があります。
sudo shred -u ~root/.ssh/authorized_keys sudo shred -u ~ec2-uesr/.ssh/authorized_keys sudo shred -u ~/.ssh/authorized_keys sudo shred -u ~<関連ユーザー>/.ssh/authorized_keys
作業ログの削除
sudo find /var/log/ -type f -name \* -exec cp -f /dev/null {} \; rm -rf <アプリのログ>
コマンド履歴の削除
下記はrootユーザー含めて関連する全ユーザーで行う必要があります。
shred -u ~/.*history
端末を強制的に閉じる
kill -9 $$
または端末のウィンドウをマウスで閉じる
マーケットプレイスポータル画面でリクエスト作成
出品の1~10までを説明した中の「Submitting your product」という項目にも記載がありますが、AMIを出品する場合、まずはassetsというメニューからAMIをインポートします。
次にrequestsというタブで申請して、申請が通れば自動的にproductsというタブに申請したAMIが出品された状態として表示されます。
AWS CloudFormation を使用した AMI ベース配信のような方法もありますが、無くても大丈夫です。このrequestsタブで製品の紹介や、ロゴ、EULAのURL、製品の使い方を示した手順、サポート情報などを入れていきます。
このrequests画面で引っかかった点としては、用意したAMIが動作するインスタンスタイプをどれにするかです。最初全部にチェックを付けたところ、動かないインスタンスタイプがあると3日後ぐらいに連絡がありました。後でも変更はできるので、まずは自身で試したインスタンスタイプかその1つ上ぐらいを推奨のタイプとして、その前後+ー3~4つぐらいを範囲にすると良いかと思います。
AWS担当者から連絡があるまで2~3日程度待つ
時間がかかるポイントというと、AWS担当者からの連絡を待つ点ですが、それ以外にもAMIをマーケットプレイスポータルにインポートする際のセルフチェックにも時間がかかります(大体1時間程度)。
そのため、チェックに通らないとAMIを作り直す必要もあるため、それだけで半日程度の手戻りになり根気が必要です。
以上になります。
自社製品を出品をされる方がスムーズに出来ることをお祈りしております。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。