掘金 后端 ( ) • 2024-04-15 13:21

本文分享自华为云社区《解锁物联网数据管理的新境界:华为云OBS助力数据转发与存储【零代码零硬件玩转华为云IoT】》,作者: Y-StarryDreamer。

1. 背景介绍

物联网(IoT)技术的快速发展正在推动着智能化社会的到来。在这个数字化时代,随着物联网设备数量的不断增加和数据规模的快速增长,如何有效地存储和管理这些海量数据成为了一个重要的挑战。华为云作为领先的云计算服务提供商,积极响应这一挑战,为用户提供了丰富的物联网解决方案,其中包括对象存储服务(OBS)。

OBS作为一种高度可扩展、安全可靠的云端存储服务,为用户提供了灵活、高效的数据存储解决方案。它采用分布式存储架构,能够轻松应对海量数据的存储需求,并提供了多种数据保护和安全控制功能,确保用户的数据安全可靠。

在物联网应用中,数据的长期存储和管理是至关重要的。传统的数据存储方式往往需要用户自行搭建和维护服务器,成本高昂且管理复杂。而将数据转发至OBS,则成为了一种更加便捷和经济的解决方案。通过将数据存储在OBS中,用户可以充分利用其高可靠性和低成本的优势,无需担心数据丢失或存储空间不足的问题。同时,OBS还提供了丰富的数据管理和分析功能,帮助用户更好地理解和利用数据,为业务决策提供支持。

在本文中,我们将深入探讨如何将华为云设备上报的数据转发至OBS进行长期存储。首先,我们将介绍如何创建OBS桶,详细讨论桶的创建过程和相关配置选项。接着,我们将重点介绍如何配置设备接入服务,包括创建数据转发规则、设置转发目标等操作步骤。最后,我们将通过实际操作演示如何验证数据转发的有效性,以及如何利用OBS的管理工具对存储的数据进行查看和管理。

通过本文的阅读,读者将全面了解华为云物联网解决方案中OBS的应用场景和优势,掌握将设备数据转发至OBS进行长期存储的操作方法,从而为物联网应用的开发和部署提供技术支持和指导。

2. 对象存储服务(OBS)简介

image.png

对象存储服务(OBS)是华为云提供的一种高度可靠、安全可靠的云端存储服务。OBS采用分布式架构,具有高可用性、高可靠性和高扩展性的特点。用户可以通过简单的API接口或管理控制台,轻松地上传、下载和管理存储在OBS中的数据。

OBS的主要特点包括:

  1. 高可靠性和可用性:OBS采用多副本存储和智能容灾机制,保障数据的安全和可靠性。无论是硬件故障、网络故障还是其他异常情况,OBS都能够保证数据的持久性和可用性,确保用户数据随时可访问。

  2. 强大的数据管理功能:OBS提供丰富的数据管理功能,包括数据分类、生命周期管理、数据迁移等。用户可以根据自己的业务需求,灵活地管理和组织存储在OBS中的数据,从而提高数据的价值和利用效率。

  3. 灵活的存储桶管理:用户可以根据自己的需求创建和管理多个存储桶,并对存储桶进行权限控制。每个存储桶都具有独立的命名空间和访问控制策略,用户可以根据实际情况对存储桶进行配置和管理,确保数据的安全性和隐私性。

OBS在华为云生态系统中扮演着重要的角色,为用户提供了高效、可靠的数据存储解决方案,广泛应用于各种场景,包括数据备份、归档、多媒体存储等。无论是个人用户、企业用户还是开发者,都可以借助OBS轻松实现数据的存储和管理,从而更好地支持业务发展和创新应用。

3. 创建OBS桶

image.png

在将设备上报的数据转发至OBS之前,首先需要创建一个OBS桶。OBS桶是存储数据的基本单元,用户可以根据自己的需求创建多个桶,并对每个桶进行配置和管理。
image.png

创建OBS桶的步骤:

  1. 登录华为云官方网站,访问对象存储服务

    打开您的浏览器,前往华为云官方网站,并登录您的账号。在控制台中找到并点击“对象存储服务”链接,进入OBS服务页面。

  2. 进入对象存储服务管理控制台

    在OBS服务页面,您将看到一个“进入控制台”的按钮。点击该按钮,您将被导航至对象存储服务的管理控制台页面。

  3. 创建新的OBS桶

    在管理控制台页面的右上角,您会找到一个“创建桶”的按钮。点击该按钮,系统将引导您进入创建OBS桶的界面。

  4. 填写桶的配置信息

    在创建桶的界面,您需要填写一些关于新桶的配置信息,包括桶的名称、所属区域、存储类型等。根据您的需求和应用场景,选择适当的配置选项。

  5. 确认并创建

    填写完桶的配置信息后,您可以预览您所创建桶的配置。确认无误后,点击“立即创建”按钮,系统将开始创建新的OBS桶。

  6. 等待创建完成

    创建桶的过程可能需要一些时间,取决于您所选择的配置和当前的系统负载情况。请耐心等待,直到系统提示桶创建完成。

