快速入門:發佈應用程式 - AWS Serverless Application Repository

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

快速入門:發佈應用程式

本指南會引導您完成使用 AWS SAM CLI 下載、建置、測試和發佈範例無伺服器應用程式至 AWS Serverless Application Repository 的步驟。您可以使用此範例應用程式做為開發和發佈您自己的無伺服器應用程式的起點。

概要

下列步驟概述如何下載、建置和發佈範例無伺服器應用程式:

  1. 初始化。使用從範本下載範例應用程式 sam init

  2. 在本機測試。使用 sam local invoke 和/或 sam local start-api 在本機測試應用程式。請注意,使用這些命令,即使您的 Lambda 函數在本機叫用,它也會從AWS雲端中讀取和寫入AWS資源。

  3. 封裝。當您對 Lambda 函數感到AWS SAM滿意時,請AWS CloudFormation使用sam package. 在此步驟中,您也會加入要上傳至 AWS Serverless Application Repository 的應用程式相關資訊。

  4. 發佈。使用 sam publish 將應用程式發佈至 AWS Serverless Application Repository。在AWS Serverless Application Repository此步驟結束時,您可以使AWS用AWS Serverless Application Repository.

下一節中的範例 Hello World 應用程式 會引導您完成建置和發佈無伺服器應用程式的這些步驟。

Hello World 應用程式

在本練習中,您會下載並測試代表簡單 API 後端的 Hello World 無伺服器應用程式。其具有 Amazon API Gateway da 函數,支援 Lambda 函數。將 GET 請求傳送 Lambda 函數。API Gateway 就會叫用 Lambda 函數。然後,AWS Lambda 執行函數,單純傳回 hello world 訊息。

應用程式具有下列元件:

  • 為 Hello World 應用程式定義兩個AWS資源的AWS SAM範本:具有 GET 作業的 API Gateway 服務和 Lambda 函數。此範本也會定義 API Gateway GET 作業與 Lambda 函數之間的對應。

  • 用 Python 撰寫的應用程式程式碼。

開始之前

請確定您具有此練習所需的設定:

步驟 1:初始化應用程式

在本節中,您將下載範例應用程式,其中包含 AWS SAM 範本和應用程式程式碼。

初始化應用程式
  1. 在 AWS SAM CLI 命令提示字元執行下列命令。

    sam init --runtime python3.6
  2. 檢閱命令所建立目錄的內容 (sam-app/):

    • template.yaml— 定義 Hello World 應用程式需要的兩個AWS資源:Lambda 函數和支援 GET 作業的 API Gateway 端點。範本也會定義兩個資源之間的對應。

    • 與 Hello World 應用程式程式碼相關的內容:

      • hello_world/目錄 — 包含應用程式程式碼,它會在您執行hello world時傳回。

    注意

    在本練習中,應用程式程式碼是以 Python 撰寫的,您可以在 init 命令中指定執行時間。AWS Lambda 支援建立應用程式程式碼的其他語言。如果您指定其他支援的執行時間,init 命令會提供指定語言的 Hello World 程式碼,以及您可以跟著進行的該語言 README.md 檔案。如需所支援執行時間的相關資訊,請參閱 Lambda 執行環境和可用程式庫

步驟 2:在本機測試應用程式

現在您的本機電腦上有 AWS SAM 應用程式,請按照以下步驟在本機測試它。

在本機測試應用程式
  1. 在本機啟動 API Gateway 端點。您必須從包含 template.yaml 檔案的目錄執行下列命令。

    sam-app> sam local start-api --region us-east-1

    此命令會傳回 API Gateway 端點,您可以將要求傳送至本機測試。

  2. 測試應用程式。複製 API Gateway 端點 URL,將其貼到瀏覽器中,然後選擇 Enter。API Gateway 端點 URL 的範例為http://127.0.0.1:3000/hello

    API Gateway 會在本機叫用端點所對應的 Lambda 函數。Lambda 函數在本地碼頭容器中執行並返回hello world。API Gateway 會將回應傳回給包含文字的瀏覽器。

練習:變更訊息字串

