日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

創(chuàng)建自定義層

層可以為您提供公共依賴庫、運(yùn)行時(shí)環(huán)境及函數(shù)擴(kuò)展等發(fā)布與部署能力。您可以將函數(shù)依賴的公共庫提煉到層或者使用函數(shù)計(jì)算官方公共層,以減少部署或更新函數(shù)時(shí)的代碼包體積。本文介紹層的功能原理、各運(yùn)行時(shí)使用層說明、如何構(gòu)建層的ZIP包以及如何創(chuàng)建、刪除自定義層。

功能原理

  • 構(gòu)建層時(shí),需要將所有內(nèi)容打包到ZIP文件中。函數(shù)計(jì)算運(yùn)行時(shí)會將層的內(nèi)容解壓并部署在/opt目錄下。

  • 當(dāng)函數(shù)配置多個(gè)層時(shí),這些層的內(nèi)容將被合并至/opt目錄,多個(gè)層按照層配置的逆序合并。如果某一文件與其他層中的文件同名,則先配置層中的該文件會覆蓋后配置層中的該同名文件。

    例如,為某函數(shù)配置了第1層和第2層,函數(shù)實(shí)例啟動時(shí),會先加載第2層,后加載第1層,并將其解壓至/opt目錄。在/opt目錄中,第1層的內(nèi)容在前,第2層的內(nèi)容在后,如果第1層和第2層中存在同名文件,那么第1層中的該文件會覆蓋第2層中的該文件內(nèi)容。

  • 如果層中的代碼依賴二進(jìn)制的庫或可執(zhí)行文件,則需要使用Linux系統(tǒng)編譯構(gòu)建層,推薦使用Debian 9。

  • 函數(shù)計(jì)算運(yùn)行時(shí)基于x86_64架構(gòu),如果層中的依賴庫對指令集有依賴,則需要使用x86_64架構(gòu)的機(jī)器,或者通過交叉編譯的方式確保依賴庫與函數(shù)計(jì)算運(yùn)行時(shí)兼容。

各運(yùn)行時(shí)使用層說明

如果運(yùn)行時(shí)支持層功能,函數(shù)計(jì)算會將特定的目錄添加到運(yùn)行時(shí)語言的依賴包搜索路徑中,如下表所示。建議您在層ZIP包中定義與下方列舉的特定目錄相同的文件夾結(jié)構(gòu),使得函數(shù)代碼無需指定路徑即可訪問層。具體構(gòu)建層的ZIP包的方法,請參見構(gòu)建層的ZIP包。如您想自定義層的目錄結(jié)構(gòu),需要在代碼中顯式添加依賴庫搜索地址。具體操作,請參見如何在Custom Runtime中引用層中的依賴

各運(yùn)行時(shí)支持添加的特定目錄

運(yùn)行時(shí)

特定的目錄

Python

/opt/python

Node.js

/opt/nodejs/node_modules

Java

/opt/java/lib

PHP

/opt/php

除Custom Runtime和Custom Container之外的運(yùn)行時(shí)

/opt/bin (PATH)

/opt/lib (LD_LIBRARY_PATH)

Custom Runtime和Custom Container

各運(yùn)行時(shí)的層ZIP包文件結(jié)構(gòu)

關(guān)于各運(yùn)行時(shí)打包上傳的文件結(jié)構(gòu)與解壓部署后的路徑的對應(yīng)關(guān)系,分別舉例說明如下。

使用requests依賴打包后的文件結(jié)構(gòu)
my-layer-code.zip
└── python
    └── requests

ZIP包解壓部署后的路徑
/
└── opt
    └── python
        └── requests
使用uuid依賴打包后的文件結(jié)構(gòu)
my-layer-code.zip
└── nodejs
    ├── node_modules
    │   └── uuid
    ├── package-lock.json
    └── package.json

ZIP包解壓部署后的路徑
/
└── opt
    └── nodejs
        ├── node_modules
        │   └── uuid
        ├── package-lock.json
        └── package.json
使用jackson-core依賴打包后的文件結(jié)構(gòu)
my-layer-code.zip
└── java
    └── lib
        └── commons-lang3-3.12.0.jar

