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

Object Storage Service:ロギング

最終更新日:May 20, 2024

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

使用上の注意

  • ログが生成されるソースバケットとログが保存される宛先バケットは、同じバケットでも異なるバケットでもよい。 ただし、宛先バケットは同じAlibaba Cloudアカウントに属し、ソースバケットと同じリージョンにある必要があります。

  • ログオブジェクトは数時間以内に生成されます。 特定の1時間の期間内に受信された要求は、前の1時間または次の1時間のログオブジェクトに記録され得る。 その結果、特定の期間のログオブジェクトは、その期間のログの整合性と即時性を保証することができません。

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

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

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

  • OSSは、ログの最後に特定のフィールドを追加します。 ログ処理ツールを開発するときは、潜在的な互換性の問題を考慮することを推奨します。

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

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

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

フィールド

説明

TargetPrefix

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

SourceBucket

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

YYYY-mm-DD-HH-MM-SS

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

UniqueString

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

ログの形式と例

  • ログフォーマット

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

    RemoteIP予約済み予約時間 "RequestURL" HTTPStatus SentBytes "RequestTime" Referer "" UserAgent "" HostName "" RequestID "" LoggingFlag "" RequesterAliyunID "" Operation "" BucketName "" ObjectName "TransfAccessIDポイントUserID" DeltaeasionClass "StorcageClass" SynageCode"

    フィールド

    説明

    RemoteIP

    192.168.0.1

    要求者のIPアドレス。

    予約済み

    -

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

    予約済み

    -

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

    時間

    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

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

    リファラー

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

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

    UserAgent

    curl/7.15.5

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

    ホスト名

    examplebucket.oss-cn-hangzhou.aliyuncs.com

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

    RequestID

    5FF16B65F05BC932307A3C3C

    リクエスト ID。

    LoggingFlag

    true

    ロギングが有効かどうかを示します。 値:

    • true

    • false

    RequesterAliyunID

    16571836914537 ****

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

    操作

    GetObject

    リクエストのタイプ。

    BucketName

    examplebucket

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

    オブジェクト名

    example.jpg

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

    ObjectSize

    999131

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

    ServerCostTime

    88

    OSSがリクエストを処理するために消費する時間。 単位:ミリ秒。

    エラーコード

    -

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

    RequestLength

    302

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

    ユーザーID

    16571836914537 ****

    バケット所有者のID。

    DeltaDataSize

    -

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

    SyncRequest

    cdn

    リクエストにAlibaba Cloud CDN back-to-originルーティングが含まれるかどうかを示します。 値:

    • cdn

    • -

    StorageClass

    標準

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

    • Standard: ストレージクラスはStandardです。

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

    • Archive: ストレージクラスはArchiveです。

    • コールドアーカイブ: ストレージクラスはコールドアーカイブです。

    • DeepCold Archive: ストレージクラスはDeep Cold Archiveです。

    • -: オブジェクトのストレージクラスが取得されていません。

    TargetStorageClass

    -

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

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

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

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

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

    • DeepCold Archive: オブジェクトはDeep Cold Archiveに移動されます。

    • -: ストレージクラスの変換は含まれません。

    TransmissionAccelerationAccessPoint

    -

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

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

    AccessKeyID

    LTAI4FrfJPUSoKm4JHb5 ****

    要求者のAccessKey ID。

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

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

    • 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 ****"-"

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

手順

OSSコンソールの使用

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

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

  3. 左側のナビゲーションツリーで、ロギング > ロギング.

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

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

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

  5. クリック保存.

OSS SDKの使用

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

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.SetBucketLoggingRequestをインポートします。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";
        // ログオブジェクトを格納する宛先バケットの名前を指定します。 送信元バケットと送信先バケットは、同じバケットまたは異なるバケットにすることができます。 
        文字列targetBucketName = "yourTargetBucketName";
        // ログオブジェクトを格納するディレクトリをlog /に設定します。 このパラメーターを指定すると、ログオブジェクトは宛先バケットの指定されたディレクトリに保存されます。 このパラメーターを指定しない場合、ログオブジェクトは宛先バケットのルートディレクトリに保存されます。 
        String targetPrefix = "log/";

        // Create an OSSClient instance. 
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            SetBucketLoggingRequest request=新しいSetBucketLoggingRequest(bucketName);
            request.setTargetBucket(targetBucketName);
            request.setTargetPrefix(targetPrefix);
            ossClient.setBucketLogging(request);
        } 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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。OSS\CoreOssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。  
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 
$end point = "yourEndpoint";
// ロギングを有効にするソースバケットの名前を指定します。 例: examplebucket. 
$bucket= "examplebucket";

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

try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);

    // ソースバケットのロギングを有効にします。 
    $ossClient->putBucketLogging($bucket、$targetBucket、$targetPrefix、$option);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}
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、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});
async関数putBucketLogging () {
  try {
     const result = await client.putBucketLogging('bucket-name', 'logs/');
     console.log(result)
  } catch (e) {
    console.log(e)
  }
}
putBucketLogging();
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからBucketLoggingをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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')