成功測試範例應用程式之後,您可以嘗試進行簡單的修改:變更傳回的訊息字串。

  1. 編輯 /hello_world/app.py 檔案,將訊息字串從 'hello world' 變更為 'Hello World!'

  2. 在瀏覽器中重新載入測試 URL 並觀察新的字串。

您會注意到您的新程式碼是動態載入的,而不必重新啟動 sam local 程序。

步驟 3:封裝應用程式

在本機測試應用程式之後,您可以使用 AWS SAM CLI 來建立部署套件和封裝 AWS SAM 範本。

注意

在下列步驟中,您會建立 hello_world/ 目錄內容的 .zip 檔案,其中包含應用程式程式碼。此 .zip 檔案是無伺服器應用程式的部署套件。如需詳細資訊,請參閱AWS Lambda開發人員指南中的建立部署 Package (Python)

建立 Lambda 套件套件
  1. Metadata 區段加入至 AWS SAM 範本檔案,提供必要的應用程式資訊。如需有關AWS SAM範本Metadata區段的詳細資訊,請參閱AWS Serverless Application Model開發人員指南中的AWS SAM範本中繼資料區段屬性

    以下是一個範例 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

    LicenseUrlReadmeUrl屬性可以是本機檔案的參考 (如上述範例所示),也可以是指向已託管這些成品的 Amazon S3 儲存貯體的連結。

  2. 在要儲存封裝程式碼的位置建立一個 S3 儲存貯體。如果您想使用現有的 S3 儲存貯體,請跳過此步驟。

    sam-app> aws s3 mb s3://bucketname
  3. 執行下列packageAWS SAM CLI 命令,以建立 Lambda 函數部署套件。

    sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket bucketname

    命令會執行下列動作:

    • 壓縮aws-sam/hello_world/目錄的內容並將其上傳到 Amazon S3。

    • 將部署套件、讀我檔案和授權檔案上傳到--s3-bucket選項指定的 Amazon S3 儲存貯體。

    • 輸出新的範本檔案 (稱為 packaged.yaml),您將在下一個步驟中使用該檔案將應用程式發佈至 AWS Serverless Application Repository。packaged.yaml範本檔案與原始範本檔案 (template.yaml) 類似,但有一個主要差異 —CodeUriLicenseUrl、和ReadmeUrl屬性指向 Amazon S3 儲存貯體和包含各自成品的物件。packaged.yaml 範例範本檔案的下列程式碼片段會顯示 CodeUri 屬性:

      HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://bucketname/fbd77a3647a4f47a352fcObjectGUID ...

步驟 4:發佈應用程式

現在您已建立部署套件,您可以使用它將應用程式發佈至 AWS Serverless Application Repository。

將無伺服器應用程式發佈至 AWS Serverless Application Repository
  • 執行以下命令,將新應用程式發佈至 AWS Serverless Application Repository,並將第一個版本建立為 0.0.1。

    sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
注意

依預設,應用程式將建立為私有。您必須共用應用程式,其他AWS帳戶才能檢視和部署您的應用程式。如需共用應用程式的詳細資訊,請參閱下列後續步驟

後續步驟

現在,您已經發佈了範例應用程式,以下是一些您可以用它來做的事情。

  • 在中檢視您的應用程式AWS Serverless Application Repositorysam publish 命令的輸出將包含AWS Serverless Application Repository直接連至應用程式詳細資料頁面的連結。您也可以前往 AWS Serverless Application Repository 登陸頁面並搜尋您的應用程式。

  • 共用您的應用程式 — 由於您的應用程式預設為私人,因此其他AWS帳戶無法看見該應用程式。為了與他人共享您的應用程序,您必須將其公開或授予特定AWS帳戶列表的許可。如需使用 AWS CLI 共用應用程式的相關資訊,請參閱AWS Serverless Application Repository應用政策範例。如需使用主控台共用應用程式的資訊,請參閱共用應用程式

詳細資訊

如需有關AWS SAM範本Metadata區段sam package和AWS SAM CLIsam publish 命令的詳細資訊,請參閱AWS Serverless Application Model開發人員指南中的 < 使用AWS SAM CLI 發行應用程式 >。