

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 如何發佈應用程式
<a name="serverlessrepo-how-to-publish"></a>

本節提供 AWS Serverless Application Repository 使用 CLI 或 將無伺服器應用程式發佈至 AWS SAM 的程序 AWS 管理主控台。本節也會示範如何共用應用程式以允許其他人部署，以及從 AWS Serverless Application Repository刪除您的應用程式。

**重要**  
您在發佈應用程式時輸入的資訊不會加密。此資訊包括作者名稱等資料。如果您有可辨識個人身分的資訊不想被儲存或公開，建議您在發佈應用程式時不要輸入此資訊。

## 發佈應用程式 (AWS CLI)
<a name="publishing-application-through-cli"></a>

將應用程式發佈到 的最簡單方法是 AWS Serverless Application Repository 使用一組 AWS SAM CLI 命令。如需詳細資訊，請參閱《*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 管理主控台 將新應用程式發佈至 AWS Serverless Application Repository。如需發佈現有應用程式新版本的指示，請參閱[發佈現有應用程式的新版本](serverlessrepo-how-to-publish-new-version.md)。

### 先決條件
<a name="publishing-application-prerequisites"></a>

將應用程式發佈至 之前 AWS Serverless Application Repository，您需要下列項目：
+ 有效的 AWS 帳戶。
+ valid AWS Serverless Application Model (AWS SAM) 範本，定義使用 AWS 的資源。如需 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/)的授權 .txt 檔案或有效的授權識別碼。請注意，只有在您想要公開共用應用程式時才需要授權。如果您要將應用程式保持為私有，或僅私下共用應用程式，則不需要指定授權。
+ 有效的 Amazon S3 儲存貯體政策，可針對您封裝應用程式時上傳至 Amazon S3 的成品授予服務讀取許可。若要設定此政策，請依照下列步驟執行：

  1. 開啟位於 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 的 Amazon S3 主控台。

  1. 選擇您用來封裝應用程式的 Amazon S3 儲存貯體。

  1. 選擇**許可**索引標籤。

  1. 選擇 **Bucket Policy (儲存貯體政策)** 按鈕。

  1. 將下列政策陳述式貼到 **Bucket policy editor (儲存貯體政策編輯器)** 中。請務必在 `Resource`元素中取代儲存貯體名稱，並在 `Condition`元素中取代 AWS 您的帳戶 ID。`Condition` 元素中的表達式可確保 AWS Serverless Application Repository 只有從指定 AWS 帳戶存取應用程式的許可。如需政策陳述式的詳細資訊，請參閱《[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. 選擇 **Save (儲存)** 按鈕。

### 程序
<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 an application (發佈應用程式)**：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish.html)

## 共用應用程式
<a name="share-application"></a>

