でネストされたアプリケーションを使用してコードとリソースを再利用する AWS SAM - AWS Serverless Application Model

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

でネストされたアプリケーションを使用してコードとリソースを再利用する AWS SAM

サーバーレスアプリケーションには、1 つ、または複数のネストされたアプリケーションを含めることができます。ネストされたアプリケーションはより大きなアプリケーションの一部であり、スタンドアロンのアーティファクトとして、またはより大きなアプリケーションのコンポーネントとしてパッケージ化とデプロイができます。ネストされたアプリケーションを使用すると、頻繁に使用されるコードを、それ独自のアプリケーションに変換でき、より大きなサーバーレスアプリケーションまたは複数のサーバーレスアプリケーション間で再利用することができます。

サーバーレスアーキテクチャが大きくなるにつれて起こる共通のパターンに、同じコンポーネントが複数のアプリケーションテンプレートで定義されているということがあります。ネストされたアプリケーションを使用すると、共通のコード、機能、リソース、設定を別々の AWS SAM テンプレートで再利用できるため、単一のソースからのコードのみを維持できます。これにより、コードと設定の重複を減らします。さらに、このモジュラーアプローチは、開発を合理化し、コードの編成を強化し、サーバーレスアプリケーション間の一貫性を促進します。ネストされたアプリケーションを使用することで、アプリケーションに固有のビジネスロジックにさらに集中できるようになります。

サーバーレスアプリケーションでネストされたアプリケーションを定義するには、AWS::Serverless::Application リソースタイプを使用します。

ネストされたアプリケーションは、以下の 2 つのソースから定義できます。

  • AWS Serverless Application Repository アプリケーション - AWS Serverless Application Repositoryにある、アカウントで利用可能なアプリケーションを使用して、ネストされたアプリケーションを定義できます。これには、アカウント内のプライベートアプリケーション、アカウントとプライベートに共有されたアプリケーション、または AWS Serverless Application Repositoryで一般公開されているアプリケーションを使用できます。異なるデプロイ許可レベルの詳細については、AWS Serverless Application Repository デベロッパーガイドの「Application Deployment Permissions」と「Publishing Applications」を参照してください。

  • ローカルアプリケーション - ローカルファイルシステムに保存されているアプリケーションを使用して、ネストされたアプリケーションを定義できます。

AWS SAM を使用して、サーバーレスアプリケーションでこれらのタイプのネストされたアプリケーションの両方を定義する方法の詳細については、以下のセクションを参照してください。

注記

サーバーレスアプリケーションでネストできるアプリケーションの最大数は 200 です。

ネストされたアプリケーションで使用できるパラメータの最大数は 60 です。

からのネストされたアプリケーションの定義 AWS Serverless Application Repository

ネストされたアプリケーションは、 AWS Serverless Application Repositoryで利用可能なアプリケーションを使用することによって定義できます。また、 AWS Serverless Application Repositoryを使用して、ネストされたアプリケーションが含まれるアプリケーションを保存し、配信することもできます。でネストされたアプリケーションの詳細を確認するには AWS Serverless Application Repository、 AWS SDK、、 AWS CLIまたは Lambda コンソールを使用できます。

AWS Serverless Application Repository サーバーレスアプリケーション AWS SAM テンプレートの でホストされているアプリケーションを定義するには、すべての AWS Serverless Application Repository アプリケーションの詳細ページで SAM リソースとしてコピー ボタンを使用します。これを実行するには、以下の手順を実行します。

  1. AWS Management Consoleにサインインしていることを確認します。

  2. AWS Serverless Application Repository デベロッパーガイド」の「アプリケーションの閲覧、検索、デプロイ」セクションのステップ AWS Serverless Application Repository を使用して、 にネストするアプリケーションを見つけます。 https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-consuming-applications.html#browse-and-search-applications

  3. [Copy as SAM Resource] (SAM リソースとしてコピーする) ボタンをクリックします。これで、表示されているアプリケーションの SAM テンプレートセクションがクリップボードにコピーされます。

  4. このアプリケーションにネストしたいアプリケーションの SAM テンプレートファイルの Resources: セクションに、この SAM テンプレートセクションを貼り付けます。

以下は、 AWS Serverless Application Repositoryでホストされているネストされたアプリケーションの SAM テンプレートセクションの例です。

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:123456789012:applications/application-alias-name SemanticVersion: 1.0.0 Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

必要なパラメータ設定がない場合は、テンプレートの Parameters: セクションを省略できます。

重要

でホストされているネストされたアプリケーションを含むアプリケーションは、ネストされたアプリケーションの共有制限を AWS Serverless Application Repository 継承します。

例えば、アプリケーションがパブリックに共有されているが、親アプリケーションを作成した AWS アカウントとのみプライベートに共有されているネストされたアプリケーションが含まれているとします。この場合、 AWS アカウントにネストされたアプリケーションをデプロイするアクセス許可がない場合、親アプリケーションをデプロイすることはできません。アプリケーションをデプロイするための許可の詳細については、AWS Serverless Application Repository デベロッパーガイドの「Application Deployment Permissions」と「Publishing Applications」を参照してください。

ローカルファイルシステムからのネストされたアプリケーションの定義

ローカルファイルシステムに保存されているアプリケーションを使用して、ネストされたアプリケーションを定義できます。これを行うには、ローカルファイルシステムに保存されている AWS SAM テンプレートファイルへのパスを指定します。

以下は、ネストされたローカルアプリケーションの SAM テンプレートセクションの例です。

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ../my-other-app/template.yaml Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

パラメータ設定がない場合は、テンプレートの Parameters: セクションを省略できます。

ネストされたアプリケーションのデプロイ

AWS SAM CLI コマンド sam deploy を使用して、ネストされたアプリケーションをデプロイできます。詳細については、を使用してアプリケーションとリソースをデプロイする AWS SAMを参照してください。

注記

ネストされたアプリケーションが含まれるアプリケーションをデプロイする場合、お客様は、これらが含まれることを承認する必要があります。これを行うには、CreateCloudFormationChangeSet API CAPABILITY_AUTO_EXPANDに を渡すか、 aws serverlessrepo create-cloud-formation-change-set AWS CLI コマンドを使用します。

ネストされたアプリケーションの承認に関する詳細については、AWS Serverless Application Repository デベロッパーガイドの「Acknowledging IAM Roles, Resource Policies, and Nested Applications when Deploying Applications」を参照してください。