阿里云日志服务控制台内嵌分享功能使用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 针对用户在使用官方文档控制台分享内嵌易出现问题的情况,这里使用RAM用户介绍相关参数的获取及配置,方便初次使用者快速使用该功能。

概述

针对用户在使用官方文档控制台分享内嵌易出现问题的情况,这里使用RAM用户介绍相关参数的获取及配置,方便初次使用者快速使用该功能。

原理图

_

实验步骤

1、为RAM用户授权:AliyunSTSAssumeRoleAccess

_

2、创建RAM角色

_
_

3、为角色授权

_

4、roleArn参数获取

_

5、pom.xml

 <dependencies>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-sts</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>3.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.5</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

6、Code Sample


import com.alibaba.fastjson.JSON;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import static java.lang.System.exit;

/**
 * Hello world!
 *
 */
public class slsconsole
{
    public static void main( String[] args ) {
        // RAM子账户的ak,sk
        String akId = "******";
        String ak = "**********";
        String roleArn = "acs:ram::******:role/slsdemotest";  //角色
        String roleSession = "console-role-session"; // 可以取任何值
        String signInHost = "http://signin.aliyun.com";

        try {

            // 访问令牌获取临时AK & Token
            IClientProfile profile = DefaultProfile.getProfile("cn-beijing", akId, ak);
            DefaultAcsClient client = new DefaultAcsClient(profile);

            AssumeRoleRequest assumeRoleReq = new AssumeRoleRequest();
            assumeRoleReq.setRoleArn(roleArn);
            assumeRoleReq.setRoleSessionName(roleSession);
            assumeRoleReq.setMethod(MethodType.POST);
            assumeRoleReq.setDurationSeconds(3600L);
//            // 默认可以不需要setPolicy,即申请获得角色的所有权限
//            assumeRoleReq.setPolicy(本次生成token实际需要的权限字符串,申请权限必须是角色对应权限的子集); // 权限示例参考链接:https://help.aliyun.com/document_detail/89676.html

            AssumeRoleResponse assumeRoleRes = client.getAcsResponse(assumeRoleReq);
            System.out.println(assumeRoleRes.getCredentials().getAccessKeyId());
            System.out.println(assumeRoleRes.getCredentials().getAccessKeySecret());
            System.out.println(assumeRoleRes.getCredentials().getExpiration());
            System.out.println(assumeRoleRes.getCredentials().getSecurityToken());

            // construct singin url
            String signInTokenUrl = signInHost + String.format(
                    "/federation?Action=GetSigninToken"
                            + "&AccessKeyId=%s"
                            + "&AccessKeySecret=%s"
                            + "&SecurityToken=%s&TicketType=mini",
                    URLEncoder.encode(assumeRoleRes.getCredentials().getAccessKeyId(), "utf-8"),
                    URLEncoder.encode(assumeRoleRes.getCredentials().getAccessKeySecret(), "utf-8"),
                    URLEncoder.encode(assumeRoleRes.getCredentials().getSecurityToken(), "utf-8")
            );

            System.out.println("signInTokenUrl: " + signInTokenUrl);

            // 通过临时AK & Token 获取登录 Token
            HttpGet signInGet = new HttpGet(signInTokenUrl);
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpResponse httpResponse = httpClient.execute(signInGet);
            String signInToken = "";
            if (httpResponse.getStatusLine().getStatusCode() == 200) {
                String signInRes = EntityUtils.toString(httpResponse.getEntity());
                System.out.println(signInRes);
                signInToken = JSON.parseObject(signInRes).getString("SigninToken");

                if (signInToken == null) {
                    System.out.println("Invalid response message, contains no SigninToken: " + signInRes);
                    exit(-1);
                }
            } else {
                System.out.println("Failed to retrieve signInToken");
                exit(-1);
            }

            // construct final url   通过登录Token生成日志服务Web访问链接进行跳转登录
            // 注意:生成的访问链接只能被使用一次
            String signInUrl = signInHost + String.format(
                    "/federation?Action=Login"
                            + "&LoginUrl=%s"
                            + "&Destination=%s"
                            + "&SigninToken=%s",
                    URLEncoder.encode("https://www.aliyun.com", "utf-8"),
                    URLEncoder.encode("https://sls4service.console.aliyun.com/next/project/yutarotest/logsearch/log5?isShare=true&hideTopbar=true&hideSidebar=true", "utf-8"),
                    URLEncoder.encode(signInToken, "utf-8"));    //注意参数替换:project/<日志服务项目project>/logsearch/<日志库名称>
            System.out.println(signInUrl);  // 直接使用该URL即可
        } catch (ClientException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意: 参考备注修改为自己的参数值后再进行测试。

更多参考

控制台分享内嵌
Java SDK

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
SQL 存储 人工智能
阿里云日志服务的傻瓜式极易预测模型
预测服务有助于提前规划,减少资源消耗和成本。阿里云日志服务的AI预测服务简化了数学建模,仅需SQL操作即可预测未来指标,具备高准确性,并能处理远期预测。此外,通过ScheduledSQL功能,可将预测任务自动化,定时执行并保存结果。
73 3
|
2月前
|
弹性计算 网络协议 关系型数据库
阿里云国际版ECS云服务器无法登录宝塔面板控制台
阿里云国际版ECS云服务器无法登录宝塔面板控制台
|
4月前
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
SQL 人工智能 运维
在阿里云日志服务轻松落地您的AI模型服务——让您的数据更容易产生洞见和实现价值
您有大量的数据,数据的存储和管理消耗您大量的成本,您知道这些数据隐藏着巨大的价值,但是您总觉得还没有把数据的价值变现出来,对吗?来吧,我们用一系列的案例帮您轻松落地AI模型服务,实现数据价值的变现......
221 3
|
4月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
5月前
|
监控 数据管理 关系型数据库
数据管理DMS使用问题之是否支持将操作日志导出至阿里云日志服务(SLS)
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
4月前
|
敏捷开发 前端开发 测试技术
阿里云云效产品使用合集之如何将云效构建执行过程中产生的日志通过邮件发送
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之appStack部署时没有日志是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
JavaScript 前端开发 开发者
控制台居然可以这么玩?五分钟带你上手ANSI指令,实现一个log工具包
控制台居然可以这么玩?五分钟带你上手ANSI指令,实现一个log工具包
63 1