

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

# Infrastructure Composer サーバーレスアプリケーションを AWS クラウドにデプロイする
<a name="other-services-cfn"></a>

を使用して AWS Infrastructure Composer 、デプロイ対応のサーバーレスアプリケーションを設計します。デプロイするには、 AWS CloudFormation 互換性のあるサービスを使用します。[AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) を使用することをお勧めします。

AWS SAM は、 でサーバーレスアプリケーションを構築および実行するための開発者ツールを提供するオープンソースフレームワークです AWS。 AWS SAMの短縮構文を使用すると、開発者はデプロイ中にインフラストラクチャに変換される CloudFormation リソースと特殊なサーバーレスリソースを宣言します。

## 重要な AWS SAM 概念
<a name="w2aac23b7"></a>

を使用する前に AWS SAM、その基本的な概念の一部を理解しておくことが重要です。
+ **[の AWS SAM 仕組み](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam-overview)**: *AWS Serverless Application Model デベロッパーガイド*にあるこのトピックでは、 、 AWS SAM CLI AWS SAM プロジェクト、 AWS SAM テンプレートという、サービスレスアプリケーションの作成に使用する主要コンポーネントに関する重要な情報を提供します。
+ **[AWS Serverless Application Model (AWS SAM) の使用方法](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/chapter-using-sam.html)**: *AWS Serverless Application Model デベロッパーガイド*にあるこのトピックでは、アプリケーションを AWS クラウド AWS SAM にデプロイするために使用するために必要な手順の概要を説明します。

Infrastructure Composer でアプリケーションを設計するときに、 **sam sync** コマンドを使用して にローカルの変更 AWS SAM CLIを自動的に検出させ、それらの変更を にデプロイさせることができます CloudFormation。詳細については、 *AWS Serverless Application Model デベロッパーガイド*[の「sam 同期の使用](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/using-sam-cli-sync.html)」を参照してください。

## 次の手順
<a name="w2aac23b9"></a>

アプリケーションのデプロイを準備するには[および Infrastructure Composer を使用して AWS SAM CLIデプロイするためのセットアップ](other-services-cfn-sam-using.md)、「」を参照してください。

# および Infrastructure Composer を使用して AWS SAM CLIデプロイするためのセットアップ
<a name="other-services-cfn-sam-using"></a>

でアプリケーションをデプロイするには AWS SAM、まず と をインストールしてアクセス AWS CLIする必要があります AWS SAM CLI。このセクションのトピックでは、これを行う方法について詳しく説明します。

## AWS CLI のインストール
<a name="other-services-cfn-sam-prerequisites-aws"></a>

をインストールする前に、 をインストールして設定 AWS CLIすることをお勧めします AWS SAM CLI。手順については、「 *AWS Command Line Interface ユーザーガイド*[」の「 の最新バージョンをインストールまたは更新する AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)」を参照してください。

**注記**  
をインストールしたら AWS CLI、 AWS 認証情報を設定する必要があります。詳細については、「 *AWS Command Line Interface ユーザーガイド*」の[「クイックセットアップ](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html)」を参照してください。

## AWS SAM CLI のインストール
<a name="other-services-cfn-sam-prerequisites-sam"></a>

をインストールするには AWS SAM CLI、 *AWS Serverless Application Model デベロッパーガイド*[の「 AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html)のインストール」を参照してください。

## へのアクセス AWS SAM CLI
<a name="w2aac23c13c13"></a>

から Infrastructure Composer を使用する場合 AWS マネジメントコンソール、 を使用するための以下のオプションがあります AWS SAM CLI。

**ローカル同期モードをアクティブ化する**  
ローカル同期モードでは、 AWS SAM テンプレートを含むプロジェクトフォルダがローカルマシンに自動的に保存されます。Infrastructure Composer は、 が AWS SAM 認識するようにプロジェクトディレクトリを構造化します。は、プロジェクトのルートディレクトリから実行 AWS SAM CLIできます。  
**ローカル同期**モードの詳細については、「」を参照してください[Infrastructure Composer コンソールでプロジェクトをローカルに同期して保存する](using-composer-project-local-sync.md)。

**テンプレートをエクスポートする**  
テンプレートをローカルマシンにエクスポートできます。次に、テンプレートを含む親フォルダから を実行します AWS SAM CLI。`--template-file` オプションを任意の AWS SAM CLIコマンドで使用して、テンプレートへのパスを指定することもできます。

**から Infrastructure Composer を使用する AWS Toolkit for Visual Studio Code**  
Toolkit for VS Code から Infrastructure Composer を使用して、Infrastructure Composer をローカルマシンに持ち込むことができます。次に、Infrastructure Composer と VS Code の AWS SAM CLI を使用します。

