

# での AWS Lambda の使用AWS Infrastructure Composer
<a name="services-appcomposer"></a>

AWS Infrastructure Composer は、AWS で最新のアプリケーションを設計するためのビジュアルビルダーです。ビジュアルキャンバスで AWS のサービスをドラッグ、グループ化、接続して、アプリケーションアーキテクチャを設計します。Infrastructure Composer は、[AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) または [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) を使用してデプロイできる設計から Infrastructure as Code (IaC) テンプレートを作成します。

## Infrastructure Composer への Lambda 関数のエクスポート
<a name="services-appcomposer-export"></a>

Infrastructure Composer の使用を開始するには、Lambda コンソールを使用して既存の Lambda 関数の設定に基づいて新しいプロジェクトを作成します。関数の設定とコードを Infrastructure Composer にエクスポートして新しいプロジェクトを作成するには、以下の操作を行います。

1. Lambda コンソールの「[関数](https://console.aws.amazon.com/lambda/home#/functions)」ページを開きます。

1. Infrastructure Composer プロジェクトの基礎として使用する関数を選択します。

1. **[関数の概要]** ペインで、**[Infrastructure Composer にエクスポート]** を選択します。

   関数の設定とコードを Infrastructure Composer にエクスポートするには、Lambda でアカウントに Amazon S3 バケットを作成し、このデータを一時的に保存します。

1. ダイアログボックスで **[プロジェクトの確認と作成]** を選択し、このバケットのデフォルト名をそのまま使用して、関数の設定とコードを Infrastructure Composer にエクスポートします。

1. (オプション) Lambda で作成する Amazon S3 バケットに別の名前を選択する場合は、新しい名前を入力して **[プロジェクトの確認と作成]** を選択します。Amazon S3 バケットの名前は、グローバルに一意で、[バケットの命名規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)に従ったものである必要があります。

1. プロジェクトファイルと関数ファイルを Infrastructure Composer に保存するには、[ローカル同期モード](https://docs.aws.amazon.com/application-composer/latest/dg/reference-features-local-sync.html)をアクティブ化します。

**注記**  
以前に **[Application Composer にエクスポート]** 機能を使用し、デフォルト名を使用して Amazon S3 バケットを作成したことがある場合、Lambda はこのバケットがまだ存在していれば再利用できます。既存のバケットを再利用するには、ダイアログボックスのデフォルトのバケット名をそのまま使用してください。

### Amazon S3 転送バケット設定
<a name="services-appcomposer-bucket-info"></a>

Lambda が関数の設定を転送するために作成する Amazon S3 バケットは、AES 256 暗号化標準を使用してオブジェクトを自動的に暗号化します。また、Lambda は[バケット所有者条件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-owner-condition.html)を使用するようにバケットを設定して、ユーザーの AWS アカウントだけがバケットにオブジェクトを追加できるようにします。

Lambda は、アップロードされてから 10 日後にオブジェクトを自動的に削除するようにバケットを設定します。ただし、Lambda はバケット自体を自動的に削除しません。AWS アカウントからバケットを削除するには、「[バケットの削除](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)」の手順に従います。デフォルトのバケット名には、プレフィックス `lambdasam`、10 桁の英数字の文字列、および関数を作成した AWS リージョンが使用されます。

```
lambdasam-06f22da95b-us-east-1
```

AWS アカウントに追加料金が発生しないように、関数を Infrastructure Composer にエクスポートし終えたらすぐに Amazon S3 バケットを削除することをお勧めします。

標準の [Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)が適用されます。

### 必要なアクセス許可
<a name="services-appcomposer-permissions"></a>

Lambda と Infrastructure Composer の統合機能を使用するには、AWS SAM テンプレートをダウンロードし、関数の設定を Amazon S3 に書き込むための特定の権限が必要です。

AWS SAM テンプレートをダウンロードするには、次の API アクションに対するアクセス権限が必要です。
+ [GetPolicy](https://docs.aws.amazon.com/lambda/latest/api/API_GetPolicy.html)
+ [iam:GetPolicyVersion](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetPolicyVersion.html)
+ [iam:GetRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRole.html)
+ [iam:GetRolePolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetRolePolicy.html)
+ [iam:ListAttachedRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedRolePolicies.html)
+ [iam:ListRolePolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRolePolicies.html)
+ [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)

IAM ユーザーロールに [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSLambda_ReadOnlyAccess.html) AWS マネージドポリシーを追加することで、これらすべてのアクションを使用する権限を付与できます。

Lambda が関数の設定を Amazon S3 に書き込むには、以下の API アクションを使用するアクセス許可が必要です。
+ [S3:PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
+ [S3:CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
+ [S3:PutBucketEncryption](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
+ [S3:PutBucketLifecycleConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)

関数の設定を Infrastructure Composer にエクスポートできない場合は、アカウントにこれらのオペレーションに必要なアクセス許可があることを確認してください。必要なアクセス許可を持っていても、関数の設定をエクスポートできない場合は、Amazon S3 へのアクセスを制限している可能性がある[リソースベースのポリシー](access-control-resource-based.md)がないか確認します。

## その他のリソース
<a name="w2aad101c33b7"></a>

既存の Lambda 関数に基づいて Infrastructure Composer でサーバーレスアプリケーションを設計する方法のより詳細なチュートリアルについては、「[Lambda と Infrastructure as code (IaC) の使用](foundation-iac.md)」を参照してください。

Infrastructure Composer および AWS SAM を使用し、Lambda を使用して完全なサーバーレスアプリケーションを設計およびデプロイするには、「[AWS Serverless Patterns Workshop](https://catalog.workshops.aws/serverless-patterns/en-US)」の「[AWS Infrastructure Composer tutorial](https://catalog.workshops.aws/serverless-patterns/en-US/dive-deeper/module1a)」に従うこともできます。