ZIP包解壓部署后的路徑
/
└── opt
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
使用composer依賴打包后的文件結(jié)構(gòu)
my-layer-code.zip
└── php
    ├──composer.json
    ├──composer.lock
    └──vendor

ZIP包解壓部署后的路徑
/
└── opt
    └── php
        ├──composer.json
        ├──composer.lock
        └──vendor

構(gòu)建層的ZIP包

創(chuàng)建層時(shí),需要將所有內(nèi)容打包到ZIP文件中。函數(shù)計(jì)算運(yùn)行時(shí)會將層的內(nèi)容解壓并部署在/opt目錄下。

構(gòu)建層的ZIP包的方式和構(gòu)建代碼包的方式類似,為使函數(shù)在運(yùn)行時(shí)能正確加載使用層發(fā)布的庫,庫的代碼目錄結(jié)構(gòu)需遵從各個(gè)語言標(biāo)準(zhǔn)的目錄規(guī)范,具體信息,請參見各運(yùn)行時(shí)使用層說明。對于部署于層的函數(shù)依賴庫,如果按照規(guī)范的方式打包,函數(shù)計(jì)算運(yùn)行時(shí)會為您自動添加各語言的依賴庫搜索路徑,您無需指定全路徑。如您想自定義層的目錄結(jié)構(gòu),需要在代碼中顯式添加依賴庫搜索地址。具體操作,請參見如何在Custom Runtime中引用層中的依賴

各運(yùn)行時(shí)構(gòu)建層ZIP包的操作步驟如下所示:

說明
  • 在本地構(gòu)建層時(shí),使用的編程語言版本需要和在函數(shù)計(jì)算選擇的運(yùn)行時(shí)的編程語言版本保持一致。

  • 下面創(chuàng)建的工作目錄my-layer-code僅為示例,您在實(shí)際操作過程中可以按需替換目錄名稱。

Python Runtime

說明

在本地構(gòu)建層時(shí),使用的Python版本需要和在函數(shù)計(jì)算選擇的Python運(yùn)行時(shí)版本保持一致。

  1. 執(zhí)行以下命令創(chuàng)建工作目錄。

    mkdir my-layer-code
  2. 進(jìn)入已創(chuàng)建的工作目錄。

    cd my-layer-code
  3. 執(zhí)行以下命令安裝依賴庫到my-layer-code/python

    pip install --target ./python ${PackageName}

    ${PackageName}是您要安裝的依賴包的名稱,pip install命令的詳細(xì)使用方法,請參見pip install

    代碼示例如下:

    pip install --target ./python numpy

    安裝完成后,目錄結(jié)構(gòu)如下:

    my-layer-code
    └── python
        ├── bin
        ├── numpy
        ├── numpy-1.22.4.dist-info
        └── numpy.libs
  4. my-layer-code目錄,執(zhí)行以下命令打包依賴。

    zip -r my-layer-code.zip python

Node.js Runtime

說明

在本地構(gòu)建層時(shí),使用的Node.js版本需要和在函數(shù)計(jì)算選擇的Node.js運(yùn)行時(shí)版本保持一致。

  1. 執(zhí)行以下命令創(chuàng)建工作目錄。

    mkdir my-layer-code
  2. 進(jìn)入已創(chuàng)建的工作目錄。

    cd my-layer-code
  3. 執(zhí)行以下命令安裝依賴庫到my-layer-code/nodejs

    npm install --prefix ./nodejs --save ${PackageName}

    ${PackageName}是您要安裝的依賴包的名稱,npm install命令的詳細(xì)使用方法,請參見npm-install

    代碼示例如下:

    npm install --prefix ./nodejs --save uuid

    安裝完成后,目錄結(jié)構(gòu)如下:

    my-layer-code
    └── nodejs
        ├── node_modules
        │ └── uuid
        ├── package-lock.json
        └── package.json
  4. my-layer-code中執(zhí)行以下命令打包依賴。

    zip -r my-layer-code.zip nodejs

