

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

# でネストされたアプリケーションを使用してコードとリソースを再利用する AWS SAM
<a name="serverless-sam-template-nested-applications"></a>

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

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

サーバーレスアプリケーションでネストされたアプリケーションを定義するには、[AWS::Serverless::Application](sam-resource-application.md) リソースタイプを使用します。

ネストされたアプリケーションは、以下の 2 つのソースから定義できます。
+ **AWS Serverless Application Repository アプリケーション** - AWS Serverless Application Repositoryにある、アカウントで利用可能なアプリケーションを使用して、ネストされたアプリケーションを定義できます。これには、アカウント内の*プライベート*アプリケーション、アカウントと*プライベートに共有された*アプリケーション、または AWS Serverless Application Repositoryで*一般公開*されているアプリケーションを使用できます。異なるデプロイ許可レベルの詳細については、*AWS Serverless Application Repository デベロッパーガイド*の「[Application Deployment Permissions](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-consuming-applications.html#application-deployment-permissions)」と「[Publishing Applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-publishing-applications.html)」を参照してください。
+ **ローカルアプリケーション** - ローカルファイルシステムに保存されているアプリケーションを使用して、ネストされたアプリケーションを定義できます。

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

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

## からネストされたアプリケーションを定義する AWS Serverless Application Repository
<a name="serverless-sam-template-nested-applications-how-to-serverlessrepo"></a>

ネストされたアプリケーションは、 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 マネジメントコンソールにサインインしていることを確認します。

1. デ*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                         ](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-consuming-applications.html#browse-and-search-applications                         )

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

1. このアプリケーションにネストしたいアプリケーションの 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](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-consuming-applications.html#application-deployment-permissions)」と「[Publishing Applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverless-app-publishing-applications.html)」を参照してください。

## ローカルファイルシステムからのネストされたアプリケーションの定義
<a name="serverless-sam-template-nested-applications-how-to-local-app"></a>

ローカルファイルシステムに保存されているアプリケーションを使用して、ネストされたアプリケーションを定義できます。これを行うには、ローカルファイルシステムに保存されている 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:` セクションを省略できます。

## ネストされたアプリケーションのデプロイ
<a name="serverless-sam-templates-nested-applications-deploying"></a>

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

**注記**  
ネストされたアプリケーションが含まれるアプリケーションをデプロイする場合、お客様は、これらが含まれることを承認する必要があります。これを行うには、[CreateCloudFormationChangeSet API](https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateCloudFormationChangeSet) `CAPABILITY_AUTO_EXPAND`に渡すか、 [https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/create-cloud-formation-change-set.html](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/create-cloud-formation-change-set.html) AWS CLI コマンドを使用します。  
ネストされたアプリケーションの承認に関する詳細については、*AWS Serverless Application Repository デベロッパーガイド*の「[Acknowledging IAM Roles, Resource Policies, and Nested Applications when Deploying Applications](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/acknowledging-application-capabilities.html)」を参照してください。