Serverless Application Repository 常見問答集和條款

一般問題

無伺服器應用程式無需佈建、部署或管理伺服器或其他基礎設施。這些應用程式內建高可用性,而且可連續自動擴展。您可以從眾多全受管 AWS 服務中,挑選一個來建立和執行無伺服器應用程式,包括負責運算的 AWS Lambda,負責 API 的 Amazon API Gateway 和負責資料庫的 Amazon DynamoDB。

AWS Serverless Application Repository 提供不斷增加的無伺服器應用程式集合,這些應用程式由 AWS 和其他 AWS 合作夥伴及開發人員發布。Serverless Application Repository 可讓您輕鬆部署 Web 和行動後端、串流處理、機器學習等常用案例的應用程式,讓您快速開始使用 AWS 無伺服器平台。

目前在以下區域提供:美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)、美國西部 (加利佛尼亞北部)、美國西部 (奧勒岡)、亞太區域 (東京)、亞太區域 (首爾)、亞太區域 (孟買)、亞太區域 (新加坡)、亞太區域 (雪梨)、加拿大 (中部)、歐洲 (法蘭克福)、歐洲 (愛爾蘭)、歐洲 (倫敦) 及南美洲 (聖保羅)。

AWS Serverless Application Repository 包含 AWS 發布者提供的 Alexa 技術、聊天機器人、資料處理、IoT、即時串流處理、Web 和行動後端、社交媒體趨勢分析、重新調整影像大小等應用程式。

在 AWS Serverless Application Repository 中瀏覽應用程式、部署應用程式或發布應用程式,一律不收費。您部署的應用程式如果用到任何資源,則需支付 AWS 標準費用。

AWS 提供的應用程式依 MIT 開放原始碼授權提供,至於其他廠商公開提供的應用程式,可向開放原始碼促進會 (OSI) 組織取得一或多份開放原始碼授權或一份一般使用者商用授權之後,據此提供應用程式。您可以瀏覽 AWS 網站上的應用程式授權標籤,即可找到授權詳細資訊。

AWS 發布的所有應用程式均經過合法授權和程式碼品質審查。第三方發布的應用程式都會經驗證是否有正確的使用許可,確保消費者知道應用程式可以修改或使用哪些資源。使用應用程式之前,您可以查看這些詳細資訊以及 AWS 客戶部署應用程序的次數。

是。AWS Serverless Application Repository 可以讓開發人員發布 GitHub 儲存庫中設計的無伺服器應用程式。使用 AWS CodePipeline 將 GitHub 來源與 AWS Serverless Application Repository 連結,讓發布過程變得更簡單,在幾分鐘內設定好整個過程。

部署應用程式

部署的無伺服器應用程式會成為 AWS CloudFormation 堆疊,這樣您便能輕鬆將應用程式看成是一個單位進行管理。每個資源都標記著應用程式唯一可識別的 Amazon Resource Name (ARN),幫助您利用 AWS Tag Editor 主控台更快地找到資源。您也可以使用現有的 AWS 和第三方工具分別管理每一個資源。

發布應用程式

若要發布無伺服器應用程式,請使用 AWS Serverless Application Model (SAM) 格式描述應用程式,接著使用 AWS CLI 進行封裝,然後使用 AWS 管理主控台,AWS CLI 或 AWS 開發套件發布應用程式。您必須擁有有效的 AWS 帳戶,而且您須提供應用程式的名稱、說明、原始程式碼連結和 LICENSE.txt。要提供給所有 AWS 客戶使用的應用程式必須在美國東部 (維吉尼亞北部) 或美國東部 (俄亥俄) 區域發布。

發布者控制誰可以在此儲存庫尋找和部署他們的應用程式。您可以規定只有您的團隊 (同一個 AWS 帳戶下的一個群組) 才可以使用、與其他帳戶共享應用程式,或者開放所有 AWS 客戶都能使用。要進一步了解您發布的應用程式的許可和能見度,請仔細閱讀 Resource-Based Policies 文件

如果您想收取使用無伺服器應用程式的費用,可以在 Amazon API Gateway 後方整合 AWS Lambda,然後透過 AWS Marketplace 以 SaaS 產品的形式銷售 API。要進一步了解,請查看在 AWS Marketplace 上架的步驟,以及如何使用 API Gateway 從 API 獲利

