すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:ロギング

最終更新日:Jul 04, 2025

Object Storage Service (OSS) リソースにアクセスすると、多数のログが生成されます。バケットのロギングを有効化して構成すると、OSS は事前定義された命名規則に基づいて 1 時間ごとにアクセスログを生成し、特定のバケットに保存します。 Simple Log Service を使用するか、Spark クラスタを構築してログを分析できます。

使用上の注意

  • ログが生成されるソースバケットとログが保存されるデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。ただし、デスティネーションバケットは、ソースバケットと同じ Alibaba Cloud アカウントに属し、同じリージョンに配置されている必要があります。

  • ログは 48 時間以内に生成されます。特定の 1 時間以内に受信されたリクエストは、前または次の時間のログオブジェクトに記録される場合があります。その結果、特定の期間のログオブジェクトは、その期間のロギングの整合性と即時性を保証できません。

  • ロギングを無効にする前に、OSS は 1 時間ごとにログオブジェクトを生成します。ストレージコストを削減するために、不要になったログオブジェクトを削除することをお勧めします。

    ライフサイクルルールを構成して、ログオブジェクトを定期的に削除できます。詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。

  • OSS-HDFS の可用性を維持し、データの汚染を防ぐために、OSS-HDFS が有効になっているバケットのロギングを構成する際に、[ログプレフィックス].dlsdata/ に設定しないでください。

  • OSS はログの末尾に特定のフィールドを追加します。ログ処理ツールを開発する際は、潜在的な互換性の問題を考慮することをお勧めします。

ログオブジェクトの命名規則

ログオブジェクトには、次の命名規則が適用されます。

<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString

フィールド

説明

TargetPrefix

ログオブジェクトの名前に含まれるプレフィックス。

SourceBucket

ログオブジェクトが生成されるソースバケットの名前。

YYYY-mm-DD-HH-MM-SS

ログオブジェクトが作成された時刻。このフィールドの値は、年、月、日、時、分、秒を順番に示します。

UniqueString

ログオブジェクトを一意に識別するために OSS によって生成される文字列。

