详情页标题前

阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

详情页1

移动互联时代,直接通过手机应用上传数据越来越普遍。针对日志场景,您也可以将移动端应用的日志直接上传到日志服务,不需要通过应用服务端中转。本文介绍如何搭建移动端应用日志直传服务。

背景信息

代理方案

阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

传统代理方案中,应用服务器需要作为中转站,处理所有来自移动端上传的日志。如果移动端应用日志数量较大或移动设备激增时,单点的应用服务器会成为数据上传的瓶颈。

直传方案

客户端直传的其中一种方式是将AK写入客户端代码中,在客户端使用AK直接将日志上传日志服务。该方式会存在AK泄漏风险。如果发生AK泄漏,则会威胁该账号下云资源的安全。另一种方式是使用临时的安全令牌,通过STS可获取自定义时效和访问权限的临时身份凭证,持有该临时令牌,可实现移动设备直接访问日志服务,搭建直传服务。

方案优势

  • 临时安全令牌,访问方式更加安全,遵循最小化授权。

  • 成本低。您无需准备大量应用服务器。

  • 高并发,支持海量用户。日志服务支持海量的上传和下载带宽。

  • 弹性。日志服务具有无限扩容的存储空间。

架构图阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

名词解释

节点

说明

Android/iOS应用

最终用户的移动端应用,日志的来源。

SLS

阿里云日志服务,负责存储应用上传的日志。

RAM/STS

阿里云访问控制,提供用户身份管理和资源访问控制服务,负责生成临时上传凭证。

应用服务器

提供从STS获取临时访问凭证的服务以及用户在应用中上传数据的元数据信息。

详细说明

  1. 移动端应用向应用服务器发起请求,申请获取临时安全令牌;

  2. 应用服务器检测移动端请求的合法性(可以结合业务的实际情况如:登录态、对称加密等),若通过校验,应用服务器需要使用提前创建的RAM用户生成的AK作为访问凭据,向STS服务发起AssumeRole接口调用,申请RAM用户扮演目标RAM角色

  3. STS服务检测AK合法性,并验证RAM用户是否具备扮演目标RAM角色的权限,若通过校验,STS服务返回临时安全令牌给应用服务器;

  4. 应用服务器获取临时安全令牌后,返回临时安全令牌;

  5. 移动端应用获取临时安全令牌后,使用临时安全令牌作为访问凭据,直接将日志上传到日志服务;

  6. 日志服务通过RAM/STS服务验证临时安全令牌合法性,并验证RAM角色是否具备访问目标日志库的权限,若通过校验,日志服务处理移动端应用的上传日志请求,并返回上传结果给移动端应用。

操作步骤

步骤一:在日志服务中创建Project和Logstore

  1. 登录日志服务控制台。

  2. 创建Project。

    1. 在Project列表区域,单击创建Project

    2. 创建Project面板,选择所属地域华东1(杭州),输入Project名称slstestproject,其他配置保持默认即可。

    3. 单击创建

  3. 创建Logstore。

    创建Project完成后,系统会提示您创建一个Logstore。

    1. 创建Project对话框,单击创建Logstore

    2. 创建Logstore面板,输入Logstore名称slstestlogstore,根据需要选择计费模式Shard数目以及是否开启自动分裂Shard,更多详情请参见管理Shard。

    3. 单击确定

步骤二:创建RAM用户并完成角色扮演授权

  1. 登录RAM控制台。

  2. 创建RAM用户。

    1. 在左侧导航栏,选择身份管理>用户

    2. 用户页面,单击创建用户

    3. 创建用户页面,输入登录名称ramslsuser,选中OpenAPI调用访问复选框。

      阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

    4. 单击确定

      创建成功后,系统会自动生成访问密钥AccessKey,请记录并妥善保存AccessKey。

      说明

      您也可以手动为RAM用户创建AccessKey。具体操作,请参见创建AccessKey。

  3. 授予RAM用户调用STS服务AssumeRole接口的权限。

    1. 用户页面,找到RAM用户ramslsuser,单击RAM用户操作列的添加权限

    2. 添加权限面板,选择权限为系统策略后,找到AliyunSTSAssumeRoleAccess策略并单击策略名称,其他配置保持默认即可。

      阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

    3. 单击确定

    4. 单击完成