使用巢狀應用程式

巢狀無伺服器應用程式是被部署為另一個無伺服器應用程式一部分的元件。當無伺服器架構增長時,常見的樣式會出現,其中相同的元件會在多個應用程式範本中被定義。您現在可以將常見的樣式分離出來,成為專用的應用程式,然後建立它們的巢狀分組,做為新的或現有應用程式範本的一部分。

巢狀應用程式會被部署為 AWS CloudFormation 巢狀堆疊

請使用 AWS:Serverless:Application 資源類型新增您已在本地部署或已透過 Serverless Application Repository 與您共享的應用程式。您可以使用簡單的 AWS SAM 語法,定義巢狀應用程式的輸入或參考輸出。如需詳細資訊,請參閱我們的文件

為 SAM 範本內的每一個巢狀應用程式指定唯一的名稱。巢狀應用程式建立的資源,其範圍將限於該應用程式的唯一名稱。

使用 SAM CLI sam package 命令封裝您的巢狀應用程式。使用 API 或 AWS SDK 將您的套裝應用程式發佈到 Serverless Application Repository。您可以使用 SAM CLI sam deploy 命令立即部署您的應用程式。

是。SAM CLI sam package 命令將遞迴封裝巢狀應用程式的層次結構。單一最上層應用程式範本內最多可以容納 199 個巢狀應用程式。

取用巢狀應用程式

部署的無伺服器應用程式會成為 AWS CloudFormation 堆疊,這樣您便能輕鬆將應用程式看成是一個單位進行管理。每個資源都標記著應用程式唯一可識別的 Amazon Resource Name (ARN),幫助您利用 AWS Tag Editor 主控台更快地找到資源。您也可以使用現有的 AWS 和第三方工具分別管理每一個資源。

使用應用程式 ARN 及應用程式要求的任何必要輸入參數設定 AWS︰Serverless︰Application SAM 資源。如需詳細資訊,請參閱我們的文件

Serverless Application Repository 的巢狀應用程式已經封裝好,並可立即使用。您可以使用現有的 SAM CLI sam package 命令,確保在您的帳戶內部署應用程式之前,仍然可以使用巢狀應用程式。

您建立巢狀結構的應用程式如果被刪除或無法再使用,並不會影響您的應用程式現有的部署。如果您試圖部署的應用程式具有已不存在的相依性,您將會被要求更新應用程式。

包含一個或多個巢狀應用程式的應用程式會使用 CAPABILITY_AUTO_EXPAND。

發佈巢狀應用程式

是。您可以將巢狀應用程式發佈至 Serverless Application Repository,正如目前您發佈獨立應用程式一樣。請使用 AWS 主控台、AWS CLI、SAM CLI 或 Serverless Application Repository API 來發佈巢狀應用程式。

共享巢狀應用程式

無伺服器應用程式遵循目前 Lambda 函數所使用的同一模型。您可以使用 AWS IAM 資源型政策控制對 Serverless Application Repository 中無伺服器應用程式的存取。您可以使用政策,使您的應用程式保持私有、授予跨帳號的存取權限,或使它成為公開資訊。

在巢狀應用程式的層次結構下,每一個巢狀應用程式必須能提供給您與之共享最上層應用程式的 AWS 帳戶使用。

共享應用程式

是。您現在能與屬於某個 AWS Organization 的所有帳戶共享應用程式。無伺服器應用程式遵循目前 Lambda 函數所使用的同一模型。您可以使用 AWS IAM 以資源為基礎的政策控制對 AWS Serverless Application Repository 中無伺服器應用程式的存取權。您可以使用政策保持應用程式的私有狀態、授與跨帳戶存取權、授與組織存取權,或提供為公開使用。若要進一步了解無伺服器應用程式以資源為基礎的政策,請參閱這裡

若要開始使用,請在 AWS Serverless Application Repository 主控台找到此應用程式,按一下 ‘Share’ 標籤,然後按一下 ‘Create Statement’。您可以在這裡新增 AWS Organization 委託人,授與該組織對應用程式的存取權。您還可以使用 AWS Serverless Application Repository API 更新以資源為基礎的政策,在組織中共享應用程式。如需有關以資源為基礎的政策的更多詳細資訊,請參閱我們這裡的文件。

