

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

# 애플리케이션을 게시하는 방법
<a name="serverlessrepo-how-to-publish"></a>

이 섹션에서는 AWS SAM CLI 또는를 사용하여 서버리스 애플리케이션을 AWS Serverless Application Repository 에 게시하는 절차를 제공합니다 AWS Management Console. 또한 다른 사용자가 배포할 수 있도록 응용 프로그램을 공유하고 AWS Serverless Application Repository에서 애플리케이션을 삭제하는 방법을 보여 줍니다.

**중요**  
애플리케이션을 게시할 때 입력하는 정보는 암호화되지 않습니다. 이 정보에는 작성자 이름과 같은 데이터가 포함됩니다. 저장 또는 공개를 원치 않는 개인 식별 정보가 있는 경우 애플리케이션을 게시할 때 이 정보를 입력하지 않는 것이 좋습니다.

## 애플리케이션 게시(AWS CLI)
<a name="publishing-application-through-cli"></a>

에 애플리케이션을 게시하는 가장 쉬운 방법은 AWS SAM CLI 명령 세트를 사용하는 AWS Serverless Application Repository 것입니다. 자세한 내용은 *AWS Serverless Application Model (AWS SAM) 개발자 안내서*[의 AWS SAM CLI를 사용하여 애플리케이션 게시](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html)를 참조하세요.

## 새 애플리케이션 게시(콘솔)
<a name="publishing-application-through-aws-console"></a>

이 섹션에서는를 사용하여 AWS Management Console 에 새 애플리케이션을 게시하는 방법을 보여줍니다 AWS Serverless Application Repository. 기존 애플리케이션의 새 버전을 게시하는 지침은 [기존 애플리케이션의 새 버전 게시](serverlessrepo-how-to-publish-new-version.md) 단원을 참조하십시오.

### 사전 조건
<a name="publishing-application-prerequisites"></a>