4. 配置设备接入服务

在本文中,我们将详细介绍如何使用Python代码将设备上报的数据转发至华为云对象存储服务(OBS),并进行长期存储。我们将结合示例代码和详细解释,帮助读者全面了解部署流程和代码实现细节。

* 配置华为云对象存储服务(OBS)

首先,我们需要在华为云平台上创建一个对象存储服务(OBS)桶,用于存储设备上报的数据。在华为云控制台中,进入对象存储服务管理页面,按照以下步骤创建OBS桶:

  1. 单击“进入控制台”进入对象存储服务管理控制台。
  2. 单击页面右上角的“创建桶”按钮。
  3. 根据需求选择桶的规格和配置项,然后单击“立即创建”按钮,即可创建一个新的OBS桶。

* 编写Python部署代码

接下来,我们将编写Python代码,实现设备数据转发至OBS桶的功能。以下是详细的代码解释和部署流程:

import logging
from obs import ObsClient

# 配置华为云OBS参数
access_key_id = 'your_access_key_id'
secret_access_key = 'your_secret_access_key'
server = 'your_obs_server'  # OBS服务的地址,例如:obs.cn-north-4.myhuaweicloud.com

# 配置设备接入信息
device_id = 'your_device_id'
device_secret = 'your_device_secret'

# 配置数据转发规则
topic = 'your_topic'  # 设备上报数据的主题
obs_bucket = 'your_obs_bucket'  # OBS桶名称

# 配置日志
logging.basicConfig(level=logging.INFO)

# 创建OBS客户端
obs_client = ObsClient(access_key_id, secret_access_key, server)

# 创建设备接入服务,模拟设备上报数据
def report_data_to_obs(data):
    try:
        # 上报数据至OBS
        response = obs_client.putContent(obs_bucket, topic, data)
        if response.status < 300:
            logging.info("Data reported to OBS successfully.")
        else:
            logging.error("Failed to report data to OBS. Status code: %d" % response.status)
    except Exception as e:
        logging.error("An error occurred while reporting data to OBS: %s" % str(e))

# 模拟设备上报数据
def simulate_device_data():
    data = {'temperature': 25, 'humidity': 60, 'pressure': 1013}  # 模拟设备上报的数据
    report_data_to_obs(data)

if __name__ == "__main__":
    simulate_device_data()

在以上代码中:

  • 我们使用 obs 包来与华为云的对象存储服务(OBS)进行交互,确保您已安装该包。
  • 请替换代码中的 access_key_idsecret_access_keyserver 参数为您的华为云OBS账户的具体信息。
  • report_data_to_obs 函数用于将设备上报的数据上载到指定的OBS桶中。
  • simulate_device_data 函数用于模拟设备上报数据,您可以根据实际情况更改数据内容。

* 部署和运行代码

在配置好代码中的参数并保存后,您可以将该代码部署到您的服务器或本地环境中,并运行该Python脚本。运行后,您将看到日志中打印出成功或失败的信息,以及数据是否成功上载到OBS桶中。

通过以上步骤,您就成功地将设备上报的数据转发至华为云对象存储服务,并实现了数据的长期存储。这种解决方案能够帮助您管理和分析大量的物联网数据,并为您的应用提供可靠的数据支持。我们可以清楚地了解整个代码的结构和各部分的功能。该代码实现了将设备上报的数据转发至华为云对象存储服务的功能,通过合理的配置和调用,可以在物联网应用中实现数据的可靠存储和管理。

5. 验证操作

完成数据转发规则的配置和激活后,接下来需要验证数据转发是否成功,确保设备上报的数据能够正确地存储到指定的OBS桶中。

验证数据转发的步骤:

使用真实设备或模拟器上报数据

首先,您可以通过真实设备或模拟器模拟设备上报数据,以验证数据转发功能是否正常工作。确保设备能够正常地连接到设备接入服务,并成功上报数据。您可以使用设备的唯一标识符(如设备ID)来确保数据被正确地标识和处理。

查询上报数据

登录到华为云的OBS管理控制台,在控制台中选择相应的OBS桶,以查看存储桶中的对象列表或对象详情。您应该能够在桶中看到与设备上报的数据相对应的对象。确认对象列表中包含了您期望存储的数据对象,并且对象的内容与设备上报的数据一致。

通过以上步骤,您可以验证数据转发功能是否正常,确保设备上报的数据能够顺利地存储到指定的OBS桶中。如果您能够在OBS桶中找到并确认了设备上报的数据,那么数据转发功能已经成功配置并且工作正常。

