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

Object Storage Service:ロギング

最終更新日:Feb 27, 2024

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

使用上の注意

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

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

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

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

  • OSS-HDFSの可用性を維持し、データの汚染を防ぐために、Log Prefixに設定しないでください。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。 -の値は匿名アクセスを指定します。

    API 操作

    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に変換されます。

    • Archive: ストレージクラスがArchiveに変換されます。

    • コールドアーカイブ: ストレージクラスがコールドアーカイブに変換されます。

    • DeepCold Archive: ストレージクラスはDeep Cold Archiveに変換されます。

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

    TransmissionAccelerationAccessPoint

    -

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

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

    AccessKeyID

    LTAI4FrfJPUSoKm4JHb5 ****

    要求者のAccessKey ID。

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

    • ツールまたはOSS SDKを使用して長期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. [Logging] タブで、[Logging] をオンにし、宛先バケットとログストレージのディレクトリを指定します。

    • ログストレージバケット: ドロップダウンリストからバケットを選択します。 同じ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\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、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";
// ロギングを有効にするソースバケットの名前を指定します。 例: examplebucket. 
$bucket= "examplebucket";

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

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

    // バケットのロギングを有効にします。 
    $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>() {
    @オーバーライド
    public void onSuccess(PutBucketLoggingRequestリクエスト, PutBucketLoggingResult結果) {
        OSSLog.logInfo("code::" + result.getStatusCode());
    }

    @オーバーライド
    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によって返された値に基づいて、リクエストの中断の原因を特定できます。