AWS SAM에서 중첩 애플리케이션을 사용하여 코드 및 리소스 재사용
서버리스 애플리케이션에는 하나 혹은 다수의 중첩 애플리케이션이 포함될 수 있습니다. 중첩 애플리케이션은 더 큰 애플리케이션의 일부이며 독립형 아티팩트 또는 더 큰 애플리케이션의 구성 요소로 패키징하고 배포할 수 있습니다. 중첩 애플리케이션을 사용하면 자주 사용되는 코드를 고유한 애플리케이션으로 전환할 수 있으며, 이 애플리케이션을 더 큰 서버리스 애플리케이션이나 여러 서버리스 애플리케이션에서 재사용할 수 있습니다.
서버리스 아키텍처가 성장함에 따라 일반적으로 여러 애플리케이션 템플릿에 동일한 구성 요소가 정의되는 공통 패턴이 나타납니다. 중첩 애플리케이션을 사용하면 별도의 AWS SAM 템플릿에서 공통 코드, 기능, 리소스 및 구성을 재사용할 수 있으므로 단일 소스의 코드만 유지 관리하면 됩니다. 이를 통해 중복 코드와 구성을 줄일 수 있습니다. 또한 이 모듈식 접근 방식을 사용하면 개발을 간소화하고, 코드 구성을 개선하며, 서버리스 애플리케이션 간에서 원활하게 일관성을 유지할 수 있습니다. 중첩된 애플리케이션을 사용하면 애플리케이션 고유의 비즈니스 로직에 더 집중할 수 있습니다.
서버리스 애플리케이션에서 중첩된 애플리케이션을 정의하려면 AWS::Serverless::Application 리소스 유형을 사용하십시오.
다음 두 소스에서 중첩 애플리케이션을 정의할 수 있습니다.
-
AWS Serverless Application Repository애플리케이션 - AWS Serverless Application Repository 내의 사용자 계정에서 사용할 수 있는 애플리케이션을 사용하여 중첩 애플리케이션을 정의할 수 있습니다. 이러한 애플리케이션은 계정의 비공개 애플리케이션, 귀하의 계정과 비공개로 공유되는 애플리케이션 또는 공개적으로 공유되는 AWS Serverless Application Repository 내의 애플리케이션일 수 있습니다. 다양한 배포 권한 수준에 대한 자세한 내용은 개발자 가이드의 애플리케이션 배포 권한 및 AWS Serverless Application Repository애플리케이션 공개를 참조하세요.
-
로컬 애플리케이션 - 로컬 파일 시스템에 저장된 애플리케이션을 사용하여 중첩된 애플리케이션을 정의할 수 있습니다.
서버리스 애플리케이션에서 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 내에서 호스팅되는 애플리케이션을 정의하려면 모든 애플리케이션의 세부 정보 페이지에서 SAM 리소스로 AWS Serverless Application Repository복사 버튼을 사용하십시오. 이렇게 하려면 다음 단계를 따릅니다.
-
AWS Management 콘솔에 로그인되어 있는지 확인합니다.
-
AWS Serverless Application Repository개발자 가이드의 애플리케이션 탐색, 검색 및 배포 섹션에 있는 단계를 사용하여 AWS Serverless Application Repository 내에서 중첩하려는 애플리케이션을 찾으십시오.
-
SAM 리소스로 복사 버튼을 선택합니다. 현재 보고 있는 애플리케이션의 SAM 템플릿 섹션이 이제 클립보드에 있습니다.
-
이 애플리케이션에 중첩하려는 애플리케이션의 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-nameSemanticVersion: 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 providedParameterName2: YOUR_VALUE
필요한 인자 설정이 없는 경우 템플릿의 Parameters: 섹션을 생략할 수 있습니다.
중요
AWS Serverless Application Repository 내에서 호스팅된 중첩 애플리케이션이 포함된 애플리케이션은 중첩 애플리케이션의 공유 제한을 승계합니다.
예를 들어, 어떤 애플리케이션이 공개적으로 공유되지만 특허 애플리케이션을 생성한 AWS 계정과 비공개로만 공유되는 중첩 애플리케이션을 포함하고 있는 경우를 가정해 봅니다. 이 경우, 귀하의 AWS 계정에 중첩 애플리케이션을 배포할 권한이 없으면 귀하는 상위 애플리케이션을 배포할 수 없습니다. 애플리케이션 배포 권한에 대한 자세한 내용은 개발자 가이드의 애플리케이션 배포 권한 및 AWS Serverless Application Repository애플리케이션 공개를 참조하세요.
로컬 파일 시스템에서 중첩된 애플리케이션 정의
로컬 파일 시스템에 저장된 애플리케이션으로 중첩된 애플리케이션을 정의할 수 있습니다. 로컬 파일 시스템에 저장되어 있는 AWS SAM 템플릿 파일의 경로를 지정하면 됩니다.
다음은 중첩된 로컬 애플리케이션을 위한 예제 SAM 템플릿 섹션입니다.
Transform: AWS::Serverless-2016-10-31 Resources:applicationaliasname: Type: AWS::Serverless::Application Properties: Location:../my-other-app/template.yamlParameters: # Optional parameter that can have default value overridden# ParameterName1: 15 # Uncomment to override default value# Required parameter that needs value to be providedParameterName2: YOUR_VALUE
인자 설정이 없는 경우 템플릿의 Parameters: 섹션을 생략할 수 있습니다.
중첩 애플리케이션 배포
AWS SAM CLI 명령 sam
deploy을 사용하여 중첩 애플리케이션을 배포할 수 있습니다. 자세한 내용은 AWS SAM을 사용하여 애플리케이션 및 리소스 배포을 확인하십시오.
참고
중첩 애플리케이션이 포함된 애플리케이션을 배포하는 경우 애플리케이션에 중첩 애플리케이션이 포함되어 있음을 알려야 합니다. CAPABILITY_AUTO_EXPAND를 CreateCloudFormationChangeSet API에 전달하거나 aws serverlessrepo
create-cloud-formation-change-set AWS CLI 명령을 사용하여 이 작업을 수행할 수 있습니다.
중첩된 애플리케이션을 승인하는 방법에 대한 자세한 내용은 개발자 가이드의 애플리케이션 배포 시 AWS Serverless Application Repository IAM 역할, 리소스 정책 및 중첩된 애플리케이션 승인을 참조하세요.