以下是使用Python SDK 验证数据转发的示例代码:

from obs import ObsClient

# 初始化ObsClient
obs_client = ObsClient(
    access_key_id='your_access_key_id',
    secret_access_key='your_secret_access_key',
    server='your_obs_endpoint'  # OBS服务的endpoint,如obs.cn-north-1.myhuaweicloud.com
)

# 查询指定桶中的对象列表
def list_objects(bucket_name):
    try:
        resp = obs_client.listObjects(bucket_name)
        if resp.status == 200:
            return resp.body.contents
        else:
            print(f'Error: {resp.status}')
            return None
    except Exception as e:
        print(f'Error: {e}')
        return None

# 查询指定对象的详情
def get_object_detail(bucket_name, object_key):
    try:
        resp = obs_client.getObjectMetadata(bucket_name, object_key)
        if resp.status == 200:
            return resp.body
        else:
            print(f'Error: {resp.status}')
            return None
    except Exception as e:
        print(f'Error: {e}')
        return None

if __name__ == "__main__":
    # 指定OBS桶名称和设备上报的对象键(key)
    bucket_name = 'your_obs_bucket_name'
    object_key = 'your_object_key'

    # 查询对象列表
    objects = list_objects(bucket_name)
    if objects:
        print(f'Objects in bucket {bucket_name}: {objects}')

        # 查询对象详情
        object_detail = get_object_detail(bucket_name, object_key)
        if object_detail:
            print(f'Object detail: {object_detail}')
        else:
            print(f'Failed to get object detail for key {object_key}')
    else:
        print(f'Failed to list objects in bucket {bucket_name}')

在上述代码中,您需要替换以下内容:

  • your_access_key_id: 您的华为云Access Key ID。
  • your_secret_access_key: 您的华为云Secret Access Key。
  • your_obs_endpoint: 您的OBS服务的endpoint,如obs.cn-north-1.myhuaweicloud.com
  • your_obs_bucket_name: 您的OBS桶名称。
  • your_object_key: 设备上报的对象键(key),用于查询对象详情。

运行以上代码,将会查询指定桶中的对象列表,并获取指定对象的详情,从而验证数据转发是否成功。

6. 最佳实践和注意事项

在进行数据转发至OBS的操作过程中,有一些最佳实践和注意事项需要注意:

最佳实践

数据加密与安全

对于敏感数据,建议在数据传输过程中进行加密,确保数据的安全性。您可以使用HTTPS等安全加密协议来保护数据在传输过程中的安全。

数据生命周期管理

根据数据的生命周期和业务需求,合理设置数据的存储周期和过期策略,避免存储过期或无用的数据。定期审查和清理不再需要的数据,以释放存储空间并降低存储成本。

监控和报警

建议对数据转发和存储过程进行监控和报警,及时发现和处理异常情况,确保数据的可靠性和稳定性。您可以设置监控指标和报警规则,监测数据转发的状态和性能,并及时采取措施解决问题。

注意事项

存储桶权限设置

在创建存储桶时,需要根据实际需求设置存储桶的权限和访问策略,确保数据的安全和合规性。您可以限制访问存储桶的权限,只允许特定的用户或实体访问存储桶,并采用访问控制策略来保护存储桶中的数据。

区域选择

在设置转发目标时,需要选择与OBS服务相同的区域,确保数据能够顺利地转发和存储到指定的OBS桶中。选择相同的区域可以降低数据传输的延迟,并提高数据传输的效率和可靠性。

7.THE end

本文详细介绍了如何将华为云设备上报的数据转发至对象存储服务(OBS),并突出强调了这一操作的重要性和优势。通过将数据存储在OBS中,用户可以获得以下优势:

  1. 高可靠性和安全性:OBS采用分布式架构和多副本存储,保障数据的安全和可靠性,同时提供数据加密等安全功能,确保数据的机密性和完整性。

  2. 低成本的数据存储:OBS提供了经济实惠的存储方案,用户只需按照实际存储的数据量付费,避免了传统存储方案中需要提前购买存储设备和维护成本的问题。

  3. 强大的数据管理功能:OBS提供了丰富的数据管理功能,包括数据分类、生命周期管理、数据迁移等,帮助用户更好地管理和利用存储在OBS中的数据。

通过将设备上报的数据转发至OBS,用户可以实现数据的长期存储和管理,为应用程序提供稳定可靠的数据支持。因此,我们鼓励读者尝试并探索更多的数据存储和管理方法,以提高应用的效率和可靠性。通过合理利用云端存储服务,用户可以更好地应对不断增长的数据量和复杂的数据管理需求,为物联网应用的发展提供更强大的支持。

点击关注,第一时间了解华为云新鲜技术~