Object Storage Service (OSS) は、OSSが受信したリクエストごとに一意のIDを割り当てます。 リクエストのIDを使用して、さまざまなログのリクエストに関する情報を照会できます。 OSSで発生したエラーのトラブルシューティングのためにテクニカルサポートに連絡するときは、失敗したリクエストのIDを提供する必要があります。 テクニカルサポートでは、これらのリクエストIDを使用して問題を見つけて解決できます。 このトピックでは、リクエストのIDを取得する方法について説明します。
OSS SDKを使用したリクエストIDの取得
次のサンプルコードでは、一般的なプログラミング言語でOSS SDKを使用してリクエストIDを取得する方法の例を示します。
com.aliyun.oss.ClientExceptionをインポートします。com.aliyun.oss.OSSをインポートします。impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.OSSClientBuilderをインポートします。com.aliyun.oss.OSSExceptionをインポートします。com.aliyun.oss.mo del.PutObjectRequestをインポートします。com.aliyun.oss.mo del.PutObjectResultをインポートします。java.io. ファイルをインポートします。public classデモ {
public static void main(String[] args) throws Exception {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket.
String bucketName = "examplebucket";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
文字列objectName = "exampledir/exampleobject.txt";
// アップロードするローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。
// デフォルトでは、ローカルファイルのパスが指定されていない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
String filePath= "D :\\ localpath\\examplefile.txt";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// PutObjectRequestオブジェクトを作成します。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName、objectName、new File(filePath));
// 次のサンプルコードは、オブジェクトをアップロードするときにオブジェクトのストレージクラスとACLを指定する方法の例を示しています。
// ObjectMetadata metadata=新しいObjectMetadata();
// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata (メタデータ);
// ローカルファイルをアップロードします。
PutObjectResult result = ossClient.putObject(putObjectRequest);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
<?php
if (is_file(__DIR__) 。 '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__) 。 '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。OSS\Model\StyleConfigを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "yourEndpoint";
// バケットの名前を指定します。
$bucket= "examplebucket";
try {
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$result = $ossClient->getObject($bucket, "demo.txt");
} catch(OssException $e) {
printf($e->getMessage()) 。 "\n");
printf($e->getRequestId()) 。 "\n");
}
const OSS = require('ali-OSS ')
const path=require("path")
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを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: 'examplebucket' 、});
// カスタムリクエストヘッダーを追加します。
const headers = {
// オブジェクトのストレージクラスを指定します。
「x-oss-storage-classs」: 「標準」、
// オブジェクトのアクセス制御リスト (ACL) を指定します。
'x-oss-object-acl': 'private' 、
// オブジェクトのURLを使用してオブジェクトにアクセスする場合は、オブジェクトを添付ファイルとしてダウンロードするように指定します。 この例では、ダウンロードしたオブジェクトの名前はexample.jpgです。
'Content-Disposition': 'attachment; filename="example.txt" '、
// オブジェクトのタグを指定します。 オブジェクトに複数のタグを同時に指定できます。
'x-oss-tagging ': 'Tag1=1&Tag2=2' 、
// PutObject操作が同じ名前のオブジェクトを上書きするかどうかを指定します。 この例では、x-oss-forbid-overwriteパラメーターをtrueに設定します。これは、同じ名前の既存のオブジェクトをアップロードしたオブジェクトで上書きできないことを指定します。
'x-oss-forbid-overwrite': 'true' 、};
async関数put () {
try {
// オブジェクトとローカルファイルのフルパスを指定します。 オブジェクトのフルパスにバケット名を含めないでください。
// ローカルファイルのパスが指定されていない場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。
const result = await client.put('exampleobject.txt ', path.normalize('D :\\ localpath\\examplefile.txt')
// カスタムヘッダーを指定します。
,{headers}
);
console.log (結果);
} catch (e) {
console.log(e);
}
}
put();
# -*- coding: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
トライ:
// ダウンロードしたオブジェクトの名前を指定します。 例: exampleobject.txt。
stream = bucket.get_object ('exampleobject.txt ')
oss2.exceptionsを除く。NoSuchKey as e:
print('status={0}, request_id={1}'.format(e.status, e.request_id))
import (import (import)
"fmt"
"net/http"
"os"
"strings"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
// エラー処理の関数。
func HandleError (エラーエラー) {
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インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
// Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 これらの資格情報を使用してOSSで操作を実行することは、リスクの高い操作です。 RAMユーザーを使用してAPI操作を呼び出したり、ルーチンのO&Mを実行することを推奨します。RAMユーザーを作成するには、RAMコンソールにログインします。
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// バケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
// オブジェクトの名前を指定します。 例: exampleobject.txt。
objectName := "exampleobject.txt"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
var responseHeader http. ヘッダー
// 文字列をアップロードします。
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("ホストID:", err.(oss.ServiceError).HostID)
} else {
// errはoss.ServiceError型ではありません。
fmt.Println("Error:", err)
os.Exit(-1)
}
}
requestId := oss.GetRequestId(responseHeader)
fmt.Println("リクエストID:", requestId)
}
パッケージメイン
ブラウザからオブジェクトに直接アクセスする場合、ブラウザ開発者ツールを使用してリクエストIDを取得する
次の手順は、WindowsのGoogle ChromeからOSSオブジェクトに直接アクセスする場合にリクエストIDを取得する方法を示しています。
ブラウザを開き、
F12
を押します。開発者ツールページで、[ネットワーク] をクリックします。
[名前] タブをクリックし、目的のオブジェクトを選択します。
[ヘッダー] タブをクリックします。 [レスポンスヘッダー] セクションで、x-oss-request-IDからリクエストのidを取得します。
リアルタイムログからリクエストIDを取得する
リクエストIDを取得するには、OSSコンソールでバケットとオブジェクトに対して実行された操作を記録するリアルタイムログを照会します。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、バケットの名前をクリックします。
を選択します。
Ctrl + F
を押し、request_idを入力してリクエストのidを検索します。
ossutilを使用したリクエストIDの取得
ossutilでコマンドを実行すると、返されたログからリクエストIDを取得できます。
LinuxでCLIを使用してリクエストIDを取得する
次の手順は、LinuxでCLIを使用してリクエストIDを取得する方法を示しています。
オブジェクトURLを取得します。
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケットリスト をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションツリーで、 を選択します。 > オブジェクト
目的のオブジェクトを検索し、[操作] 列の [詳細の表示] をクリックします。 次に、[オブジェクトURLのコピー] をクリックします。
次のコマンドを実行して、HTTPレスポンスヘッダーでリクエストIDを取得します。
curl -voa "[$URL]"
[$URL] をコピーしたURLに設定します。
次の図に、返される結果を示します。
OSSコンソールでオブジェクトをアップロードするときに開発者ツールを使用してリクエストIDを取得する
次の手順は、Google Chromeの開発者ツールを使用して、オブジェクトをアップロードするために送信したリクエストのIDを取得する方法を示しています。
ブラウザの開発者ツールを開きます。
ブラウザを開き、
F12
を押します。開発者ツールページで、[ネットワーク] をクリックします。
オブジェクトをアップロードします。
OSSコンソールにログインします。 左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、オブジェクトをアップロードするバケットの名前をクリックします。
左側のナビゲーションツリーで、[オブジェクト管理]> [オブジェクト] を選択します。
オブジェクトをアップロードします。 詳細については、「オブジェクトのアップロード」をご参照ください。
ブラウザの開発者ツールを使用して、アップロードリクエストのIDを取得します。
ブラウザの開発者ツールページで、[名前] タブをクリックし、ステップ2でアップロードしたオブジェクトを選択します。
[ヘッダー] タブをクリックします。 [レスポンスヘッダー] セクションで、x-oss-request-IDからリクエストのidを取得します。