您可以在下列三種類別其中之一內設定已發佈應用程式的許可：
+ **私有 （預設）** – 使用相同帳戶建立且尚未與任何其他 AWS 帳戶共用的應用程式。只有共用您 AWS 帳戶的消費者才具有部署私有應用程式的許可。
+ **私有共用** – 發佈者已明確與一組特定 AWS 帳戶或 AWS 組織中 AWS 的帳戶共用的應用程式。消費者有權部署已與其 AWS 帳戶或 AWS 組織共用的應用程式。如需 的詳細資訊 AWS Organizations，請參閱*[AWS Organizations 《 使用者指南》](https://docs.aws.amazon.com/organizations/latest/userguide/)*。
+ **公開共用** – 發佈者已與所有人共用的應用程式。所有使用者都有權部署任何公開共用的應用程式。

將應用程式發佈至 後 AWS Serverless Application Repository，預設會設為**私有**。本節說明如何私下與特定 AWS 帳戶或 AWS 組織共用應用程式，或公開分享給所有人。

### 透過主控台共用應用程式
<a name="share-application-console"></a>

您有兩種與他人共用應用程式的選項：1) 與特定 AWS 帳戶或 AWS 組織內 AWS 的帳戶共用，或 2) 與所有人公開共用。如需 的詳細資訊 AWS Organizations，請參閱*[AWS Organizations 《 使用者指南》](https://docs.aws.amazon.com/organizations/latest/userguide/)*。

**選項 1：與 AWS 組織內的特定 AWS 帳戶 （或） 共用您的應用程式**

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在導覽窗格中，選擇 **Published Applications (發佈的應用程式)** 帶出您已建立的應用程式清單。

1. 選擇您想要分享的應用程式。

1. 選擇 **Sharing (共用)** 標籤 。

1. 在 **Application policy statements (應用程式政策陳述式)** 區段中，選擇 **Create Statement (建立陳述式)** 按鈕。

1. 在 **Statement Configuration (陳述式組態)** 視窗中，根據您要共用應用程式的方式來填寫欄位。
**注意**  
如果您要與組織共用，您只能指定 AWS 帳戶所屬的組織。如果您嘗試指定不是 成員 AWS 的組織，則會產生錯誤。  
若要與 AWS Organization 共用您的應用程式，您必須確認 `UnshareApplication`動作將新增至您的政策陳述式，以防未來需要撤銷共用。

1. 選擇 **Save (儲存)** 按鈕。

**選項 2：與所有人公開共用您的應用程式**

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在導覽窗格中，選擇 **Published Applications (發佈的應用程式)** 帶出您已建立的應用程式清單。

1. 選擇您想要分享的應用程式。

1. 選擇 **Sharing (共用)** 標籤 。

1. 在 **Public Sharing (公開共用)** 區段中，選擇 **Edit (編輯** 按鈕。

1. 在 **Public sharing (公開共用)** 下方，選擇 **Enable (已啟用)** 選項按鈕。

1. 在文字方塊中輸入應用程式的名稱，然後選擇 **Save (儲存)** 按鈕。

**注意**  
若要公開共用應用程式，應用程式必須同時設定 `SemanticVersion` 和 `LicenseUrl` 屬性。

### 透過 共用應用程式 AWS CLI
<a name="share-application-cli"></a>

若要使用 共用應用程式 AWS CLI ，您可以使用 `[put-application-policy](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/put-application-policy.html)`命令授予許可，以指定要以委託人身分共用的 AWS 帳戶 （帳戶）。

如需使用 CLI AWS 共用應用程式的詳細資訊，請參閱 [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 Organization 取消共用時，就無法再次與 AWS Organization 共用。

   如需 的詳細資訊 AWS Organizations，請參閱*[AWS Organizations 《 使用者指南》](https://docs.aws.amazon.com/organizations/latest/userguide/)*。

### 發佈者移除許可
<a name="unshare-applications-publisher"></a>

#### 發佈者透過主控台移除許可
<a name="unshare-application-publisher-console"></a>

若要透過 取消共用應用程式 AWS 管理主控台，請移除與其他 AWS 帳戶共用該應用程式的政策陳述式。若要這麼做，請依照下列步驟進行：

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在左側導覽窗格中，選擇 **Available Applications (可用的應用程式)**。

1. 選擇您要取消共用的應用程式。

1. 選擇 **Sharing (共用)** 標籤 。

1. 在 **Application policy statements (應用程式政策陳述式** 區段中，選取與您要取消共用之帳戶共用應用程式的政策陳述式。

1. 選擇 **刪除**。

1. 確認訊息隨即顯示。再選擇一次 **Delete (刪除)**。

#### 發佈者透過 移除許可 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 帳戶共用。

如需使用 CLI AWS 變更許可的詳細資訊，請參閱 [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 管理主控台，來自*管理帳戶的*使用者可以執行下列動作：

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在左側導覽窗格中，選擇 **Available Applications (可用的應用程式)**。

1. 在應用程式的圖磚中，選擇 **Unshare (取消共用)**。

1. 在取消共用訊息方塊中，輸入組織 ID 和應用程式名稱，然後選擇 **Save (儲存)** 以確認您要取消共用應用程式。

#### 管理帳戶透過 從 AWS 組織取消共用應用程式 AWS CLI
<a name="unshare-application-management-cli"></a>

若要從 AWS Organization 取消共用應用程式，來自*管理帳戶的*使用者可以執行 `aws serverlessrepo unshare-application`命令。

下列命令會從 AWS Organization 取消共用應用程式，其中 *application-id* 是應用程式的 Amazon Resource Name (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 管理主控台 或 AWS Serverless Application Repository CLI 從 AWS SAM 刪除應用程式。

### 刪除應用程式 (主控台)
<a name="deleting-application-through-aws-console"></a>

若要透過 刪除已發佈的應用程式 AWS 管理主控台，請執行下列動作。

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在 **My Applications (我的應用程式)** 中，選擇您要刪除的應用程式。

1. 在應用程式的詳細資訊頁面上，選擇 **Delete application (刪除應用程式)**。

1. 選擇 **Delete application (刪除應用程式)**，完成刪除作業。

### 刪除應用程式 (AWS CLI)
<a name="deleting-application-through-cli"></a>

若要使用 刪除已發佈的應用程式 AWS CLI，請執行 `[aws serverlessrepo delete-application](https://docs.aws.amazon.com/cli/latest/reference/serverlessrepo/delete-application.html)`命令。

下列命令會刪除應用程式，其中 `application-id` 是應用程式的 Amazon Resource Name (ARN)：

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

# 發佈現有應用程式的新版本
<a name="serverlessrepo-how-to-publish-new-version"></a>

本節說明如何 AWS Serverless Application Repository 使用 CLI AWS SAM 或 ，將現有應用程式的新版本發佈至 AWS 管理主控台。如需發佈新應用程式的指示，請參閱[如何發佈應用程式](serverlessrepo-how-to-publish.md)。

## 發佈現有應用程式的新版本 (AWS CLI)
<a name="serverlessrepo-how-to-publish-new-version-cli"></a>

發佈現有應用程式新版本的最簡單方法是使用一組 CLI AWS SAM 命令。如需詳細資訊，請參閱《*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="serverlessrepo-how-to-publish-new-version-console"></a>

若要發佈您先前已發佈之應用程式的新版本，請依照下列步驟執行：

1. 開啟 [AWS Serverless Application Repository 主控台](https://console.aws.amazon.com/serverlessrepo/home)。

1. 在導覽窗格中，選擇 **My Applications (我的應用程式)** 帶出您已建立的應用程式清單。

1. 選擇您想要發佈新版本的應用程式。

1. 選擇 **Publish new version (發佈新版本)**。

1. 在 **Versions (版本)** 中，輸入下列應用程式資訊：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/serverlessrepo/latest/devguide/serverlessrepo-how-to-publish-new-version.html)

1. 選擇 **Publish version (發佈版本)**。