ログ形式と例

  • ログ形式

    OSS アクセスログには、リクエスト者とアクセスされたリソースに関する情報が次の形式で含まれています。

    RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequesterAliyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode" RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID"

    フィールド

    説明

    RemoteIP

    192.168.0.1

    リクエスト者の IP アドレス。

    Reserved

    -

    予約フィールド。値は - に固定されています。

    Reserved

    -

    予約フィールド。値は - に固定されています。

    Time

    03/Jan/2021:14:59:49 +0800

    OSS がアクセスリクエストを受信した時点。

    RequestURL

    GET /example.jpg HTTP/1.0

    クエリ文字列を含むリクエスト URL。

    OSS は x- で始まるクエリ文字列パラメータを無視します。ただし、このパラメータはログに記録されます。 x- で始まるクエリ文字列パラメータを使用してリクエストにタグを付け、そのタグを使用してリクエストのログを識別できます。

    HTTPStatus

    200

    OSS によって返される HTTP ステータスコード。

    SentBytes

    999131

    リクエストによって生成されたアウトバウンドトラフィック。単位:バイト。

    RequestTime

    127

    リクエストに消費された時間。単位:ミリ秒。

    Referer

    http://www.aliyun.com/product/oss

    HTTP リクエストの Referer ヘッダー。

    UserAgent

    curl/7.15.5

    HTTP リクエストの User-Agent ヘッダー。

    HostName

    examplebucket.oss-cn-hangzhou.aliyuncs.com

    アクセスするドメイン名。

    RequestID

    5FF16B65F05BC932307A3C3C

    リクエスト ID。

    LoggingFlag

    true

    ロギングが有効になっているかどうかを示します。値:

    • true

    • false

    RequesterAliyunID

    16571836914537****

    リクエスト者のユーザー ID。値 - は匿名アクセスを示します。

    Operation

    GetObject

    リクエストのタイプ。

    BucketName

    examplebucket

    アクセスするバケットの名前。

    ObjectName

    example.jpg

    アクセスするオブジェクトの名前。

    ObjectSize

    999131

    アクセスするオブジェクトのサイズ。単位:バイト。

    ServerCostTime

    88

    リクエストの処理に OSS が消費した時間。単位:ミリ秒。

    ErrorCode

    -

    OSS が返すエラーコード。値 - は、エラーコードが返されていないことを示します。

    RequestLength

    302

    リクエストの長さ。単位:バイト。

    UserID

    16571836914537****

    バケットオーナーの ID。

    DeltaDataSize

    -

    オブジェクトのサイズ変更。値 - は、このリクエストにオブジェクトへの書き込み操作が含まれていないことを示します。

    SyncRequest

    -

    リクエストのタイプ。値:

    • -: 一般的なリクエスト。

    • cdn: CDN 原点復帰リクエスト。

    • lifecycle: ライフサイクルルールによるストレージタイプの変換またはオブジェクトの削除リクエスト。

    StorageClass

    Standard

    アクセスするオブジェクトのストレージタイプ。値:

    • Standard: ストレージタイプは標準です。

    • IA: ストレージタイプは低頻度アクセス (IA) です。

    • Archive: ストレージタイプはアーカイブです。

    • Cold Archive: ストレージタイプはコールドアーカイブです。

    • DeepCold Archive: ストレージタイプはディープコールドアーカイブです。

    • -: オブジェクトのストレージタイプは取得されていません。

    TargetStorageClass

    -

    ライフサイクルルールに基づいて、または CopyObject 操作を呼び出すことによって、オブジェクトが移動されるストレージタイプ。値:

    • Standard: オブジェクトは標準に移動されます。

    • IA: オブジェクトは IA に移動されます。

    • Archive: オブジェクトはアーカイブに移動されます。

    • Cold Archive: オブジェクトはコールドアーカイブに移動されます。

    • DeepCold Archive: オブジェクトはディープコールドアーカイブに移動されます。

    • -: ストレージタイプの変換は含まれていません。

    TransmissionAccelerationAccessPoint

    -

    リクエスト者がアクセラレーションエンドポイントを使用してデスティネーションバケットにアクセスしたリージョン。たとえば、リクエスト者が中国 (杭州) リージョンからのアクセラレーションエンドポイントを使用してバケットにアクセスする場合、TransmissionAccelerationAccessPoint の値は cn-hangzhou です。

    - は、アクセラレーションエンドポイントが使用されていないか、リクエスト者がデスティネーションバケットと同じリージョンからデスティネーションバケットにアクセスしていることを示します。

    AccessKeyID

    LTAI****************

    リクエスト者の AccessKey ID。

    • リクエストが OSS コンソールから開始された場合、TMP で始まる一時 AccessKey ID が表示されます。

    • ツールまたは OSS SDK を使用して、長期 AccessKey ペアに基づいてリクエストが開始された場合、AccessKey ペアの AccessKey ID が表示されます。値の例:LTAI****************

    • Security Token Service (STS) によって提供される一時アクセス認証情報に基づいてリクエストが開始された場合、STS で始まる一時 AccessKey ID が表示されます。

    説明

    - は、リクエストが匿名であることを示します。

  • 192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "http://www.aliyun.com/product/oss" "curl/7.15.5" "examplebucket.oss-cn-hangzhou.aliyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI****************"

    ログオブジェクトが OSS の指定されたバケットに保存された後、Simple Log Service を使用してログオブジェクトを分析できます。ログオブジェクトを分析する前に、ログオブジェクトを Simple Log Service にインポートする必要があります。データのインポート方法の詳細については、「OSS から Simple Log Service へのデータのインポート」をご参照ください。 Simple Log Service の分析機能の詳細については、「ログ分析の概要」をご参照ください。

方法

OSS コンソールの使用

  1. OSS コンソール にログオンします。

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。 バケットリスト ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションツリーで、[ロギング] > [ロギング] を選択します。

  4. [ロギング] タブで、[ロギング] をオンにして、ログを保存するバケットとログ名のプレフィックスを指定します。

    • [ログ保存バケット]: ドロップダウンリストからバケットを選択します。ロギングが有効になっているのと同じバケット、または同じ Alibaba Cloud アカウント内でロギングが有効になっているバケットと同じリージョンにある別のバケットを選択できます。

    • [ログプレフィックス]: ログを保存するディレクトリを入力します。このパラメータを指定すると、ログは指定されたバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログは指定されたバケットのルートディレクトリに保存されます。たとえば、log/ を [ログプレフィックス] パラメータの値として入力すると、ログオブジェクトは log/ ディレクトリに保存されます。

  5. [保存] をクリックします。

OSS SDK の使用

次のサンプルコードは、一般的なプログラミング言語の OSS SDK を使用してロギングを構成する方法の例を示しています。他のプログラミング言語の OSS SDK を使用してロギングを構成する方法の詳細については、「概要」をご参照ください。

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.SetBucketLoggingRequest;

