AWS Serverless Application Repository のよくある質問と条件

全般

サーバーレスアプリケーションでは、サーバーやその他のインフラストラクチャをプロビジョニング、デプロイ、管理する必要がありません。高い可用性を備えており、継続的に自動でスケールします。AWS Lambda (コンピューティング)、Amazon API Gateway (API)、Amazon DynamoDB (データベース) など、AWS のさまざまな完全マネージド型サービスのいずれかを使用して、サーバーレスアプリケーションを構築および実行できます。

AWS Serverless Application Repository は、AWS とその他の AWS パートナー、デベロッパーの発行するサーバーレスアプリケーション群で、その数は増え続けています。Serverless Application Repository はウェブやモバイルのバックエンド、ストリーミングの処理、機械学習その他のようなよくあるユースケース用のアプリケーションを簡単にデプロイできるようにしますので、AWS Serverless プラットフォームを今すぐ使い始められます。

AWS Serverless Application Repository は、米国東部 (オハイオ)、米国東部 (バージニア北部)、米国西部 (北カリフォルニア)、米国西部 (オレゴン)、アジアパシフィック (東京)、アジアパシフィック (シンガポール)、アジアパシフィック (ムンバイ)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、カナダ (中部)、欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ロンドン)、および南米 (サンパウロ) の各リージョンで利用できます。

AWS Serverless Application Repository には、Alexa Skills、チャットボット、データ処理、IoT、リアルタイムストリーム処理、ウェブやモバイルのバックエンド、ソーシャルメディアのトレンド分析、画像のサイズ変更向けのアプリケーションなど、AWS でパブリッシュされたアプリケーションが含まれています。

AWS Serverless Application Repository でアプリケーションを閲覧、デプロイ、発行するのに費用はかかりません。デプロイするアプリケーションで使用されるリソースに対して、AWS の通常の料金が適用されます。

AWS が提供するアプリケーションは、オープンソースの MIT ライセンスで利用できます。AWS 以外が一般提供するアプリケーションは、オープンソースイニシアティブ (OSI) が承認する 1 つ以上のオープンソースライセンスで利用できます。AWS のウェブサイトでアプリケーションのライセンスについて記載されたタブを開くと、ライセンスの詳細を確認できます。

AWS によって発行されるすべてのアプリケーションについては、ライセンスへの準拠とコードの品質が検査されます。サードパーティーが発行するアプリケーションについては、アプリケーションが変更またはアクセスするリソースを利用者が把握できるように、権限の使用が適切であることが検証されます。それらの詳細と、アプリケーションが AWS のお客様によってデプロイされた回数を、アプリケーションの使用前に確認できます。

はい。AWS Serverless Application Repository を使用すると、開発者は GitHub リポジトリで開発したサーバーレスアプリケーションを発行できるようになります。AWS CodePipeline を使用して GitHub のソースを AWS Serverless Application Repository とリンクすると、パブリッシングプロセスがさらに簡単になり、数分でプロセスを設定できるようになります。

アプリケーションのデプロイ

サーバーレスアプリケーションは AWS CloudFormation スタックとしてデプロイされます。これにより、アプリケーションを 1 つのユニットとして管理しやすくなります。各リソースは、アプリケーションを一意に識別できる Amazon リソースネーム (ARN) でタグ付けされます。これにより、AWS タグエディターコンソールを使用して、リソースを配置できます。また、AWS やサードパーティの既存のツールを使用して、各リソースを個別に管理できます。

アプリケーションの公開

サーバーレスアプリケーションを発行するには、AWS Serverless Application Model (SAM) 形式でアプリケーションを記述し、AWS CLI を使用してパッケージ化し、AWS マネジメントコンソール、AWS CLI、または AWS SDK を使用して発行します。この際、有効な AWS アカウントが必要です。また、アプリケーションの名前、説明、ソースコードへのリンク、LICENSE.txt が必要です。AWS の顧客ならば誰でも使えるアプリケーションは、米国東部 (バージニア北部) または米国東部 (オハイオ) のどちらかでパブリッシュされている必要があります。

AWS Serverless Application Repository で誰がアプリケーションを見つけ、デプロイできるかは、そのパブリッシャーがコントロールします。アクセスできるユーザーをチーム (同じ AWS アカウントを使用するグループ) に制限することも、他のアカウントとアプリケーションを共有することもできます。また、AWS の顧客なら誰でも利用できるように一般公開することもできます。発行するアプリケーションの権限と可視性の詳細については、リソースベースのポリシーに関するドキュメントをご覧ください。

サーバーレスアプリケーションの使用に課金したい場合は、Amazon API Gateway の背後に AWS Lambda を組み込み、その API を SaaS 製品として AWS Marketplace で販売できます。詳細は、AWS Marketplace での出品手順と、API に API Gateway を用いて課金する方法をご覧ください。

ネストされたアプリケーションの使用