# 生成されたログオブジェクトが現在のバケットに保存されることを指定します。 
# ログオブジェクトが格納されているディレクトリをlog /に設定します。 このパラメーターを指定すると、ログオブジェクトはバケットの指定されたディレクトリに保存されます。 このパラメーターを指定しない場合、ログオブジェクトはバケットのルートディレクトリに保存されます。 
# バケットのロギングを有効にします。 
logging = bucket.put_bucket_logging(BucketLogging(bucket.bucket_name, 'log/'))
logging.status == 200の場合:
    print (「アクセスログの有効化」)
else:
    print("request_id:", logging.request_id)
    Aliyun.OSSを使用した印刷 ("resp : ", logging.resp.response)
;
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";
// OSSClientインスタンスを作成します。 
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
    // ログオブジェクトをlog /ディレクトリに保存するように指定します。 このパラメーターを指定すると、ログオブジェクトは宛先バケットの指定されたディレクトリに保存されます。 このパラメーターを指定しない場合、ログオブジェクトは宛先バケットのルートディレクトリに保存されます。 
    var request = new SetBucketLoggingRequest(bucketName, targetBucketName, "log/");
    // ソースバケットのロギングを有効にします。 
    client.SetBucketLogging(request);
    Console.WriteLine("Set bucket:{0} Logging successed", bucketName);
}
キャッチ (OssException ex)
{
    Console.WriteLine("エラー情報で失敗: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
    Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
} 
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リクエスト, PutBucketLoggingResult結果) {
        OSSLog.logInfo("code::" + result.getStatusCode());
    }

    @Override
    public void onFailure(PutBucketLoggingRequest request, ClientException clientException, ServiceException serviceException) {
         OSSLog.logError("error: " + serviceException.getRawMessage());
    }
});
task.waitUntilFinished(); 
パッケージメイン

import (import (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)
    }

    // Create an OSSClient instance. 
    // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際のエンドポイントを指定します。 
    client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) 
    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>
名前空間listaCloud::OSSを使用します。int main(void)
{
    /* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
            
    /* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
    std::string Endpoint = "yourEndpoint";
    /* ロギングを有効にするソースバケットの名前を指定します。 例: examplebucket. */
    std::string BucketName = "examplebucket";
    /* ログオブジェクトが保存されている宛先バケットの名前を指定します。 送信元バケットと送信先バケットは、同じバケットまたは異なるバケットにすることができます。 */
    std::string TargetBucketName = "destbucket";
    /* ログオブジェクトが保存されているディレクトリをlog /に設定します。 このパラメーターを指定すると、ログオブジェクトは宛先バケットの指定されたディレクトリに保存されます。 このパラメーターを指定しない場合、ログオブジェクトは宛先バケットのルートディレクトリに保存されます。 */
    std::string TargetPrefix ="log/";

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

    ClientConfiguration conf;
    /* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClientクライアント (Endpoint, credentialsProvider, conf);  

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

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

    /* ネットワークリソースなどのリソースを解放します。 */
    ShutdownSdk();
    0を返します。} 
#include "oss_api.h"
# 「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";
void init_options(oss_request_options_t * オプション)
{
    options->config = oss_config_create(options->pool);
    /* char * stringを使用して、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"));
    /* CNAMEを使用するかどうかを指定します。 値0は、CNAMEが使用されないことを示す。 */
    options->config->is_cname = 0;
    /* タイムアウト時間などのネットワークパラメーターを指定します。 */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char * argv[])
{
    /* main() でaos_http_io_initializeメソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
    if (aos_http_io_initialize(NULL, 0))! =AOSE_OK) {
        exit(1);
    }
    /* メモリを管理するためのメモリプールを作成します。 aos_pool_tはapr_pool_tと同じです。 メモリプールの作成に使用されるコードは、APRライブラリに含まれています。 */
    aos_pool_t *pool;
    /* メモリプールを作成します。 2番目のパラメーターの値はNULLです。 この値は、プールが他のメモリプールを継承しないことを示します。 */
    aos_pool_create(&pool, NULL);
    /* Create and initialize options. このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curlなどのグローバル構成情報が含まれます。 */
    oss_request_options_t *oss_client_options;
    /* メモリプール内のメモリリソースをオプションに割り当てます。 */
    oss_client_options = oss_request_options_create(pool);
    /* oss_client_optionsを初期化します。 */
    init_options(oss_client_options);
    /* パラメーターを初期化します。 */
    aos_string_t bucket;
    oss_logging_config_content_t *content;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    content = oss_create_logging_rule_content(pool);
    aos_str_set(&content->target_bucket, target_bucket_name);
    aos_str_set(&content->prefix, target_logging_prefix);
    /* ソースバケットのロギングを有効にします。 */
    resp_status = oss_put_bucket_logging(oss_client_options, &bucket, content, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf (「バケットロギングの有効化」);
    } else {
        printf("put bucket logging failed, code:% d, error_code:% s, error_msg:% s, request_id:% s\n" 、
            resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id); 
    }
    /* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
    aos_pool_destroy(pool);
    /* 割り当てられたグローバルリソースを解放します。 */
    aos_http_io_deinitialize();
    0を返します。} 
'aliyun/oss' が必要です

client = Aliyun::OSS::Client.new (
  # この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 実際のエンドポイントを指定します。 
  エンドポイント: '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を使用してロギングを設定できます。 詳細については、「ロギングの有効化」をご参照ください。

OSS APIの使用

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

よくある質問

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

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