赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 2.0
  4. 操作指南
  5. 访问其他服务
  6. 访问Redis示例

访问Redis示例

  • 访问其他服务
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

您可以参考本文提供的函数计算访问云数据库 Tair(兼容 Redis)的操作指导,在函数中配置专有网络VPC相关信息并在数据库中配置白名单,实现VPC内的云数据库 Tair(兼容 Redis)访问和操作。本文以Python 3为例,介绍如何使用Serverless Devs部署函数来访问云数据库 Tair(兼容 Redis)。

前提条件

创建Redis实例

重要
  • 请确保您所创建的数据库实例与需要访问该数据库实例的函数在同一地域。

  • 建议您在函数计算支持的可用区创建数据库实例。更多信息,请参见函数计算支持的可用区。

    如果您的数据库实例不在函数计算支持的可用区内,可以通过在您的VPC环境中创建一个与函数计算相同可用区的vSwitch,并在函数计算的服务的VPC配置中设置此vSwitch ID。由于同一VPC内不同vSwitch之间私网互通,因此函数计算可以通过该vSwitch访问在其他可用区的VPC内的资源。具体步骤,请参见遇到vSwitch is in unsupported zone的错误怎么办?。

操作步骤

  1. 安装Serverless Devs和Docker,并添加密钥信息。

    具体操作,请参见快速入门和添加密钥信息。

  2. 执行以下命令初始化项目。

    sudo s init

    根据界面提示,依次选择阿里云厂商、快速创建模式和Python内置运行时,设置工程名称以及选择项目部署地域等,本文示例为在杭州地域下部署start-fc-redis-python项目。

    image

  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-bp1oeg1fwxzuxcliq**** # 数据库实例所在的VPC ID。
           securityGroupId: sg-bp164seaxj7wc4d0**** # 安全组ID。
           vswitchIds:
            - vsw-bp1192npo1ziqzw4**** # 请确保该vSwitch对应的网段已配置到数据库实例访问白名单中。
         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-bp1h2g53l3thqg****.redis.rds.aliyuncs.com # 数据库实例的私网地址。
           REDIS_PASSWORD: **** # 数据库实例的密码。
           REDIS_PORT: 63** # 数据库实例的私网端口。
      重要

      请确保您为函数配置的交换机网段已添加到数据库实例访问白名单中。具体操作,请参见配置数据库访问IP地址白名单。

    • 编辑index.py代码文件,示例如下,代码逻辑为从Redis中读取一个名称为counter的键的值,将其加1,然后将新值写回Redis。

      # -*- coding: utf-8 -*-
      import os
      import redis
      
      conn_pool = None
      
      
      def initializer(context):
          global conn_pool
          conn_pool = redis.ConnectionPool(
              host=os.environ['REDIS_HOST'], password=os.environ['REDIS_PASSWORD'],
              port=os.environ['REDIS_PORT'], db=1, decode_responses=True)
      
      
      def handler(event, context):
          global conn_pool
          r = redis.Redis(connection_pool=conn_pool)
      
          counter = r.get('counter')
      
          if counter is None:
              counter = 0
          else:
              counter = int(counter)
      
          print('counter: ' + str(counter))
      
          r.set('counter', str(counter + 1))
          return counter
      
  5. 执行以下命令构建项目。

    sudo s build --use-docker
  6. 执行以下命令部署项目。

    sudo s deploy -y
  7. 执行以下命令调用函数。

    sudo s invoke -e "{}"

    预期输出如下,返回结果中的数值从0开始递增,表示已成功读取Redis中名称为counter的键的值。

    [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

配置数据库访问IP地址白名单

重要 请使用设置IP地址白名单方式授权函数访问数据库,请勿使用安全组方式。否则,可能导致函数偶尔连接不上数据库的情况,影响业务正常运行。
  1. 登录管理控制台。

  2. 在顶部菜单栏的左上角,选择实例所属的地域。

  3. 在实例列表页,单击目标实例ID。

  4. 在实例详情页面的左侧导航栏,选择白名单配置,在白名单设置页签,找到目标白名单分组,单击右侧操作列的修改。

  5. 在弹出的修改白名单分组面板中,在组内白名单输入框输入目标实例绑定的vSwitch的IP地址段,然后单击确定。

更多信息

  • 更多访问云数据库 Tair(兼容 Redis)的示例,请参见函数计算Python访问云数据库 Tair(兼容 Redis)。

  • 关于如何查看函数计算配置的交换机信息以及如何在RDS MySQL数据库放行函数计算的交换机网段,请分别参见配置网络和设置IP白名单。

  • 本文提供的示例代码,需要导入云数据库 Tair(兼容 Redis)客户端库,关于安装第三方依赖的步骤,请参见为函数安装第三方依赖。

  • 如果您配置的vSwitch无法访问指定可用区,请参见遇到vSwitch is in unsupported zone的错误怎么办?。更多关于访问云数据库 Tair(兼容 Redis)的异常案例,请参见常见报错。如果您遇到的异常问题还未解决,需要根据问题现象进行排查,详情请参见数据库访问失败的常见原因。

相关文章

访问NAS示例 2025-04-16 14:22

函数计算的服务配置NAS挂载点后,您可以通过编写代码访问NAS中的文件,就像访问本地文件系统一样。本文提供写入和读取NAS文件的函数代码示例。 前提条

访问数据库 2025-04-16 14:22

通常在函数计算中,不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。通过

访问RDS MySQL示例 2025-04-16 14:22

访问数据库是指在函数计算中通过函数调用数据库应用编程接口,对数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。本文以Python 3为例,介绍如何使用Serverless Devs部署函数来访问RDS MySQL数

访问MongoDB示例 2025-04-16 14:22

访问数据库是指在函数计算中通过函数调用数据库应用编程接口,对数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。本文以Python 3为例,介绍如何使用Serverless Devs部署函数来访问MongoDB数据库

访问Redis示例 2025-04-16 14:22

您可以参考本文提供的函数计算访问

访问RDS SQL Server示例 2025-04-16 14:22

访问数据库是指在函数计算中通过函数调用数据库应用编程接口,对数据库执行数据插入、查询等操作。通常函数计算中不同的执行环境实例之间的状态是不共享的,通过数据库可以将结构化的数据持久化以实现状态共享。本文以Python 3为例,介绍如何使用Serverless Devs部署函数来访问RDS SQL Se

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号