ネストされたサーバーレスアプリケーションは、別のサーバーレスアプリケーションの一部としてデプロイされたコンポーネントです。サーバーレスアーキテクチャが拡張するにつれ、同じコンポーネントが複数のアプリケーションテンプレートで定義されるという、共通のパターンが現れてきます。共通のパターンを専用アプリケーションとして分類し、それらを新規または既存のアプリケーションテンプレートの一部としてネストできるようになりました。

ネストされたアプリケーションは、AWS CloudFormation のネストされたスタックとしてデプロイされます。

AWS:Serverless:Application リソースタイプを使用し、ローカルで開発したアプリケーションまたは Serverless Application Repository で共有されているアプリケーションを追加します。シンプルな AWS SAM 構文を使用して、ネストされたアプリケーションの入力を定義または出力を参照できます。詳細については、ドキュメントを参照してください。

SAM テンプレート内のネストされたアプリケーションそれぞれに一意の名前を指定してください。ネストされたアプリケーションによって作成されたリソースは、そのアプリケーションの一意の名前にスコープされます。

ネストされたアプリケーションをパッケージ化するには、SAM CLI の sam package コマンドを使用します。パッケージ化されたアプリケーションは API または AWS SDK を使用して Serverless Application Repository に発行します。SAM CLI の sam deploy コマンドを使用すると、すぐにアプリケーションをデプロイできます。

はい。SAM CLI の sam package コマンドを使用すれば、ネストされたアプリケーションの階層を再帰的にパッケージ化できます。1 つの最上位アプリケーションテンプレートに最大 199 のアプリケーションをネストできます。

ネストされたアプリケーションの使用

サーバーレスアプリケーションは AWS CloudFormation スタックとしてデプロイされます。これにより、アプリケーションを 1 つのユニットとして管理しやすくなります。各リソースは、アプリケーションを一意に識別できる Amazon リソースネーム (ARN) でタグ付けされます。これにより、AWS タグエディターコンソールを使用して、リソースを配置できます。また、AWS やサードパーティの既存のツールを使用して、各リソースを個別に管理できます。

アプリケーション ARN およびアプリケーションに必要なすべての入力パラメータを使用して AWS:Serverless:Application SAM リソースを設定します。詳細については、ドキュメントを参照してください。

Serverless Application Repository のネストされたアプリケーションはすでにパッケージ化されており、使用する準備ができています。お客様のアカウントでアプリケーションをデプロイする前に、既存の SAM CLI の sam package コマンドを使用して、ネストされたアプリケーションがまだ利用可能であることを確認できます。

お客様がネストするアプリケーションが削除されたりアクセス不能になったりした場合、アプリケーションの既存のデプロイに対する作用は失われます。もはや存在しない依存関係を備えた状態でアプリケーションのデプロイを試みる場合、アプリケーションの更新が必要になります。

1 つ以上のネストされたアプリケーションを含むアプリケーションは CAPABILITY_AUTO_EXPAND を使用します。

ネストされたアプリケーションの発行

はい。昨今、スタンドアロンのアプリケーションを発行するのとまったく同じように、ネストされたアプリケーションを Serverless Application Repository に発行できます。ネストされたアプリケーションを発行するには、AWS コンソール、AWS CLI、SAM CLI、Serverless Application Repository API を使用できます。

ネストされたアプリケーションの共有

サーバーレスアプリケーションは昨今 Lambda 関数が使用するのと同じモデルに準じます。Serverless Application Repository のサーバーレスアプリケーションへのアクセスは、AWS IAM のリソースベースのポリシーを使用して制御することが可能です。ポリシーを使用して、プライベートを維持したり、クロスアカウントアクセスを許可したり、一般公開したりできます。

ネストされたアプリケーションの階層がある場合、最上位アプリケーションを共有する相手の AWS アカウントに対して、ネストされたアプリケーションそれぞれを利用可能にする必要があります。

アプリケーションの共有

はい。同じ AWS 組織に属するすべてのアカウントとアプリケーションを共有できるようになりました。サーバーレスアプリケーションは、現在 Lambda 関数で使用されているのと同じモデルに準じます。AWS Serverless Application Repository 内のサーバーレスアプリケーションに対するアクセスは、AWS IAM のリソースベースのポリシーを使用して制御できます。ポリシーによって、アプリケーションを非公開にしたり、クロスアカウントのアクセスや組織のアクセスを許可したり、一般公開したりすることができます。サーバーレスアプリケーション用のリソースベースポリシーの詳細については、こちらをご参照ください。

使用開始するには、AWS Serverless Application Repository コンソールでアプリケーションを見つけ、[Share (共有)] タブをクリックしてから [Create Statement (ステートメントの作成)] をクリックします。ここで AWS 組織プリンシパルを追加し、組織にアプリケーションへのアクセス権を付与できます。また、AWS Serverless Application Repository API を使用してリソースベースのポリシーを更新し、組織全体でアプリケーションを共有することもできます。リソースベースのポリシーの詳細については、こちらのドキュメントをご参照ください。

いいえ。アプリケーションを共有できるのは、自分のアカウントと同じ AWS 組織に属するアカウントのみです。

