共用 Lambda 圖層 - AWS Serverless Application Repository

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

共用 Lambda 圖層

如果您在 Lambda 圖層中實作了功能,則可能希望在不託管全域圖層執行個體的情況下共用圖層。以這種方式共用圖層可讓其他人將您圖層的執行個體部署到自己的帳戶。這可以防止用戶端應用程式依賴於您圖層的全域執行個體。所以此AWS Serverless Application Repository可讓您以這種方式輕鬆共用 Lambda 圖層。

如需 Lambda 圖層的詳細資訊,請參AWS Lambda圖層中的AWS Lambda開發人員指南

運作方式

以下是使用 AWS Serverless Application Repository 共用圖層的步驟。這可讓您在用户的AWS帳户。

  1. 使用定義無伺服器應用程式AWS SAM模板,該範本包含您的圖層作為資源 — 即AWS::Serverless::LayerVersionAWS::Lambda::LayerVersion資源。

  2. 將您的應用程式發佈至 AWS Serverless Application Repository 並共用 (公有或私有)。

  3. 客户部署您的應用程式,該應用程式會在他們自己的AWS帳户。客户現在可以在他們的AWS帳號。

範例

以下是範例AWS SAM範本,該應用程式包含您要共用之 Lambda 圖層:

Resources: SharedLayer: Type: AWS::Serverless::LayerVersion Properties: LayerName: shared-layer ContentUri: source/layer-code/ CompatibleRuntimes: - python3.7 Outputs: LayerArn: Value: !Ref SharedLayer

當客户從部署您的應用程式AWS Serverless Application Repository,則會在其AWS帳户。圖層的 ARN 看起來如下所示:

arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1

客戶現在可以在他們自己的用戶端應用程式中參考此 ARN,如以下範例所示:

Resources: MyFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.7 CodeUrl: source/app-code/ Layers: - arn:aws:lambda:us-east-1:012345678901:layer:shared-layer:1