public class Demo {

    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";
        // ログオブジェクトを保存するデスティネーションバケットの名前を指定します。ソースバケットとデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。
        String targetBucketName = "yourTargetBucketName";
        // ログオブジェクトを保存するディレクトリを log/ に設定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。
        String targetPrefix = "log/";
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            SetBucketLoggingRequest request = new SetBucketLoggingRequest(bucketName);
            request.setTargetBucket(targetBucketName);
            request.setTargetPrefix(targetPrefix);
            ossClient.setBucketLogging(request);
        } 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();
            }
        }
    }
}
<?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';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// ロギングを有効にするソースバケットの名前を指定します。例:examplebucket。
$bucket= "examplebucket";

$option = array();
// ログオブジェクトが保存されるデスティネーションバケットの名前を指定します。
$targetBucket = "destbucket";
// ログオブジェクトが保存されるディレクトリを指定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。
$targetPrefix = "log/";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    // ソースバケットのロギングを有効にします。
    $ossClient->putBucketLogging($bucket, $targetBucket, $targetPrefix, $option);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");            
const OSS = require('ali-oss')
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,
  authorizationV4: true,
  // バケットの名前を指定します。
  bucket: 'yourbucketname'
});
async function putBucketLogging () {
  try {
     const result = await client.putBucketLogging('bucket-name', 'logs/');
     console.log(result)
  } catch (e) {
    console.log(e)
  }
}
putBucketLogging();
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import BucketLogging

// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
// エンドポイントにマップするリージョンの ID を指定します。例:cn-hangzhou。署名アルゴリズム V4 を使用する場合は、このパラメータが必要です。
region = "cn-hangzhou"

// バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

// 生成されたログオブジェクトが現在のバケットに保存されるように指定します。
// ログオブジェクトが保存されるディレクトリを log/ に設定します。このパラメータを指定すると、ログオブジェクトはバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはバケットのルートディレクトリに保存されます。
// バケットのロギングを有効にします。
logging = bucket.put_bucket_logging(BucketLogging(bucket.bucket_name, 'log/'))
if logging.status == 200:
    print("Enable access logging")
else:
    print("request_id:", logging.request_id)
    print("resp : ", logging.resp.response)            
using Aliyun.OSS;
using Aliyun.OSS.Common;

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。実際のエンドポイントを指定してください。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// ロギングを有効にするソースバケットの名前を指定します。例:examplebucket。
var bucketName = "examplebucket";
// ログオブジェクトが保存されるデスティネーションバケットの名前を指定します。ソースバケットとデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。
var targetBucketName = "destbucket";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

// ClientConfiguration インスタンスを作成し、要件に基づいてデフォルトパラメータを変更します。
var conf = new ClientConfiguration();

// 署名アルゴリズム V4 を使用します。
conf.SignatureVersion = SignatureVersion.V4;

