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

Function Compute:ApsaraDB for Redisデータベースへのアクセス

最終更新日:Sep 09, 2024

Function Computeでは、関数を使用してデータベースAPIを呼び出し、データを挿入またはクエリできます。 ほとんどの場合、インスタンスのステータスはFunction Computeの異なる実行環境間で共有されません。 インスタンスのステータスを共有する場合は、構造化データをデータベースに保存する必要があります。 このトピックでは、Serverless Devsを使用してApsaraDB for Redisデータベースにアクセスする関数をデプロイする方法について説明します。 このトピックではPython 3が使用されています。

前提条件

ApsaraDB for Redisインスタンスの作成

重要
  • 作成するデータベースインスタンスが、データベースインスタンスにアクセスする必要がある関数と同じリージョンにあることを確認します。

  • Function Computeがサポートするゾーンにデータベースインスタンスを作成することを推奨します。 メッセージルーティング機能の詳細については、「ゾーン」をご参照ください。

    データベースインスタンスがFunction Computeでサポートされているゾーンにデプロイされていない場合は、VPCにvSwitchを作成します。 vSwitchはFunction Computeと同じゾーンにある必要があります。 さらに、Function Computeの指定されたサービスのVPC設定でvSwitch IDを指定する必要があります。 同じVPC内のvSwitchは、プライベートネットワークを介して相互に通信できます。 したがって、Function ComputeはvSwitchを使用して、他のゾーンにあるVPCのリソースにアクセスできます。 詳細については、「「vSwitch is in unsupported zone」エラーを解決するにはどうすればよいですか?」をご参照ください。

手順1: データベースのIPアドレスホワイトリストの設定

重要

IPアドレスホワイトリストを使用して、関数がデータベースにアクセスすることを許可します。 セキュリティグループモードを使用しないでください。 そうしないと、関数がデータベースへの接続に失敗し、ビジネスに影響を与えることがあります。

  1. ApsaraDB for Redisコンソールにログインします。

  2. 上部のナビゲーションバーで、インスタンスがデプロイされているリージョンを選択します。

  3. [インスタンス] ページで、インスタンスを見つけてIDをクリックします。

  4. 目的のホワイトリストグループを見つけて、[変更] をクリックします。

    重要

    指定するIPアドレスは、Function Computeのネットワークを設定するときに追加するvSwitchのCIDRブロックに属している必要があります。

ステップ2: 関数のデプロイと呼び出し

  1. Serverless DevsとDockerをインストールし、キーを追加します。

    詳細については、「Serverless DevsとDockerのインストール」および「キーの追加」をご参照ください。

  2. プロジェクトを初期化します。

    s init start-fc-redis-python -d start-fc-redis-python
  3. プロジェクトにアクセスします。

    cd start-fc-redis-python
  4. s.yamlファイルを編集します。

    次のサンプルコードは、設定例を示しています。

    edition: 1.0.0    
    name: fcDeployApp   
    access: "default" 
    
    services:
     fc-db-redis-python:
      component: devsapp/fc 
      props:
       region: cn-hangzhou
       service:
        name: fc-db-demo
        description: 'demo for fc visit db'
        internetAccess: true
        vpcConfig:
              vpcId: vpc-bp1hcg467ekqsv0zr**** # The ID of the virtual private cloud (VPC) in which the database instance resides. 
              securityGroupId: sg-bp1gg2tyyzuvz8x0**** # The ID of the security group. 
         vswitchIds:
                - vsw-bp1sciqyju9qxocys**** # Make sure that the CIDR block of the vSwitch is added to the whitelist of the database instance. 
       function:
        name: redis
        description: visit redis
        runtime: python3
        codeUri: ./code
        handler: index.handler
        memorySize: 256
        timeout: 30
        initializationTimeout: 60
        initializer: index.initializer
        environmentVariables:
              REDIS_HOST: r-bp1v04cjj0jlr7****.redis.rds.aliyuncs.com # The private IP address of the database instance. 
              REDIS_PASSWORD: Hangzhou**** # The password of the database instance. 
              REDIS_PORT: 63** # The private port of the database instance. 
  5. 次のコマンドを実行してプロジェクトをビルドします。

    s build --use-docker
  6. 次のコマンドを実行して、プロジェクトをデプロイします。

    s deploy -y
  7. 次のコマンドを実行して関数を呼び出します。

    s invoke -e "{}"

    期待されるコマンド出力:

    [2021-09-14T17:08:50.875] [INFO ] [S-CLI] - Start ...
    ========= FC invoke Logs begin =========
    FC Initialize Start RequestId: ccd73383-048d-4c8d-834e-93da59b86a21
    FC Initialize End RequestId: ccd73383-048d-4c8d-834e-93da59b86a21
    FC Invoke Start RequestId: eccafc0a-493e-4f3e-9afa-45c0b84a2c0f
    counter: 0
    FC Invoke End RequestId: eccafc0a-493e-4f3e-9afa-45c0b84a2c0f
    
    Duration: 27.51 ms, Billed Duration: 28 ms, Memory Size: 256 MB, Max Memory Used: 34.05 MB
    ========= FC invoke Logs end =========
    
    FC Invoke Result:
    0
    
    
    End of method: invoke

サンプルコード

Function ComputeのPythonランタイムでApsaraDB for Redisデータベースにアクセスする

よくある質問