步骤三:创建RAM角色并完成资源授权

  1. 登录RAM控制台。

  2. 创建RAM角色。

    1. 在左侧导航栏,选择身份管理>角色

    2. 角色页面,单击创建角色

    3. 创建角色面板,选择可信实体类型为阿里云账号,然后单击下一步

    4. 输入角色名称ramslsrole,选择信任的云账号为当前云账号(UID)

    5. 单击完成

    6. 单击关闭

      创建完成后,在角色页面,找到ramslsrole角色,单击角色名称,查看并记录角色ARN。

      阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

  3. 通过脚本编辑模式创建自定义策略。

    1. 在左侧导航栏,选择权限管理>权限策略

    2. 权限策略页面,单击创建权限策略

    3. 创建权限策略页面,单击脚本编辑页签。

    4. 输入如下权限策略内容,然后单击继续编辑基本信息

      {
        "Version": "1",
        "Statement": [
          {
            "Action": [
              "log:PostLogStoreLogs",
              "log:PutLogs"
            ],
            "Resource": "acs:log:*:*:project/slstestproject/*",
            "Effect": "Allow"
          }
        ]
      }
    5. 输入权限策略名称putlogspolicy

    6. 单击确定

  4. 为RAM角色授予自定义权限策略。

    1. 在左侧导航栏,选择身份管理>角色

    2. 角色页面,找到RAM角色ramslsrole,单击RAM角色操作列的添加权限

    3. 添加权限面板,选择权限为自定义策略后,找到putlogspolicy策略并单击策略名称,其他配置保持默认即可。

      阿里云日志服务SLS采集-搭建移动端日志直传服务-云淘科技

    4. 单击确定

    5. 单击完成

步骤四:搭建一个应用服务器

本教程提供了多个语言的版本示例程序供您下载,下载地址请参见PHP、Java、Ruby、Node.js。

配置文件

示例中,每个语言包内均有一个管理配置的config.json文件,可对配置进行修改。

{
    "AccessKeyID" : "",
    "AccessKeySecret" : "",
    "RoleArn" : "",
    "TokenExpireTime" : "900",
    "PolicyFile": "policy/write_policy.txt"
}
                            

参数

说明

AccessKeyID

RAM用户的访问密钥ID。

AccessKeySecret

RAM用户的访问密钥Secret。

RoleArn

RAM角色的RoleArn。

TokenExpireTime

移动端应用获取到的Token的失效时间。

最少是900s,可以不修改默认值。

PolicyFile

Token所要拥有的权限列表的文件,可以不修改默认值。

此处提供两种最常用Token权限文件,位于policy目录下面。 您也可以根据业务需求设计policy文件。

  • write_policy.txt:指定了该Token拥有该账号下Project的写入权限。使用write_policy.txt权限文件时,请根据实际替换该文件中的Project名称。

  • readonly_policy.txt:指定了该Token拥有该账号下Project的读取权限。

Token的最终权限为RAM角色权限与权限文件的权限交集。如果未设置权限文件,则Token的最终权限为RAM角色权限。

运行示例代码

代码示例的运行方法:对于Java版本(依赖于Java 1.7+),将包下载解压后,新建一个Java工程,将依赖和代码以及配置拷贝到Java工程中,运行main函数即可,程序默认会监听7080端口,等待HTTP请求,其他语言类似。

