Serverless Devsは、オープンソースのサーバーレス開発者ツールです。 Serverless Devsを使用すると、効率的な方法で関数を作成、展開、呼び出し、ライフサイクル全体でプロジェクトを管理できます。 このトピックでは、Serverless Devsを使用してPythonにデプロイされる関数を管理する方法について説明します。
手順
ステップ1: Serverless Devsのインストール
CLI、バイナリファイル、およびスクリプトのダウンロードを使用して、Serverless Devsをインストールできます。 このトピックでは、Node Package Manager (npm) を使用してServerless Devsをインストールする方法について説明します。
Node.jsとnpmをインストールします。
詳細については、Download Node.jsをご参照ください。
説明Node.jsのバージョンはNode.js 14以降である必要があります。 インストール後、
node -- version
コマンドを実行してNode.jsのバージョンを表示できます。次のコマンドを実行してServerless Devsをインストールします。
sudo npm install @serverless-devs/s -g
次のコマンドを実行して、インストールが完了したかどうかを確認します。
sudo s -v
Serverless Devsが正常にインストールされた場合、次のサンプルコードが返されます。
@serverless-devs/s: 3.0.1, s-home: /root/.s, linux-x64, node-v14.17.4
手順2: Serverless Devsの設定
Alibaba Cloud AccessKey情報を取得します。
AccessKeyペアを作成するときは、AccessKeyシークレットを保存する必要があります。 詳細については、「AccessKey の作成」をご参照ください。
説明Alibaba CloudアカウントのAccessKey IDとAccessKey secretは、Alibaba Cloud APIにアクセスするための資格情報です。 AccessKeyペアが安全であることを確認してください。
プロンプトに従ってキーを設定します。
次のコマンドを実行して、選択できるクラウドサービスプロバイダーを照会します。
sudo s config add
次の出力が返されます。
> Alibaba Cloud (alibaba) AWS (aws) Azure (azure) Baidu Cloud (baidu) Google Cloud (google) Huawei Cloud (huawei) Tencent Cloud (tencent) (Move up and down to reveal more choices)
クラウドサービスプロバイダーを選択し、Enterキーを押します。 この例では、
Alibaba Cloud (alibaba)
が選択されています。プロンプトに従ってキーを設定します。
Please select a provider: Alibaba Cloud (alibaba) Refer to the document for alibaba key: http://config.devsapp.net/account/alibaba AccountID 188077086902**** AccessKeyID LTAI4G4cwJkK4Rza6xd9**** AccessKeySecret eCc0GxSpzfq1DVspnqqd6nmYNN**** Please create alias for key pair. If not, please enter to skip default Alias: default AccountID: 188077086902**** AccessKeyID: LTAI4G4cwJkK4Rza6xd9**** AccessKeySecret: eCc0GxSpzfq1DVspnqqd6nmYNN**** Configuration successful
ステップ3: 関数の初期化
次のコマンドを実行して、PythonでHello Worldプロジェクトを作成します。
sudo s init start-fc3-python
次の出力が返されます。
More applications: https://registry.serverless-devs.com ? Please input your project name (init dir) start-fc3-python Downloading[/v3/packages/start-fc3-python/zipball/0.0.8]... Download start-fc3-python successfully ... The region where the application is created. ? Example: cn-huhehaote. The name can contain letters, digits, underscores (_), and hyphens (-). It cannot start with a digit or hyphen (-). It must be 1 to 128 characters in length. ? Function name: start-python-8i32. The region where the application is created. ? Specify the Python runtime. In this example, python3.9 is used. ? please select credential alias default * Before using, please check whether the actions command in Yaml file is available * Carefully reading the notes in s.yaml is helpful for the use of the tool * If need help in the use process, please apply to join the Dingtalk Group: 33947367 Thanks for using Serverless-Devs You could [cd /start-fc3-python] and enjoy your serverless journey! If you need help for this example, you can use [s -h] after you enter folder. Document❤Star: https://github.com/Serverless-Devs/Serverless-Devs More applications: https://registry.serverless-devs.com
プロジェクトが初期化されると、次のファイルを含む現在のディレクトリにstart-fc3-pythonフォルダが生成されます。
s.yaml: Function Computeリソース定義ファイル (YAML構文) 。
code: codeフォルダーには、コードロジックを編集できるindex.pyファイルが含まれています。
readme.md: 依存モジュールやプロジェクトの設定など、依存関係を定義するファイル。
次のコマンドを実行して、プロジェクトディレクトリに移動します。
cd start-fc3-python
ステップ4: 関数のデプロイ
次のコマンドを実行して、関数をfunction Computeにデプロイします。名前、ランタイム、メモリなどの関数メタデータは、s.yaml
ファイルで定義されています。
sudo s deploy
次の出力が返されます。
Steps for [deploy] of [hello-world-app]
====================
✔ [hello_world] completed (3.1s)
Result for [deploy] of [hello-world-app]
====================
region: cn-huhehaote
description: hello world by serverless devs
functionName: start-python-8i32
handler: index.handler
internetAccess: true
memorySize: 128
role:
runtime: python3.9
timeout: 30
A complete log of this run can be found in: /Users/x1/.s/logs/0229164849
ステップ5: 関数を呼び出す
次のコマンドを実行して、関数を呼び出します。
sudo s invoke -e "test"
次の出力が返されます。
Steps for [invoke] of [hello-world-app]
====================
========= FC invoke Logs begin =========
FunctionCompute python3 runtime inited.
FC Invoke Start RequestId: 1-65e045b1-123e1745-79e146cd8b01
2024-02-29T08:52:01.317Z 1-65e045b1-123e1745-79e146cd8b01 [INFO] b'test'
FC Invoke End RequestId: 1-65e045b1-123e1745-79e146cd8b01
Duration: 2.38 ms, Billed Duration: 3 ms, Memory Size: 128 MB, Max Memory Used: 8.78 MB
========= FC invoke Logs end =========
Invoke instanceId: c-65e045b1-12f566fe-ca21d8fe46f1
Code Checksum: 3418420950487476908
Qualifier: LATEST
RequestId: 1-65e045b1-123e1745-79e146cd8b01
Invoke Result:
test
✔ [hello_world] completed (0.46s)
A complete log of this run can be found in: /Users/x1/.s/logs/0229165200
ステップ6: 関数の削除 (オプション)
関数を使用しない場合は、次のコマンドを実行して関数を削除します。
sudo s remove
次の出力が返されます。
Steps for [remove] of [hello-world-app]
====================
Remove function: cn-huhehaote/start-python-8i32
? Are you sure you want to delete the resources listed above yes
✔ [hello_world] completed (11.67s)
A complete log of this run can be found in: /Users/x1/.s/logs/0229165500