すべてのプロダクト
Search
ドキュメントセンター

Function Compute:クイックスタート

最終更新日:Dec 06, 2024

Serverless Devsは、オープンソースのサーバーレス開発者ツールです。 Serverless Devsを使用すると、効率的な方法で関数を作成、展開、呼び出し、ライフサイクル全体でプロジェクトを管理できます。 このトピックでは、Serverless Devsを使用してPythonにデプロイされる関数を管理する方法について説明します。

手順

ステップ1: Serverless Devsのインストール

CLI、バイナリファイル、およびスクリプトのダウンロードを使用して、Serverless Devsをインストールできます。 このトピックでは、Node Package Manager (npm) を使用してServerless Devsをインストールする方法について説明します。

  1. Node.jsとnpmをインストールします。

    詳細については、Download Node.jsをご参照ください。

    説明

    Node.jsのバージョンはNode.js 14以降である必要があります。 インストール後、node -- versionコマンドを実行してNode.jsのバージョンを表示できます。

  2. 次のコマンドを実行してServerless Devsをインストールします。

    sudo npm install @serverless-devs/s -g
  3. 次のコマンドを実行して、インストールが完了したかどうかを確認します。

    sudo s -v

    Serverless Devsが正常にインストールされた場合、次のサンプルコードが返されます。

    @serverless-devs/s: 3.0.1, s-home: /root/.s, linux-x64, node-v14.17.4

手順2: Serverless Devsの設定

  1. Alibaba Cloud AccessKey情報を取得します。

    AccessKeyペアを作成するときは、AccessKeyシークレットを保存する必要があります。 詳細については、「AccessKey の作成」をご参照ください。

    説明

    Alibaba CloudアカウントのAccessKey IDとAccessKey secretは、Alibaba Cloud APIにアクセスするための資格情報です。 AccessKeyペアが安全であることを確認してください。

  2. プロンプトに従ってキーを設定します。

    1. 次のコマンドを実行して、選択できるクラウドサービスプロバイダーを照会します。

      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)
    2. クラウドサービスプロバイダーを選択し、Enterキーを押します。 この例では、Alibaba Cloud (alibaba) が選択されています。

    3. プロンプトに従ってキーを設定します。

      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: 関数の初期化

  1. 次のコマンドを実行して、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: 依存モジュールやプロジェクトの設定など、依存関係を定義するファイル。

  2. 次のコマンドを実行して、プロジェクトディレクトリに移動します。

    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