## 次の手順
<a name="w2aac23c13c15"></a>

アプリケーションをデプロイするには、「」を参照してください[で Infrastructure Composer AWS SAM を使用してビルドおよびデプロイする](other-services-cfn-sam-examples-example1.md)。

# で Infrastructure Composer AWS SAM を使用してビルドおよびデプロイする
<a name="other-services-cfn-sam-examples-example1"></a>

を完了したので[および Infrastructure Composer を使用して AWS SAM CLIデプロイするためのセットアップ](other-services-cfn-sam-using.md)、 AWS SAM と Infrastructure Composer を使用してアプリケーションをデプロイできます。このセクションでは、これを行う方法について詳しく説明する例を示します。[でアプリケーションをデプロイする手順については、「 デベロッパーガイド」の「 でアプリケーションとリソース AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-deploying.html)をデプロイする」を参照してください AWS SAM。 *AWS Serverless Application Model *

この例では、Infrastructure Composer デモアプリケーションを構築およびデプロイする方法を示します。デモアプリケーションには次のリソースがあります。

![\[基本的な CRUD サーバーレスアプリケーションを示す Infrastructure Composer デモ。\]](http://docs.aws.amazon.com/ja_jp/infrastructure-composer/latest/dg/images/aac_t1_04.png)


**注記**  
デモアプリケーションの詳細については、「」を参照してください[Infrastructure Composer デモプロジェクトのロードと変更](getting-started-demo.md)。
この例では、**ローカル同期**を有効にした Infrastructure Composer を使用します。

1. **sam build** コマンドを使用してアプリケーションを構築します。

   ```
   $ sam build
   ...
   Build Succeeded
   
   Built Artifacts  : .aws-sam/build
   Built Template   : .aws-sam/build/template.yaml
   
   Commands you can use next
   =========================
   [*] Validate SAM template: sam validate
   [*] Invoke Function: sam local invoke
   [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch
   [*] Deploy: sam deploy --guided
   ```

   は、プロジェクトフォルダに `./aws-sam` ディレクトリ AWS SAM CLIを作成します。このディレクトリには、アプリケーションの Lambda 関数のビルドアーティファクトが含まれています。プロジェクトディレクトリの出力は次のとおりです。

   ```
   .
   ├── README.md
   ├── samconfig.toml
   ├── src
   │   ├── CreateItem
   │   │   ├── index.js
   │   │   └── package.json
   │   ├── DeleteItem
   │   │   ├── index.js
   │   │   └── package.json
   │   ├── GetItem
   │   │   ├── index.js
   │   │   └── package.json
   │   ├── ListItems
   │   │   ├── index.js
   │   │   └── package.json
   │   └── UpdateItem
   │       ├── index.js
   │       └── package.json
   └── template.yaml
   ```

1. これで、アプリケーションをデプロイする準備が整いました。を使用します**sam deploy --guided**。これにより、一連のプロンプトを通じてアプリケーションをデプロイする準備が整います。

   ```
   $ sam deploy --guided
   ...
   Configuring SAM deploy
   ======================
   
       Looking for config file [samconfig.toml] :  Found
       Reading default arguments  :  Success
   
       Setting default arguments for 'sam deploy'
       =========================================
       Stack Name [aws-app-composer-basic-api]: AWS Region [us-west-2]:
       #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
       Confirm changes before deploy [y/N]:
       #SAM needs permission to be able to create roles to connect to the resources in your template
       Allow SAM CLI IAM role creation [Y/n]:
       #Preserves the state of previously provisioned resources when an operation fails
       Disable rollback [y/N]:
       ListItems may not have authorization defined, Is this okay? [y/N]: y
       CreateItem may not have authorization defined, Is this okay? [y/N]: y
       GetItem may not have authorization defined, Is this okay? [y/N]: y
       UpdateItem may not have authorization defined, Is this okay? [y/N]: y
       DeleteItem may not have authorization defined, Is this okay? [y/N]: y
       Save arguments to configuration file [Y/n]:
       SAM configuration file [samconfig.toml]:
       SAM configuration environment [default]:
   ```

   には、デプロイされる内容の概要 AWS SAM CLIが表示されます。

   ```
   Deploying with following values
       ===============================
       Stack name                   : aws-app-composer-basic-api
       Region                       : us-west-2
       Confirm changeset            : False
       Disable rollback             : False
       Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-1b3x26zbcdkqr
       Capabilities                 : ["CAPABILITY_IAM"]
       Parameter overrides          : {}
       Signing Profiles             : {}
   ```

   は、まず CloudFormation 変更セットを作成してアプリケーションを AWS SAM CLIデプロイします。

   ```
   Initiating deployment
   =====================
   Uploading to aws-app-composer-basic-api/4181c909ee2440a728a7a129dafb83d4.template  7087 / 7087  (100.00%)
   
   Waiting for changeset to be created..
   CloudFormation stack changeset
   ---------------------------------------------------------------------------------------------------------------------------------------------
   Operation                           LogicalResourceId                   ResourceType                        Replacement
   ---------------------------------------------------------------------------------------------------------------------------------------------
   + Add                               ApiDeploymentcc153d135b             AWS::ApiGateway::Deployment         N/A
   + Add                               ApiProdStage                        AWS::ApiGateway::Stage              N/A
   + Add                               Api                                 AWS::ApiGateway::RestApi            N/A
   + Add                               CreateItemApiPOSTitemsPermissionP   AWS::Lambda::Permission             N/A
                                       rod
   + Add                               CreateItemRole                      AWS::IAM::Role                      N/A
   + Add                               CreateItem                          AWS::Lambda::Function               N/A
   + Add                               DeleteItemApiDELETEitemsidPermiss   AWS::Lambda::Permission             N/A
                                       ionProd
   + Add                               DeleteItemRole                      AWS::IAM::Role                      N/A
   + Add                               DeleteItem                          AWS::Lambda::Function               N/A
   + Add                               GetItemApiGETitemsidPermissionPro   AWS::Lambda::Permission             N/A
                                       d
   + Add                               GetItemRole                         AWS::IAM::Role                      N/A
   + Add                               GetItem                             AWS::Lambda::Function               N/A
   + Add                               Items                               AWS::DynamoDB::Table                N/A
   + Add                               ListItemsApiGETitemsPermissionPro   AWS::Lambda::Permission             N/A
                                       d
   + Add                               ListItemsRole                       AWS::IAM::Role                      N/A
   + Add                               ListItems                           AWS::Lambda::Function               N/A
   + Add                               UpdateItemApiPUTitemsidPermission   AWS::Lambda::Permission             N/A
                                       Prod
   + Add                               UpdateItemRole                      AWS::IAM::Role                      N/A
   + Add                               UpdateItem                          AWS::Lambda::Function               N/A
   ---------------------------------------------------------------------------------------------------------------------------------------------
   
   Changeset created successfully. arn:aws:cloudformation:us-west-2:513423067560:changeSet/samcli-deploy1677472539/967ab543-f916-4170-b97d-c11a6f9308ea
   ```

   次に、 AWS SAM CLI はアプリケーションをデプロイします。

   ```
   CloudFormation events from stack operations (refresh every 0.5 seconds)
   ---------------------------------------------------------------------------------------------------------------------------------------------
   ResourceStatus                      ResourceType                        LogicalResourceId                   ResourceStatusReason
   ---------------------------------------------------------------------------------------------------------------------------------------------
   CREATE_IN_PROGRESS                  AWS::DynamoDB::Table                Items                               -
   CREATE_IN_PROGRESS                  AWS::DynamoDB::Table                Items                               Resource creation Initiated
   CREATE_COMPLETE                     AWS::DynamoDB::Table                Items                               -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      DeleteItemRole                      -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      ListItemsRole                       -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      UpdateItemRole                      -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      GetItemRole                         -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      CreateItemRole                      -
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      DeleteItemRole                      Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      ListItemsRole                       Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      GetItemRole                         Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      UpdateItemRole                      Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::IAM::Role                      CreateItemRole                      Resource creation Initiated
   CREATE_COMPLETE                     AWS::IAM::Role                      DeleteItemRole                      -
   CREATE_COMPLETE                     AWS::IAM::Role                      ListItemsRole                       -
   CREATE_COMPLETE                     AWS::IAM::Role                      GetItemRole                         -
   CREATE_COMPLETE                     AWS::IAM::Role                      UpdateItemRole                      -
   CREATE_COMPLETE                     AWS::IAM::Role                      CreateItemRole                      -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               DeleteItem                          -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               CreateItem                          -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               ListItems                           -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               UpdateItem                          -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               DeleteItem                          Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               GetItem                             -
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               ListItems                           Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               CreateItem                          Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               UpdateItem                          Resource creation Initiated
   CREATE_IN_PROGRESS                  AWS::Lambda::Function               GetItem                             Resource creation Initiated
   CREATE_COMPLETE                     AWS::Lambda::Function               DeleteItem                          -
   CREATE_COMPLETE                     AWS::Lambda::Function               ListItems                           -
   CREATE_COMPLETE                     AWS::Lambda::Function               CreateItem                          -
   CREATE_COMPLETE                     AWS::Lambda::Function               UpdateItem                          -
   CREATE_COMPLETE                     AWS::Lambda::Function               GetItem                             -
   CREATE_IN_PROGRESS                  AWS::ApiGateway::RestApi            Api                                 -
   CREATE_IN_PROGRESS                  AWS::ApiGateway::RestApi            Api                                 Resource creation Initiated
   CREATE_COMPLETE                     AWS::ApiGateway::RestApi            Api                                 -
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             GetItemApiGETitemsidPermissionPro   -
                                                                           d
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             ListItemsApiGETitemsPermissionPro   -
                                                                           d
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             DeleteItemApiDELETEitemsidPermiss   -
                                                                           ionProd
   CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ApiDeploymentcc153d135b             -
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             UpdateItemApiPUTitemsidPermission   -
                                                                           Prod
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             CreateItemApiPOSTitemsPermissionP   -
                                                                           rod
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             GetItemApiGETitemsidPermissionPro   Resource creation Initiated
                                                                           d
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             UpdateItemApiPUTitemsidPermission   Resource creation Initiated
                                                                           Prod
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             CreateItemApiPOSTitemsPermissionP   Resource creation Initiated
                                                                           rod
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             ListItemsApiGETitemsPermissionPro   Resource creation Initiated
                                                                           d
   CREATE_IN_PROGRESS                  AWS::Lambda::Permission             DeleteItemApiDELETEitemsidPermiss   Resource creation Initiated
                                                                           ionProd
   CREATE_IN_PROGRESS                  AWS::ApiGateway::Deployment         ApiDeploymentcc153d135b             Resource creation Initiated
   CREATE_COMPLETE                     AWS::ApiGateway::Deployment         ApiDeploymentcc153d135b             -
   CREATE_IN_PROGRESS                  AWS::ApiGateway::Stage              ApiProdStage                        -
   CREATE_IN_PROGRESS                  AWS::ApiGateway::Stage              ApiProdStage                        Resource creation Initiated
   CREATE_COMPLETE                     AWS::ApiGateway::Stage              ApiProdStage                        -
   CREATE_COMPLETE                     AWS::Lambda::Permission             CreateItemApiPOSTitemsPermissionP   -
                                                                           rod
   CREATE_COMPLETE                     AWS::Lambda::Permission             UpdateItemApiPUTitemsidPermission   -
                                                                           Prod
   CREATE_COMPLETE                     AWS::Lambda::Permission             ListItemsApiGETitemsPermissionPro   -
                                                                           d
   CREATE_COMPLETE                     AWS::Lambda::Permission             DeleteItemApiDELETEitemsidPermiss   -
                                                                           ionProd
   CREATE_COMPLETE                     AWS::Lambda::Permission             GetItemApiGETitemsidPermissionPro   -
                                                                           d
   CREATE_COMPLETE                     AWS::CloudFormation::Stack          aws-app-composer-basic-api          -
   ---------------------------------------------------------------------------------------------------------------------------------------------
   ```

   最後に、デプロイが成功したことを示すメッセージが表示されます。

   ```
   Successfully created/updated stack - aws-app-composer-basic-api in us-west-2
   ```

# で Infrastructure Composer AWS SAM を使用してスタックを削除する
<a name="other-services-cfn-sam-examples-example2"></a>

この例では、 **sam delete** コマンドを使用して CloudFormation スタックを削除する方法を示します。

**sam delete** で AWS SAM CLI コマンドを入力し、スタックとテンプレートを削除するかどうかを確認します。

```
$ sam delete
	Are you sure you want to delete the stack aws-app-composer-basic-api in the region us-west-2 ? [y/N]: y
	Do you want to delete the template file 30439348c0be6e1b85043b7a935b34ab.template in S3? [y/N]: y
	- Deleting S3 object with key eb226ca86d1bc4e9914ad85eb485fed8
	- Deleting S3 object with key 875e4bcf4b10a6a1144ad83158d84b6d
	- Deleting S3 object with key 20b869d98d61746dedd9aa33aa08a6fb
	- Deleting S3 object with key c513cedc4db6bc184ce30e94602741d6
	- Deleting S3 object with key c7a15d7d8d1c24b77a1eddf8caebc665
	- Deleting S3 object with key e8b8984f881c3732bfb34257cdd58f1e
	- Deleting S3 object with key 3185c59b550594ee7fca7f8c36686119.template
	- Deleting S3 object with key 30439348c0be6e1b85043b7a935b34ab.template
	- Deleting Cloudformation stack aws-app-composer-basic-api

Deleted successfully
```