// OSSClient インスタンスを作成します。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // ログオブジェクトが log/ ディレクトリに保存されるように指定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。
    var request = new SetBucketLoggingRequest(bucketName, targetBucketName, "log/");
    // ソースバケットのロギングを有効にします。
    client.SetBucketLogging(request);
    Console.WriteLine("Set bucket:{0} Logging succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}
PutBucketLoggingRequest request = new PutBucketLoggingRequest();
// ロギングを有効にするソースバケットの名前を指定します。
request.setBucketName("yourSourceBucketName");
// ログを保存するデスティネーションバケットの名前を指定します。
// ソースバケットとデスティネーションバケットは同じリージョンに配置されている必要があります。ソースバケットとデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。
request.setTargetBucketName("yourTargetBucketName");
// ログが保存されるディレクトリを指定します。
request.setTargetPrefix("<yourTargetPrefix>");

OSSAsyncTask task = oss.asyncPutBucketLogging(request, new OSSCompletedCallback<PutBucketLoggingRequest, PutBucketLoggingResult>() {
    @Override
    public void onSuccess(PutBucketLoggingRequest request, PutBucketLoggingResult result) {
        OSSLog.logInfo("code::"+result.getStatusCode());
    }

    @Override
    public void onFailure(PutBucketLoggingRequest request, ClientException clientException, ServiceException serviceException) {
         OSSLog.logError("error: "+serviceException.getRawMessage());
    }
});
task.waitUntilFinished();
package main

import (
	"fmt"
	"os"

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

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 に設定します。実際のエンドポイントを指定してください。
	// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。実際のリージョンを指定してください。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名アルゴリズムのバージョンを指定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// ロギングを有効にするソースバケットの名前を指定します。例:examplebucket。
	bucketName := "examplebucket"
	// ログオブジェクトを保存するデスティネーションバケットの名前を指定します。ソースバケットとデスティネーションバケットは同じバケットでも異なるバケットでもかまいませんが、同じリージョンに配置されている必要があります。
	targetBucketName := "destbucket"
	// ログオブジェクトを保存するディレクトリを log/ に設定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。
	targetPrefix := "log/"

	// バケットのロギングを有効にします。
	err = client.SetBucketLogging(bucketName, targetBucketName, targetPrefix, true)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* OSS にアクセスするために使用されるアカウントに関する情報を初期化します。 */
            
    /* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。 */
    std::string Region = "yourRegion";
    /* ロギングを有効にするソースバケットの名前を指定します。例:examplebucket。 */
    std::string BucketName = "examplebucket";
    /* ログオブジェクトが保存されるデスティネーションバケットの名前を指定します。ソースバケットとデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。 */
    std::string TargetBucketName = "destbucket";
    /* ログオブジェクトが保存されるディレクトリを log/ に設定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。 */
    std::string TargetPrefix  ="log/";

    /* ネットワークリソースなどのリソースを初期化します。 */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);  

    /* バケットのロギングを有効にします。 */
    SetBucketLoggingRequest request(BucketName, TargetBucketName, TargetPrefix);
    auto outcome = client.SetBucketLogging(request);

    if (!outcome.isSuccess()) {
        /* 例外を処理します。 */
        std::cout << "SetBucketLogging fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* ネットワークリソースなどのリソースを解放します。 */
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。例:examplebucket。 */
const char *bucket_name = "examplebucket";
/* ログオブジェクトが保存されるデスティネーションバケットの名前を指定します。ソースバケットとデスティネーションバケットは、同じバケットでも異なるバケットでもかまいません。 */
const char *target_bucket_name = "yourTargetBucketName";
/* ログオブジェクトが保存されるディレクトリを指定します。このパラメータを指定すると、ログオブジェクトはデスティネーションバケットの指定されたディレクトリに保存されます。このパラメータを指定しない場合、ログオブジェクトはデスティネーションバケットのルートディレクトリに保存されます。 */
const char *target_logging_prefix = "yourTargetPrefix";
/* バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* char* 文字列を使用して aos_string_t 型のデータを初期化します。 */
    aos_str_set(&options->config->endpoint, endpoint);
    /* 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が構成されていることを確認してください。 */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // 2 つの追加パラメータを指定します。
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* CNAME を使用するかど
require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # この例では、中国 (杭州) リージョンのエンドポイントを使用しています。実際のエンドポイントを指定してください。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# バケットの名前を指定します。例: examplebucket。
bucket = client.get_bucket('examplebucket')
# logging_bucket を、ログオブジェクトが格納される保存先バケットに設定します。
# my-log を、ログオブジェクトが格納されるディレクトリに設定します。このパラメーターを指定すると、ログオブジェクトは保存先バケットの指定されたディレクトリに格納されます。このパラメーターを指定しない場合、ログオブジェクトは保存先バケットのルートディレクトリに格納されます。
bucket.logging = Aliyun::OSS::BucketLogging.new(
  enable: true, target_bucket: 'logging_bucket', target_prefix: 'my-log')

ossutil を使用する

ossutil を使用してロギングを有効にできます。詳細については、「ロギングを有効にする」をご参照ください。

次の例は、examplebucket のロギングを有効にする方法を示しています。ログファイルのプレフィックスは MyLog- で、アクセスログを保存するバケットは dest-bucket です。

ossutil api put-bucket-logging --bucket examplebucket --bucket-logging-status "{\"LoggingEnabled\":{\"TargetBucket\":\"destBucket\",\"TargetPrefix\":\"MyLog-\"}}"

詳細については、「put-bucket-logging」をご参照ください。

関連 API 操作

上記のメソッドは基本的に RESTful API に基づいて実装されており、高度なカスタマイズが必要なビジネス要件の場合は、API を直接呼び出すことができます。 API を直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「PutBucketLogging」をご参照ください。

よくある質問

OSS アクセスログで中断されたリクエストをクエリできますか?

いいえ、OSS アクセスログで中断されたリクエストをクエリすることはできません。OSS は、アクセスログに中断されたリクエストを記録しません。OSS SDK を使用してリクエストを送信する場合、OSS SDK から返される値に基づいてリクエストの中断の原因を特定できます。