組織単位とのアプリケーションの共有はサポートされていません。ポリシーによって、アプリケーションを非公開にしたり、クロスアカウントアクセスや組織のアクセスを許可したり、一般公開したりすることができます。

組織内の特定のアカウントがアプリケーションにアクセスできるようにするには、アプリケーションを共有したい相手の AWS アカウントと AWS 組織 ID を含めるようにリソースベースのポリシーを更新します。

はい。共有したアプリケーションに対して実行できる操作のタイプを制限するよう、リソースベースのポリシーにアクションを設定できます。リソースベースでのポリシーのアクションの更新は、AWS Serverless Application Repository API とコンソールでサポートされています。リソースベースのポリシーに設定できるアクションの詳細については、こちらのドキュメントをご覧ください。

ユーザー規約

1.AWS のお客様がアプリケーションを発行する場合は、AWS のサーバーレスアプリケーションとコンポーネント (「AWS サーバーレスアプリケーション」) を送信し、AWS Serverless Application Repository (「リポジトリ」) で同じ AWS アカウントのユーザー、指定した AWS アカウントのユーザー、リポジトリコンソール発行プロセスに従ってリポジトリを使用する AWS のすべてのお客様のいずれかが利用できるように設定できます。プライベート、または指定の AWS アカウントが利用できる AWS サーバーレスアプリケーションは、バイナリー、またはソースコードの形式で用意する必要があります。また AWS のすべてのお客様が利用できる AWS サーバーレスアプリケーションは、バイナリー、またはソースコードの形式で用意し、ユーザーがソースコードにアクセスできるように十分な詳細も提供する必要があります。

2.パブリッシャーは、AWS サーバーレスアプリケーションをリポジトリに送信するためのライセンス、ならびに必要な権限や権利をすべて持っている必要があります。パブリッシャーは、AWS サーバーレスアプリケーションに加え、オープンソースライセンスの著作権表示要件を含む、AWS サーバーレスアプリケーションのライセンス規約をリポジトリに送信する必要があります。パブリッシャーには、リポジトリに送信する前に、AWS サーバーレスアプリケーションを確認、評価、テストする責任があります。

3.パブリッシャーは、AWS およびその関連会社に対して、リポジトリ内の AWS サーバーレスアプリケーションを複製、配布、(該当する場合に) 一般に向けてまたは特定の AWS アカウントに向けて表示、実行、転送、使用、およびその他のデジタル処理による方法で利用可能にする (オンラインおよび電子的なあらゆる配布方法による) 権限を付与するものとします。

4.パブリッシャーは、AWS サーバーレスアプリケーションをリポジトリに送信するためのすべての権利を持ち、AWS サーバーレスアプリケーションのリポジトリからのダウンロードを許可するためのすべての権利を持ち、必要な著作権をすべて表示していることを表明し、保証するものとします。パブリッシャーは、他のユーザーに危害を及ぼすことを意図して、またはそれを目的として、マルウェア、悪意のあるコンテンツ、またはその他の有害なコンテンツとともに AWS サーバーレスアプリケーションを送信しないものとします。AWS は、AWS 独自の裁量により、上記の理由またはその他の何らかの理由で任意の AWS サーバーレスアプリケーションを削除および登録解除できるものとします。

5.AWS のお客様は、ダウンロードしたすべての AWS サーバーレスアプリケーションに対して、ライセンス (著作権表示やその他の要件を含む) を遵守するものとします。

6.任意の AWS サーバーレスアプリケーションの派生著作物を作成する AWS のお客様は、AWS サーバーレスアプリケーションのライセンスに基づく、派生著作物を作成するための適切な権利があるかどうかを判断することに責任を負うものとします。また、著作権表示またはその他の要件を遵守する必要があります。

7.AWS サーバーレスアプリケーションのパブリッシャーのライセンスまたはその他の合意は、そのパブリッシャーと AWS のお客様との間でのみ有効です。AWS またはその関連会社のいずれも、当該ライセンスまたはその他の合意の当事者ではなく、当該ライセンスまたはその他の合意に基づくいかなる責任や義務も負わないものとします。AWS は、パブリッシャーまたは AWS のお客様がライセンス (著作権表示を含む) またはその他の要件を遵守することに関して、責任を負わないものとします。

8.リポジトリで利用可能な AWS サーバーレスアプリケーションおよびサードパーティーが提供するその他のあらゆるファイルは「リポジトリコンテンツ」と呼ばれます。 リポジトリコンテンツは「現状有姿」で提供され、明示または黙示を問わず、商品性、特定目的への適合性、非侵害性の保証を含むがこれに限定されない、いかなる種類の保証も伴いません。リポジトリコンテンツの使用またはその他の取り扱いによって、あるいはこれに関連して生じたいかなる要求、損害、またはその他の法的責任については、契約や不法行為などのいかなる場合においても、パブリッシャー、著作権所有者、AWS またはその関連会社はその責任を負いません。

9.パブリッシャーおよび AWS のお客様は、リポジトリの使用において本規約のすべてを遵守すること、本規約はいつでも AWS によって更新される可能性があることを認識しているものとします。