를 사용하여 애플리케이션 게시 AWS SAMCLI - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

를 사용하여 애플리케이션 게시 AWS SAMCLI

다른 사용자가 AWS SAM 응용 프로그램을 찾고 배포할 수 있도록 하려면 를 사용하여 응용 프로그램을 AWS SAMCLI 에 게시할 수 AWS Serverless Application Repository있습니다. 를 사용하여 응용 프로그램을 게시하려면 AWS SAM 템플릿을 사용하여 응용 프로그램을 정의해야 합니다. AWS SAMCLI 또한 로컬 또는 AWS 클라우드에서 테스트해야 합니다.

이 주제의 지침에 따라 새 애플리케이션을 만들거나, 기존 애플리케이션의 새로운 버전을 만들거나, 기존 애플리케이션의 메타데이터를 업데이트합니다. (수행할 작업은 응용 프로그램이 에 이미 존재하는지 여부와 응용 프로그램 메타데이터가 변경되고 있는지 여부에 따라 달라집니다.) AWS Serverless Application Repository메타데이터에 대한 자세한 정보는 AWS SAM 템플릿 메타데이터 섹션 속성 섹션을 참조하세요.

사전 조건 

를 AWS Serverless Application Repository 사용하여 응용 프로그램을 게시하려면 먼저 다음 사항을 갖추어야 합니다. AWS SAMCLI

  • AWS SAM CLI이 설치됨 자세한 정보는 AWS SAM CLI 설치을 참조하세요. AWS SAM CLI 설치 여부를 알아보려면 다음 명령을 실행합니다.

    sam --version
  • 유효한 AWS SAM 템플릿입니다.

  • AWS SAM 템플릿이 참조하는 애플리케이션 코드 및 종속성

  • 애플리케이션을 공개적으로 공유하는 데에만 필요한 시맨틱 버전입니다. 이 값은 1.0만큼 간단할 수 있습니다.

  • 애플리케이션의 소스 코드를 가리키는 URL.

  • README.md 파일. 이 파일은 고객이 어떻게 애플리케이션을 사용할 수 있는지와 AWS 계정에 배포하기 전에 구성하는 방법을 설명할 것입니다.

  • 애플리케이션을 공개적으로 공유하는 데에만 필요한 LICENSE.txt 파일입니다.

  • 애플리케이션에 중첩된 애플리케이션이 포함되어 있는 경우 AWS Serverless Application Repository에 이미 게시한 상태여야 합니다.

  • 애플리케이션을 패키징할 때 Amazon S3에 업로드된 아티팩트에 대한 서비스 읽기 권한을 부여하는 유효한 Amazon Simple Storage Service(S3) 버킷 정책. 이 정책에는 다음 설정이 포함되어 있습니다.

    1. https://console.aws.amazon.com/s3/에서 S3 콘솔을 엽니다.

    2. 애플리케이션을 패키징하는 데 사용한 Amazon S3 버킷을 선택합니다.

    3. 권한을 선택합니다.

    4. 권한(Permissions) 탭의 버킷 정책(Bucket policy)에서 편집(Edit)을 선택합니다.

    5. 버킷 정책 편집기 페이지에서 다음 정책 문을 정책 편집기에 붙여 넣습니다. 정책 설명에서 Resource 요소에는 버킷 이름을, Condition 요소에는 AWS 계정 ID를 사용해야 합니다. Condition요소의 표현식을 사용하면 지정된 AWS 계정의 애플리케이션에만 액세스할 수 있는 AWS Serverless Application Repository 권한이 부여됩니다. 요소에 대한 자세한 내용은 IAM 사용 설명서IAM JSON 정책 요소 참조를 참조하세요.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "serverlessrepo.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::<your-bucket-name>/*", "Condition" : { "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
    6. 변경 사항 저장을 선택합니다.

애플리케이션 게시()

1단계: AWS SAM 템플릿에 Metadata 섹션 추가

먼저 AWS SAM 템플릿에 Metadata 섹션을 추가합니다. AWS Serverless Application Repository에 게시할 애플리케이션 정보를 제공합니다.

다음은 Metadata 섹션의 예입니다.

Metadata: AWS::ServerlessRepo::Application: Name: my-app Description: hello world Author: user1 SpdxLicenseId: Apache-2.0 LicenseUrl: LICENSE.txt ReadmeUrl: README.md Labels: ['tests'] HomePageUrl: https://github.com/user1/my-app-project SemanticVersion: 0.0.1 SourceCodeUrl: https://github.com/user1/my-app-project Resources: HelloWorldFunction: Type: AWS::Lambda::Function Properties: ... CodeUri: source-code1 ...

AWS SAM 템플릿 Metadata 섹션에 대한 자세한 내용은 을 참조하십시오AWS SAM 템플릿 메타데이터 섹션 속성.

2단계: 애플리케이션 패키징

다음 AWS SAMCLI 명령을 실행합니다. 그러면 애플리케이션의 아티팩트를 Amazon S3에 업로드하고 packaged.yaml라는 새 템플릿 파일이 출력됩니다.

sam package --output-template-file packaged.yaml --s3-bucket <your-bucket-name>

다음 단계에서 packaged.yaml 템플릿 파일을 사용하여 애플리케이션을 AWS Serverless Application Repository에 게시합니다. 이 파일은 원본 템플릿 파일(template.yaml)과 비슷하지만, 중요한 차이점이 있습니다. CodeUri, LicenseUrlReadmeUrl 속성인 Amazon S3 버킷과 해당 아티팩트가 포함된 객체를 가리킵니다.

예제 packaged.yaml 템플릿 파일의 다음 코드 조각은 CodeUri 속성을 보여 줍니다.

MySampleFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

3단계: 애플리케이션 게시

AWS SAM 애플리케이션의 비공개 버전을 에 AWS Serverless Application Repository게시하려면 다음 AWS SAMCLI 명령을 실행합니다.

sam publish --template packaged.yaml --region us-east-1

sam publish 명령 출력에는 AWS Serverless Application Repository에 있는 애플리케이션으로 연결되는 링크가 포함됩니다. 또는 AWS Serverless Application Repository 시작 페이지로 이동하여 애플리케이션을 검색할 수도 있습니다.

4단계: 애플리케이션 공유(선택 사항)

기본적으로 애플리케이션은 비공개로 설정되어 있으므로 다른 AWS 계정에서는 볼 수 없습니다. 애플리케이션을 다른 사람과 공유하려면 애플리케이션을 공개하거나 특정 AWS 계정 목록에 권한을 부여해야 합니다.

를 사용하여 애플리케이션을 공유하는 방법에 대한 자세한 내용은 AWS Serverless Application Repository 개발자AWS Serverless Application Repository 안내서의 리소스 기반 정책 예제를 참조하십시오. AWS CLI AWS Management Console을 사용하여 애플리케이션을 공유하는 방법에 대한 자세한 내용은 AWS Serverless Application Repository 개발자 안내서애플리케이션 공유를 참조하세요.

기존 애플리케이션의 새 버전 게시

에 애플리케이션을 게시한 후에는 새 버전을 게시해야 할 수도 있습니다. AWS Serverless Application Repository예를 들어, Lambda 함수 코드를 변경하거나 애플리케이션 아키텍처에 새 구성 요소를 추가했을 수 있습니다.

이전에 게시한 애플리케이션을 업데이트하려면 앞서 설명한 것과 동일한 프로세스를 사용하여 애플리케이션을 다시 게시합니다. AWS SAM 템플릿 파일의 Metadata 섹션에 원래 게시할 때 사용한 것과 동일한 애플리케이션 이름을 제공하되 새 SemanticVersion 값을 포함합니다.

예를 들어, 이름 SampleApp1.0.0SemanticVersion을 사용하여 게시된 애플리케이션을 생각해 보겠습니다. 해당 애플리케이션을 업데이트하려면 AWS SAM 템플릿에 애플리케이션 이름 SampleApp1.0.1SemanticVersion(또는 1.0.0이외의 다른 것)가 있어야 합니다.

추가 주제