天天看點

用 serverless 将程式釋出到 AWS Lambda1. 将Gradle程式打包2. 安裝 Node.js ( v6.5.0 及以上)3. 安裝 serverless 4. 配置 serverless.yml 中相關内容 5. 釋出

1. 将Gradle程式打包

gradle build 

gradle build -x test(打包忽略test)

此時如果提示:”gradle不是内部或外部指令,也不是可運作的程式或批處理檔案”,需要先安裝gradle,安裝步驟如下:

① 安裝 chocolatey 

以管理者身份打開指令行視窗,執行: 

@powershell -NoProfile -ExecutionPolicy Bypass -Command “iex ((new-object net.webclient).DownloadString(‘https://chocolatey.org/install.ps1‘))” && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

② 用 chocolatey 安裝 gradle 

choco install gradle

2. 安裝 Node.js ( v6.5.0 及以上)

3. 安裝 serverless 

npm install -g serverless

4. 配置 serverless.yml 中相關内容

5. 釋出

進入serverless.yml所在目錄,執行 serverless deploy -v 

在該步驟中可能出現的問題:

① 因網絡問題出錯,如下圖:

用 serverless 将程式釋出到 AWS Lambda1. 将Gradle程式打包2. 安裝 Node.js ( v6.5.0 及以上)3. 安裝 serverless 4. 配置 serverless.yml 中相關内容 5. 釋出
用 serverless 将程式釋出到 AWS Lambda1. 将Gradle程式打包2. 安裝 Node.js ( v6.5.0 及以上)3. 安裝 serverless 4. 配置 serverless.yml 中相關内容 5. 釋出
用 serverless 将程式釋出到 AWS Lambda1. 将Gradle程式打包2. 安裝 Node.js ( v6.5.0 及以上)3. 安裝 serverless 4. 配置 serverless.yml 中相關内容 5. 釋出

如果是因網絡逾時引起的,可以設定逾時時間,在cmd中執行: SET AWS_CLIENT_TIMEOUT=200000000 

然後重新執行釋出指令。

② 權限問題 

在 serverless.yml 中設定的role缺少權限,如:

Serverless Error ---------------------------------------
An error occurred: InternalLambdaFunction - The provided execution role does not have permissions to call CreateNetworkInterface on EC2.


Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Forums: forum.serverless.com
Chat: gitter.im/serverless/serverless


Your Environment Information -----------------------------
OS: win32
Node Version: 6.10.0
Serverless Version: 1.25.0
           

說的就是 serverless.yml 中配置的role缺少EC2的權限,需要在AWS IAM控制台下該role中添加EC2的權限。

釋出完成後會在将程式釋出到AWS Lambda中,同時會生成相應的API Gateway。

參考網址: 

https://serverless.com/framework/docs/providers/aws/guide/deploying/

https://github.com/serverless/serverless/issues/1981 

https://github.com/serverless/serverless/issues/2780

繼續閱讀