Java Runtime

  1. 執(zhí)行以下命令創(chuàng)建工作目錄。

    mkdir my-layer-code/java
  2. 進(jìn)入已創(chuàng)建的工作目錄。

    cd my-layer-code/java
  3. 通過Maven安裝依賴。

    1. my-layer-code/java目錄下創(chuàng)建一個(gè)pom.xml文件。

      示例如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>maven.util</groupId>
          <artifactId>install-layer</artifactId>
          <version>1.0</version>
          <!-- 要下載的maven依賴 -->
          <dependencies>
              <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
              <dependency>
                  <groupId>org.apache.commons</groupId>
                  <artifactId>commons-lang3</artifactId>
                  <version>3.12.0</version>
              </dependency>
          </dependencies>
          <build>
              <plugins>
                  <!-- maven相關(guān)下載插件 -->
                  <plugin>
                      <artifactId>maven-dependency-plugin</artifactId>
                      <configuration>
                          <!-- 是否排除間接依賴。默認(rèn)false,不排除 -->
                          <excludeTransitive>false</excludeTransitive>
                          <!-- 是否消除依賴jar包后綴的版本信息。默認(rèn)是false,不取消版本信息 -->
                          <stripVersion>false</stripVersion>
                          <!-- 輸出文件路徑 -->
                          <outputDirectory>./lib</outputDirectory>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      </project>

      示例解析如下:

      • 要安裝的依賴包為org.apache.commons.lang3

      • 使用maven-dependency-plugin將需要安裝的依賴包拷貝到/java/lib目錄下。

    2. my-layer-code/java目錄下執(zhí)行以下命令安裝依賴。

      mvn dependency:copy-dependencies

    安裝完成后,目錄結(jié)構(gòu)如下:

    my-layer-code
    └── java
        └── lib
            └── commons-lang3-3.12.0.jar
  4. my-layer-code目錄,執(zhí)行以下命令打包依賴。

    zip -r my-layer-code.zip java

PHP Runtime

  1. 執(zhí)行以下命令創(chuàng)建工作目錄。

    mkdir -p my-layer-code/php
  2. 進(jìn)入已創(chuàng)建的工作目錄。

    cd my-layer-code/php
  3. 通過Composer安裝依賴。

    1. my-layer-code/php目錄下,創(chuàng)建一個(gè)composer.json文件。

      示例如下:

      {
        "require": {
          "aliyunfc/fc-php-sdk": "~1.2",
          "alibabacloud/fnf": "^1.7"
        }
      }
    2. 執(zhí)行以下命令安裝依賴。

      composer install

    安裝完成后,目錄結(jié)構(gòu)如下:

    my-layer-code
     └─php
       ├──composer.json
       ├──composer.lock
       └──vendor
  4. my-layer-code目錄,執(zhí)行以下命令打包依賴。

    zip -r my-layer-code.zip php

創(chuàng)建自定義層

通過控制臺創(chuàng)建自定義層

前提條件

已完成函數(shù)的創(chuàng)建,具體操作請參見創(chuàng)建函數(shù)

