详情页标题前

阿里云对象存储OSS获取Request ID-云淘科技

详情页1

对象存储OSS为接收到的每个请求分配唯一的服务器请求ID,作为关联各类日志信息的标识符。当您在使用OSS过程中遇到错误且希望阿里云技术支持提供协助时,需要提交失败请求的Request ID,以便技术支持快速定位并解决问题。本文介绍获取Request ID的多种方式。

通过SDK获取Request ID

以下仅列举常见SDK获取Request ID的代码示例。

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
        String objectName = "exampledir/exampleobject.txt";
        // 填写本地文件的完整路径,例如D:\localpath\examplefile.txt。
        // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
        String filePath= "D:\localpath\examplefile.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // 上传文件。
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

getObject($bucket, "demo.txt");
} catch(OssException $e) {
    printf($e->getMessage() . "
");
    printf($e->getRequestId() . "
");
}

const OSS = require('ali-oss')
const path=require("path")

const client = new OSS({
  // yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  region: 'yourregion',
  // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // 填写Bucket名称。
  bucket: 'examplebucket',
});

// 自定义请求头
const headers = {
  // 指定Object的存储类型。
  'x-oss-storage-class': 'Standard',
  // 指定Object的访问权限。
  'x-oss-object-acl': 'private',
  // 通过文件URL访问文件时,指定以附件形式下载文件,下载后的文件名称定义为example.txt。
  'Content-Disposition': 'attachment; filename="example.txt"',
  // 设置Object的标签,可同时设置多个标签。
  'x-oss-tagging': 'Tag1=1&Tag2=2',
  // 指定PutObject操作时是否覆盖同名目标Object。此处设置为true,表示禁止覆盖同名Object。
  'x-oss-forbid-overwrite': 'true',
};

async function put () {
  try {
    // 填写OSS文件完整路径和本地文件的完整路径。OSS文件完整路径中不能包含Bucket名称。
    // 如果本地文件的完整路径中未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
    const result = await client.put('exampleobject.txt', path.normalize('D:\localpath\examplefile.txt')
    // 自定义headers
    ,{headers}
    );
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

put();

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

try:
    // 填写下载的文件名称,例如exampleobject.txt。
    stream = bucket.get_object('exampleobject.txt')
except oss2.exceptions.NoSuchKey as e:
    print('status={0}, request_id={1}'.format(e.status, e.request_id))            

package main

import (
	"fmt"
	"net/http"
	"os"
	"strings"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

// 错误处理函数。
func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		HandleError(err)
	}
	// 填写存储空间名称,例如examplebucket。
	bucketName := "examplebucket"
	// 填写Object名称,例如exampleobject.txt。
	objectName := "exampleobject.txt"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}
	var responseHeader http.Header
	// 上传字符串。
	err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"), oss.GetResponseHeader(&responseHeader))
	if err != nil {
		if _, ok := err.(oss.ServiceError); ok {
			// err是oss.ServiceError类型。
			fmt.Println("Error Message:", err.(oss.ServiceError).Message)
			fmt.Println("Error Code:", err.(oss.ServiceError).Code)
			fmt.Println("Request ID:", err.(oss.ServiceError).RequestID)
			fmt.Println("Host ID:", err.(oss.ServiceError).HostID)
		} else {
			// err不是oss.ServiceError类型。
			fmt.Println("Error:", err)
			os.Exit(-1)
		}
	}

	requestId := oss.GetRequestId(responseHeader)
	fmt.Println("Request ID:", requestId)
}

通过浏览器直接访问OSS文件时获取Request ID

您可以通过浏览器直接访问OSS文件时,您可以参考如下步骤获取Request ID。

  1. 以Windows系统为例,在浏览器页面按F12键,打开开发者工具页面。

  2. 在开发者工具页面,单击Network

  3. 在开发者工具页面,单击Name页签,选中目标文件。

  4. 单击Headers页签,在Response Headers区域,从x-oss-request-id获取对应操作的Request ID。

阿里云对象存储OSS获取Request ID-云淘科技

通过实时日志获取Request ID

您可以通过OSS控制台实时查询Bucket、Object级别的各类请求日志,请求日志中包含Request ID的信息。

  1. 登录OSS管理控制台。

  2. 单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。

  3. 选择日志管理 > 实时查询

  4. Ctrl+F键,搜索request_id阿里云对象存储OSS获取Request ID-云淘科技

通过ossutil工具获取Request ID

运行ossutil工具的命令时,在返回日志中获取Request ID。

阿里云对象存储OSS获取Request ID-云淘科技

在Linux系统中通过命令行获取Request ID

在Linux系统中通过命令行获取Request ID的操作步骤如下。

  1. 获取文件URL。

    1. 登录OSS管理控制台。

    2. 单击Bucket 列表,然后单击目标Bucket名称。

    3. 在左侧导航栏,选择文件管理 > 文件列表

    4. 单击目标文件右侧的详情,然后单击复制文件URL

  2. 执行以下命令,获取HTTP响应头中的Request ID。

    curl -voa "[$URL]"

    [$URL]填写复制的文件URL。

    返回结果如下。阿里云对象存储OSS获取Request ID-云淘科技

通过OSS控制台上传文件时获取Request ID

以下以上传文件为例,说明如何通过开发者工具获取对应操作的Request ID。

  1. 打开开发者工具。

    1. 以Windows系统为例,在浏览器页面按F12键,打开开发者工具页面。

    2. 在开发者工具页面,单击Network

  2. 上传文件。

    1. 在OSS管理控制台,单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。

    2. 单击左侧导航栏的文件管理

    3. 上传文件。具体操作,请参见上传文件。

  3. 通过开发者工具获取Request ID。

    1. 在开发者工具页面,单击Name页签,选中目标文件。

    2. 单击Headers页签,在Response Headers区域,从x-oss-request-id获取对应操作的Request ID。阿里云对象存储OSS获取Request ID-云淘科技

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

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

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

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

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

转转请注明出处:https://www.yunxiaoer.com/159209.html

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

相关推荐

  • 阿里云对象存储OSS微信小程序直传实践-云淘科技

    本文介绍如何在微信小程序环境下将文件上传到OSS。 背景信息 小程序是当下比较流行的移动应用,例如大家熟知的微信小程序、支付宝小程序等。小程序是一种全新的开发模式,无需下载和安装,为终端用户提供更优的用户体验。如何在小程序环境下上传文件到OSS也成为开发者比较关心的一个问题。 与JavaScript客户端直传实践的原理相同,小程序上传文件到OSS也是利用OS…

    2023年12月10日
  • 阿里云对象存储OSS使用最后一次修改时间的生命周期规则结合版本控制降低存储成本-云淘科技

    存储空间(Bucket)开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。当Bucket累积了大量的历史版本或者过期删除标记时,您可以结合生命周期规则删除不必要的历史版本以及过期删除标记,从而减少存储成本并有效提升列举Object的性能。 前提条件 目标Bucket已开启版本控制。详情请参见开启版本控制。 场景说明 当目标存储空间exam…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSC++分片上传-云淘科技

    OSS提供的分片上传(Multipart Upload)功能,将要上传的较大文件(Object)分成多个分片(Part)来分别上传,上传完成后再调用CompleteMultipartUpload接口将这些Part组合成一个Object来达到断点续传的效果。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSS常见问题-云淘科技

    本文介绍在使用阿里云云监控产品监控OSS数据时遇到的一些常见问题及解决方案。 OSS和云监控是两个独立的产品,OSS将数据推送至云监控,由云监控产品进行分析处理。 OSS控制台上看到的存储容量监控以及带宽流量监控来自于云监控产品的数据。 OSS的数据推送到云监控会延迟2~3小时,同时云监控在接收OSS数据时存在窗口期,单次数据推送的时间间隔不能超过5分钟。如…

    2023年12月10日
  • 阿里云对象存储OSSlistpart(列举碎片)-云淘科技

    listpart命令用于列举未完成分片上传的文件(Object)包含的碎片(Part)信息。 说明 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参见命令行工具ossutil快速入门。 关于分片上传的更多信息,请参见分片上传。 命令格式 ./ossutil64 listpart …

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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