에 애플리케이션을 게시하기 전에 다음이 AWS Serverless Application Repository필요합니다.
+ 유효한 AWS 계정입니다.
+ 사용되는 AWS 리소스를 정의하는 valid AWS Serverless Application Model (AWS SAM) 템플릿입니다. AWS SAM 템플릿에 대한 자세한 내용은 [AWS SAM 템플릿 기본 사항을 참조하세요](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html).
+ 에 대한 `package` 명령을 사용하여 AWS CloudFormation 생성한 애플리케이션의 패키지입니다 AWS CLI. 이 명령은 AWS SAM 템플릿이 참조하는 로컬 아티팩트(로컬 경로)를 패키징합니다. 자세한 내용은 CloudFormation 설명서의 [패키지를](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/package.html) 참조하세요.
+ 애플리케이션을 공개적으로 게시하고자 하는 경우 애플리케이션의 소스 코드를 가리키는 URL.
+ readme.txt 파일. 이 파일은 고객이 애플리케이션을 사용하는 방법과 자신의 AWS 계정에 배포하기 전에 구성하는 방법을 설명해야 합니다.
+ [SPDX 웹 사이트](https://spdx.org/licenses/)에 있는 license.txt 파일 또는 유효한 라이선스 식별자. 애플리케이션을 공개적으로 공유하려는 경우에만 라이선스가 필요합니다. 애플리케이션을 비공개로 유지하거나 비공개로만 공유하려는 경우, 라이선스를 지정할 필요가 없습니다.
+ 애플리케이션을 패키징할 때 Amazon S3에 업로드된 아티팩트에 대한 읽기 권한을 서비스에 부여하는 유효한 Amazon S3 버킷 정책입니다. 이 정책을 설정하려면 다음 단계를 수행합니다.

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

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

  1. **권한** 탭을 선택합니다.

  1. **버킷 정책** 버튼을 선택합니다.

  1. 다음 정책 문을 **버킷 정책 편집기**에 붙여 넣습니다. 요소의 버킷 이름과 `Resource` 요소의 AWS 계정 ID를 대체해야 합니다`Condition`. `Condition` 요소의 표현식은가 지정된 AWS 계정의 애플리케이션에 액세스할 수 있는 권한 AWS Serverless Application Repository 만 갖도록 합니다. 요소에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM JSON 정책 요소 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)를 참조하세요.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Principal": {
                     "Service":  "serverlessrepo.amazonaws.com"
                 },
                 "Action": "s3:GetObject",
                 "Resource": "arn:aws:s3:::{{bucketname}}/*",
                 "Condition" : {
                     "StringEquals": {
                         "aws:SourceAccount": "{{123456789012}}"
                     }
                 }
             }
         ]
     }
     ```

------

  1. **저장** 버튼을 선택합니다.

### 절차
<a name="create-new-application"></a>

다음 절차에 AWS Serverless Application Repository 따라에서 새 애플리케이션을 생성합니다.

**에서 새 애플리케이션을 생성하려면 AWS Serverless Application Repository**

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 열고 **Publish applications(애플리케이션 게시)**를 선택합니다.

1. **Publish an application(애플리케이션 게시)** 페이지에서 다음 애플리케이션 정보를 입력하고 **Publish application(애플리케이션 게시)**를 선택합니다.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html)

## 애플리케이션 공유
<a name="share-application"></a>

게시된 애플리케이션에 다음 세 범주 중 하나의 사용 권한을 설정할 수 있습니다.
+ **프라이빗(기본값)** - 동일한 계정으로 생성되었으며 다른 AWS 계정과 공유되지 않은 애플리케이션입니다. AWS 계정을 공유하는 소비자만 프라이빗 애플리케이션을 배포할 수 있는 권한이 있습니다.
+ **비공개 공유** - 게시자가 특정 AWS 계정 집합 또는 AWS 조직의 AWS 계정과 명시적으로 공유한 애플리케이션입니다. 소비자는 AWS 계정 또는 AWS 조직과 공유된 애플리케이션을 배포할 수 있는 권한이 있습니다. 에 대한 자세한 내용은 *[AWS Organizations 사용 설명서를](https://docs.aws.amazon.com/organizations/latest/userguide/)* AWS Organizations참조하세요.
+ **공개 공유** - 게시자가 모든 사람과 공유한 애플리케이션입니다. 모든 소비자는 공개적 공유 애플리케이션을 배포할 수 있는 권한이 있습니다.

애플리케이션을에 게시한 후 AWS Serverless Application Repository기본적으로 **프라이빗**으로 설정됩니다. 이 섹션에서는 애플리케이션을 특정 AWS 계정 또는 AWS 조직과 비공개로 공유하거나 모든 사람과 공개적으로 공유하는 방법을 보여줍니다.

### 콘솔을 통해 애플리케이션 공유
<a name="share-application-console"></a>

애플리케이션을 다른 사용자와 공유할 수 있는 두 가지 옵션이 있습니다. 1) 특정 AWS 계정 또는 AWS 조직 내 AWS 계정과 공유하거나 2) 모든 사용자와 공개적으로 공유합니다. 에 대한 자세한 내용은 *[AWS Organizations 사용 설명서를](https://docs.aws.amazon.com/organizations/latest/userguide/)* AWS Organizations참조하세요.

**옵션 1: 특정 AWS 계정(들) 또는 AWS 조직 내 계정과 애플리케이션을 공유하는 방법**

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 엽니다.

1. 탐색 창에서 **Published Applications(게시된 애플리케이션)**를 선택하면 생성한 애플리케이션 목록이 표시됩니다.

1. 공유하고자 하는 애플리케이션을 선택합니다.

1. **공유** 탭을 선택합니다.

1. **Application policy statements(애플리케이션 정책 문)** 섹션에서 **Create Statement(문 생성)** 버튼을 선택합니다.

1. **Statement Configuration(문 구성)** 창에서 원하는 애플리케이션 공유 방법에 따라 필드에 값을 입력합니다.
**참고**  
조직과 공유하는 경우 AWS 계정이 속한 조직만 지정할 수 있습니다. 멤버가 아닌 AWS 조직을 지정하려고 하면 오류가 발생합니다.  
애플리케이션을 AWS 조직과 공유하려면 나중에 공유를 취소해야 하는 경우를 대비하여 `UnshareApplication` 작업이 정책 설명에 추가될 것임을 확인해야 합니다.

1. **저장** 버튼을 선택합니다.

**옵션 2: 애플리케이션을 모든 사람과 공개적으로 공유하려면**

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 엽니다.

1. 탐색 창에서 **Published Applications(게시된 애플리케이션)**를 선택하면 생성한 애플리케이션 목록이 표시됩니다.

1. 공유하고자 하는 애플리케이션을 선택합니다.

1. **공유** 탭을 선택합니다.

1. **Public Sharing(공개 공유)** 섹션에서 **편집** 버튼을 선택합니다.

1. **Public Sharing(공개 공유)** 에서 **사용** 라디오 버튼을 선택합니다.

1. 텍스트 상자에 애플리케이션의 이름을 입력한 다음 **저장** 버튼을 선택합니다.

**참고**  
애플리케이션을 공개적으로 공유하려면 `SemanticVersion` 및 `LicenseUrl` 속성이 둘 다 설정되어 있어야 합니다.

### 를 통해 애플리케이션 공유 AWS CLI
<a name="share-application-cli"></a>

를 사용하여 애플리케이션을 공유하려면 `[put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)` 명령을 사용하여 공유하려는 AWS 계정(들)을 보안 주체로 지정하는 권한을 AWS CLI 부여합니다.

 AWS CLI를 사용하여 애플리케이션을 공유하는 방법에 대한 자세한 내용은 섹션을 참조하세요[AWS Serverless Application Repository 애플리케이션 정책 예제](security_iam_resource-based-policy-examples.md).

## 애플리케이션 공유 해제
<a name="unshare-applications"></a>

 AWS 조직에서 애플리케이션을 공유 해제하는 두 가지 옵션이 있습니다.

1. 애플리케이션 게시자는 `[put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)` 명령을 사용하여 권한을 제거할 수 있습니다.

1.  AWS 조직 *관리 계정*의 사용자는 다른 계정의 사용자가 애플리케이션을 게시한 경우에도 조직과 공유된 모든 애플리케이션에서 [공유 해제](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/applications-applicationid-unshare.html) 애플리케이션 작업을 수행할 수 있습니다.
**참고**  
"애플리케이션 공유 해제" 작업을 사용하여 AWS 조직에서 애플리케이션을 공유 해제하면 AWS Organization과 다시 공유할 수 없습니다.

   에 대한 자세한 내용은 *[AWS Organizations 사용 설명서를](https://docs.aws.amazon.com/organizations/latest/userguide/)* AWS Organizations참조하세요.

### 게시자가 권한 제거
<a name="unshare-applications-publisher"></a>

#### 콘솔을 통해 게시자가 권한 제거
<a name="unshare-application-publisher-console"></a>

를 통해 애플리케이션을 공유 해제하려면 다른 AWS 계정과 공유하는 정책 설명을 AWS Management Console제거합니다. 이렇게 하려면 다음 단계를 따릅니다.

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 엽니다.

1. 왼쪽 탐색 창에서 **Available Applications(사용 가능한 애플리케이션)**를 선택합니다.

1. 공유 해제할 애플리케이션을 선택합니다.

1. **공유** 탭을 선택합니다.

1. **Application policy statements(애플리케이션 정책 문)** 섹션에서 공유를 해제하려는 계정과 그 애플리케이션을 공유하는 정책 문을 선택합니다.

1. **삭제**를 선택합니다.

1. 확인 메시지가 나타납니다. 다시 **삭제**를 선택합니다.

#### 를 통해 권한 제거 게시자 AWS CLI
<a name="unshare-application-publisher-cli"></a>

를 통해 애플리케이션을 공유 해제하려면 AWS CLI게시자는 `[put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)` 명령을 사용하여 애플리케이션을 비공개로 설정하거나 다른 AWS 계정 집합과 공유할 수 있는 권한을 제거하거나 변경할 수 있습니다.

 AWS CLI를 사용하여 권한을 변경하는 방법에 대한 자세한 내용은 섹션을 참조하세요[AWS Serverless Application Repository 애플리케이션 정책 예제](security_iam_resource-based-policy-examples.md).

### 애플리케이션 공유 해제 관리 계정
<a name="unshare-applications-management"></a>

#### 콘솔을 통해 AWS 조직에서 애플리케이션 공유 해제 관리 계정
<a name="unshare-application-management-console"></a>

를 통해 AWS 조직에서 애플리케이션을 공유 해제하려면 *관리 계정*의 AWS Management Console사용자가 다음을 수행할 수 있습니다.

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 엽니다.

1. 왼쪽 탐색 창에서 **Available Applications(사용 가능한 애플리케이션)**를 선택합니다.

1. 애플리케이션 타일에서 **Unshare(공유 해제)**를 선택합니다.

1. 공유 해제 메시지 상자에서 조직 ID와 애플리케이션 이름을 입력한 다음 **저장**을 선택하여 애플리케이션의 공유 해제를 확인합니다.

#### 를 통해 AWS 조직에서 애플리케이션 공유 해제 관리 계정 AWS CLI
<a name="unshare-application-management-cli"></a>

 AWS 조직에서 애플리케이션을 공유 해제하려면 *관리 계정*의 사용자가 `aws serverlessrepo unshare-application` 명령을 실행할 수 있습니다.

다음 명령은 AWS Organization에서 애플리케이션을 공유 해제합니다. 여기서 {{application-id}}는 애플리케이션의 Amazon 리소스 이름(ARN)이고 {{organization-id}}는 AWS Organization ID입니다.

```
1. aws serverlessrepo unshare-application --application-id {{application-id}} --organization-id {{organization-id}}
```

## 애플리케이션 삭제
<a name="deleting-applications"></a>

 AWS Management Console 또는 CLI를 AWS Serverless Application Repository 사용하여에서 애플리케이션을 삭제할 수 있습니다 AWS SAM .

### 애플리케이션 삭제(콘솔)
<a name="deleting-application-through-aws-console"></a>

를 통해 게시된 애플리케이션을 삭제하려면 다음을 AWS Management Console수행합니다.

1. [AWS Serverless Application Repository 콘솔](https://console.aws.amazon.com/serverlessrepo/home)을 엽니다.

1. **내 애플리케이션**에서 삭제하고자 하는 애플리케이션을 선택합니다.

1. 애플리케이션의 세부 정보 페이지에서 **애플리케이션 삭제**를 선택합니다.

1. **애플리케이션 삭제**를 선택하여 삭제를 완료합니다.

### 애플리케이션 삭제(AWS CLI)
<a name="deleting-application-through-cli"></a>

를 사용하여 게시된 애플리케이션을 삭제하려면 `[aws serverlessrepo delete-application](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/delete-application.html)` 명령을 AWS CLI실행합니다.

다음 명령은 애플리케이션을 삭제합니다. 여기서 `{{application-id}}`는 애플리케이션의 ARN(Amazon 리소스 이름)입니다.

```
1. aws serverlessrepo delete-application --application-id {{application-id}}
```