操作步驟

  1. 登錄函數(shù)計(jì)算控制臺,在左側(cè)導(dǎo)航欄,選擇高級功能 > 層管理

  2. 在頂部菜單欄,選擇地域,然后在層管理頁面,單擊創(chuàng)建層

  3. 創(chuàng)建層頁面,設(shè)置相關(guān)參數(shù),然后單擊創(chuàng)建。

    參數(shù)

    描述

    名稱

    設(shè)置層的名稱,支持自定義。

    描述

    設(shè)置層的描述信息,便于區(qū)分各層。

    兼容運(yùn)行時(shí)

    選擇與該層兼容的運(yùn)行時(shí)環(huán)境。

    層上傳方式

    按需選擇上傳層依賴的方式。包含以下幾種上傳方式:

    • 通過 ZIP 包上傳層

      選擇或直接上傳已構(gòu)建的層的ZIP文件。上傳的ZIP文件不能超過500 MB。

    • 通過文件夾上傳層

      選擇或上傳已構(gòu)建層的ZIP文件所在的文件夾。上傳的文件夾壓縮后不能超過500 MB。

    • 通過 OSS 上傳層

      選擇上傳構(gòu)建層的ZIP文件的Bucket 名稱文件名稱。選擇的OSS中的文件不能超過500 MB。

    • 在線構(gòu)建依賴層

      如果您的函數(shù)應(yīng)用是基于Python和Node.js語言開發(fā),或需要安裝部分輕量級系統(tǒng)庫,可以選擇在線構(gòu)建依賴層,并在下方輸入框輸入構(gòu)建層的依賴文件package.jsonrequirements.txt的內(nèi)容,提交創(chuàng)建層后系統(tǒng)會自動安裝這些語言級別的依賴包和系統(tǒng)庫,簡化層依賴管理過程。

    構(gòu)建環(huán)境

    當(dāng)您選擇在線構(gòu)建依賴層時(shí),需設(shè)置此參數(shù)選擇構(gòu)建依賴層所使用的運(yùn)行環(huán)境。

    說明

    目前僅Python和Node.js運(yùn)行時(shí)支持在線構(gòu)建依賴層。

    apt 命令

    當(dāng)您選擇在線構(gòu)建依賴層,且需要安裝部分軟件包到層中,可以在apt install后面的輸入框直接輸入依賴的名稱在線安裝。

    層創(chuàng)建成功后,將自動生成層的版本,版本號從1開始遞增。

  4. 創(chuàng)建新版本。

    說明

    已創(chuàng)建的層或相關(guān)層版本暫不支持修改,如果您需要修改層的相關(guān)配置,可以創(chuàng)建新的層或創(chuàng)建新版本。需要注意的是,如果引用的層版本已刪除,在更新層配置時(shí),必須先刪除該引用。

    1. 層管理頁面,單擊目標(biāo)層名稱。

    2. 版本管理區(qū)域,單擊創(chuàng)建版本

    3. 在創(chuàng)建新的版本頁面,選擇運(yùn)行環(huán)境并上傳新的層代碼,然后單擊創(chuàng)建

通過Serverless Devs創(chuàng)建自定義層

前提條件

操作步驟

  1. 執(zhí)行以下命令創(chuàng)建層。

    s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,Java11,custom  --region cn-hangzhou --layer-name my-layer

    代碼解析如下:

    • --code:用于指定代碼包路徑。

    • --compatible-runtime:用于指定創(chuàng)建層兼容的運(yùn)行時(shí)環(huán)境。

    • --layer-name:用于指定創(chuàng)建層的名稱。

    創(chuàng)建完成后提示成功并返回層的ARN,ARN通過#號分為三個(gè)部分,第一部分為賬號ID的標(biāo)識符,第二部分為層的名稱,第三部分為層的版本,如下圖所示。您也可以登錄函數(shù)計(jì)算控制臺查看創(chuàng)建的層信息。dg-createlayer-success

  2. 重復(fù)執(zhí)行以下命令為已創(chuàng)建的層創(chuàng)建新版本。

    s cli fc layer publish --code ./my-layer-code --compatible-runtime java8,java11,custom  --region cn-hangzhou --layer-name my-layer
    說明

    已創(chuàng)建的層或相關(guān)層版本暫不支持修改,如果您需要修改層的相關(guān)配置,可以創(chuàng)建新的層或創(chuàng)建新版本。需要注意的是,如果引用的層版本已刪除,在更新層配置時(shí),必須先刪除該引用。

刪除層與層版本

您可以根據(jù)提示刪除不需要的層或者層版本。已刪除的層不能再被查看或被函數(shù)配置引用,但已配置引用該層的函數(shù)執(zhí)行不受影響。

  1. 登錄函數(shù)計(jì)算控制臺,在左側(cè)導(dǎo)航欄,選擇高級功能 > 層管理

  2. 在頂部菜單欄,選擇地域。

  3. 層管理頁面,按需選擇刪除層或?qū)影姹尽?/span>

    • 刪除層

      單擊目標(biāo)層操作列的刪除,在彈出的對話框中選中確認(rèn)刪除層中的復(fù)選框,然后單擊刪除

    • 刪除層版本

      單擊目標(biāo)層名稱,在層詳情頁面的版本管理區(qū)域,單擊目標(biāo)層版本操作列的刪除,在彈出的確認(rèn)對話框中單擊刪除

相關(guān)文檔