否。您只能與您帳戶所屬的相同 AWS Organization 中的帳戶共享應用程式。

不支援在組織單位內共享應用程式。您可以使用政策保持應用程式的私有狀態、授與跨帳戶存取權、授與組織存取權,或提供為公開使用。

若要為組織中的特定帳戶提供應用程式的存取權,只需更新以資源為基礎的政策,以包含 AWS 帳戶以及您想要與其共享應用程式的 AWS Organization ID 即可。

是。您可以在以資源為基礎的政策上設定動作,利用該政策限制某人對您共享的應用程式可執行的操作類型。您可以透過 AWS Serverless Application Repository API 和主控台,針對以資源為基礎的政策更新動作。如需您可針對以資源為基礎的政策設定動作的更多詳細資訊,請參閱我們這裡的文件。

使用者條款

1.1. 如果發布者為 AWS 客戶,可以提交他們的 AWS 無伺服器應用程式和元件 (在此稱為「AWS 無伺服器應用程式」),並透過 AWS Serverless Application Repository (在此稱為「儲存庫」) 供私下使用、限指定的 AWS 帳戶使用,或者依據儲存庫主控台發布程序開放給所有使用儲存庫的 AWS 客戶使用。供私下使用或限指定 AWS 帳戶使用的 AWS 無伺服器應用程式可以是二進位或原始程式碼格式;所有 AWS 客戶使用的 AWS 無伺服器應用程式可以是二進位或原始程式碼格式,且必須包含充分的詳細資訊讓使用者能夠存取原始程式碼。

2.2. 發布者必須擁有全部授權和必要的許可或權利,方可將其 AWS 無伺服器應用程式提交到儲存庫。除了 AWS 無伺服器應用程式,發布者必須將 AWS 無伺服器應用程式授權條款提交到儲存庫,包括任何開放原始碼授權歸屬規定。將任何 AWS 無伺服器應用程式提交到儲存庫之前,發布者必須負起檢查、評估和測試應用程式的責任。

3.3. 出版者特此授予 AWS 及其附屬機構在儲存庫重製、分發、公開展示或在指定 AWS 帳戶展示 (如果適用)、執行、傳輸、使用,以及以數位形式 (透過各種線上和電子分發方式) 提供其 AWS 無伺服器應用程式的權利。

4.4. 發布者聲明並保證其擁有向儲存庫提交其 AWS 無伺服器應用程式、允許從儲存庫下載其 AWS 無伺服器應用程式的一切權利,並提供所有必要的權利歸屬。發布者不得為傷害他人的意圖或目的提交含惡意軟體、惡意程式碼或其他有害內容的 AWS 無伺服器應用程式。AWS 可依此原因或其他原因自行移除或下架任何 AWS 無伺服器應用程式。

5.5. 針對下載的任何 AWS 無伺服器應用程式,AWS 客戶將遵守各項授權,包括任何權利歸屬或其他規定。

6.6. 建立任何 AWS 無伺服器應用程式衍生作品的任何 AWS 客戶,都有責任判斷其是否具有 AWS 無伺服器應用程式授權的相應權利,並且必須遵守任何權利歸屬或其他規定。

7.7. 任何發布者的 AWS 無伺服器應用程式授權或其他合約僅適用於發布者與 AWS 客戶雙方。AWS 及其任何附屬公司均不是該授權或其他合約的當事人,而且皆無須對本授權或其他合約擔負任何責任或義務。AWS 不負責亦無義務保證發布者或 AWS 客戶遵守授權 (包括權責歸屬) 或其他規定。

8.8. 儲存庫中的 AWS 無伺服器應用程式和任何其他第三方資料均為「儲存庫內容」。 儲存庫內容按「原樣」提供,不作任何明示或暗示的保證,包括但不限於對適銷性、特定用途適用性和不侵權的保證。在任何情況下,無論是由於儲存庫內容直接、間接或其他行為所導致的合約訴訟、侵權,發布者、版權所有者,AWS 或其附屬公司一律不對任何索賠、損害或其他責任承擔責任。

9.9.發布者和 AWS 客戶同意當他們使用儲存庫時,將遵守所有條款,並且 AWS 將不定期更新這些條款。