步骤五:移动端直传

  1. 获取安全令牌STS Token

    以HTTP请求形式访问服务的7080端口,获取临时安全令牌。返回结果示例如下:

    {
      "StatusCode":"200",
      "AccessKeyId":"STS.3pdgagd****",
      "AccessKeySecret":"rpnwO9wr34tGdrddgsR2Y****",
      "SecurityToken":"CAES+wMIARKAAZhjH0EUOIhJMQBMjR****tZGVtbzI=",
      "Expiration":"2021-11-20T08:23:15Z"
    }                          
  1. 移动端直传

    示例代码演示通过移动客户端通过临时安全令牌直接将日志写入到日志库中。

    const ALY = require("aliyun-sdk");
    
    const sls = new ALY.SLS({
      accessKeyId: "Your temporary accesKeyId",
      secretAccessKey: "Your temporary accessKeySecret",
      securityToken: "Your sts token",
      endpoint: "http://cn-hangzhou.log.aliyuncs.com",
    });
    
    // -------------------------------
    // put logs
    // -------------------------------
    const projectName = "your_project_name";
    const logStoreName = "your_logstore";
    
    const logGroup = {
      logs: [
        {
          time: Math.floor(new Date().getTime() / 1000),
          contents: [
            {
              key: "a",
              value: "1",
            },
            {
              key: "a",
              value: "2",
            },
            {
              key: "a",
              value: "3",
            },
          ],
        },
      ],
      topic: "vv",
      source: "127.0.0.1",
    };
    
    sls.putLogs(
      {
        //必选字段
        projectName: projectName,
        logStoreName: logStoreName,
        logGroup: logGroup,
      },
      function (err, data) {
        if (err) {
          console.log("error:", err);
          return;
        }
    
        console.log("success:", data);
      }
    );
    

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:http://www.yunxiaoer.com/165759.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云负载均衡DeleteVServerGroup – 删除服务器组-云淘科技

    删除服务器组。 调试 您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。 调试调试授权信息下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下: 操作:是指具体的权限点…

    阿里云负载均衡 2023年12月10日
  • 阿里云云原生大数据计算服务 MaxCompute通过DataWorks数据集成迁移日志数据至MaxCompute-云淘科技

    本文为您介绍如何通过数据集成功能同步LogHub数据至MaxCompute。 背景信息 日志服务支持以下数据同步场景: 跨地域的LogHub与MaxCompute等数据源的数据同步。 不同阿里云账号下的LogHub与MaxCompute等数据源间的数据同步。 同一阿里云账号下的LogHub与MaxCompute等数据源间的数据同步。 公共云与金融云账号下的L…

    2023年12月10日
  • 阿里云日志服务SLS使用Java SDK管理消费组-云淘科技

    通过消费组(ConsumerGroup)消费日志数据有显著优点,您无需关注日志服务的实现细节和消费者之间的负载均衡、Failover等,只需关注业务逻辑。本文通过代码示例介绍如何创建、修改、查询、删除消费组等。 前提条件 已创建RAM用户并完成授权。具体操作,请参见创建RAM用户并完成授权。 已配置环境变量ALIBABA_CLOUD_ACCESS_KEY_I…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云日志服务SLS支持地域-云淘科技

    本文介绍日志服务数据加工支持的地域信息。 以下地域支持使用日志服务的数据加工功能。 地域 华东1(杭州) 中国(香港) 华东1 金融云 日本(东京) 华东2(上海) 韩国(首尔) 华东2 金融云 新加坡 华北1(青岛) 澳大利亚(悉尼) 华北2(北京) 马来西亚(吉隆坡) 华北2 金融云(邀测) 印度尼西亚(雅加达) 华北2 阿里政务云1 菲律宾(马尼拉) …

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云云原生大数据计算服务 MaxCompute基于Policy对具备内置角色的用户进行权限管理-云淘科技

    用户被赋予MaxCompute内置的角色后,会具备内置角色相应的权限,例如用户被赋予开发角色则具备表、资源等的操作权限。但实际业务场景中,需要对此类用户的操作权限进行更精细化的管理,例如不允许删除重要表。本文基于案例为您介绍如何通过Policy对具备内置角色权限的用户进行权限管理。 前提条件 已安装MaxCompute客户端。更多安装MaxCompute客户…

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。