

# 과 함께 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)을 사용하여 배포할 수 있는 코드형 인프라(IaC) 템플릿을 생성합니다.

## Infrastructure Composer로 Lambda 함수 내보내기
<a name="services-appcomposer-export"></a>

Lambda 콘솔을 사용하여 기존 Lambda 함수의 구성을 기반으로 새 프로젝트를 생성하여 Infrastructure Composer 사용을 시작할 수 있습니다. 함수의 구성 및 코드를 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)의 지침을 따릅니다. 기본 버킷 이름은 10자리 영숫자 문자열인 접두사 `lambdasam`을 사용하며, 함수를 생성한 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>

Infrastructure Composer 기능을 포함하는 Lambda 통합을 사용하려면 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>

Infrastructure Composer에서 기존 Lambda 함수를 기반으로 서버리스 애플리케이션을 설계하는 방법에 대한 자세한 자습서는 [코드형 인프라(IaC)와 함께 Lambda 사용](foundation-iac.md)를 참조하세요.

Infrastructure Composer 및 AWS SAM을 사용하여 Lambda를 사용하는 완전한 서버리스 애플리케이션을 설계 및 배포하려면 [AWS Infrastructure Composer 자습서](https://catalog.workshops.aws/serverless-patterns/en-US/dive-deeper/module1a)를 [AWS 서버리스 패턴 워크숍](https://catalog.workshops.aws/serverless-patterns/en-US)에서 찾아 따라할 수도 있습니다.