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

Object Storage Service:ロギング (PHP SDK V2)

最終更新日:Mar 21, 2026

Object Storage Service (OSS) は、バケットへのすべてのリクエストに対してアクセスログを生成します。ロギング機能は、これらのログを 1 時間ごとのファイルとして、固定の命名規則を使用してターゲットバケットに書き込みます。

すべての例では、パブリックエンドポイントを持つ中国 (杭州) リージョン (cn-hangzhou) を使用します。同じリージョン内の別の Alibaba Cloud サービスから OSS にアクセスするには、代わりに内部エンドポイントを使用します。リージョンとエンドポイントの完全なリストについては、「OSS のリージョンとエンドポイント」をご参照ください。

前提条件

開始する前に、以下を確認してください:

  • 各操作に必要な権限:RAM ユーザーにこれらの権限を付与するには、「RAM ユーザーへのカスタムポリシーのアタッチ」をご参照ください。

    操作必要な権限
    ロギングの有効化oss:PutBucketLogging
    ログストレージ設定の表示oss:GetBucketLogging
    ロギングの無効化oss:DeleteBucketLogging
    ユーザー定義ログフィールドのクエリoss:GetUserDefinedLogFieldsConfig
  • AccessKey ペアで OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていること。

対象となる操作

操作API メソッド説明
ロギングの有効化putBucketLoggingバケットのロギングを設定し、ログファイルのターゲットバケットとプレフィックスを設定します
ログストレージ設定の表示getBucketLoggingバケットの現在のログストレージ設定を返します
ロギングの無効化deleteBucketLoggingバケットからログストレージ設定を削除します
ユーザー定義ログフィールドの設定putUserDefinedLogFieldsConfigリアルタイムログでキャプチャするカスタムリクエストヘッダーまたはクエリパラメーターを設定します
ユーザー定義ログフィールドのクエリgetUserDefinedLogFieldsConfigバケットの現在のユーザー定義ログフィールド設定を返します
ユーザー定義ログフィールドの削除deleteUserDefinedLogFieldsConfigバケットからユーザー定義ログフィールド設定を削除します

ロギングの有効化

PutBucketLogging を呼び出してロギングを有効にし、OSS がログファイルを書き込む場所を指定します。

<?php

// Composer のオートロードを介して SDK の依存関係をロードします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数を定義します。
$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

// 環境変数 (OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET) から認証情報をロードします。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

// ロギングの設定:ログを "log/" プレフィックスで同じバケットに書き込みます。
$request = new Oss\Models\PutBucketLoggingRequest(
    bucket: $bucket,
    bucketLoggingStatus: new Oss\Models\BucketLoggingStatus(
        loggingEnabled: new Oss\Models\LoggingEnabled(
            targetBucket: $bucket, // ログファイルのターゲットバケット。
            targetPrefix: 'log/'   // すべてのログファイル名に適用されるプレフィックス。
        )
    )
);

$result = $client->putBucketLogging($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

主要なパラメーター

パラメーター説明
targetBucketOSS がログファイルを書き込むバケット。my-log-bucket
targetPrefixすべてのログファイル名に追加されるプレフィックス。これを使用して、ターゲットバケット内のログを整理します。log/

ログストレージ設定の表示

GetBucketLogging を呼び出して、バケットのログストレージ設定を取得します。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\GetBucketLoggingRequest(
    bucket: $bucket
);

$result = $client->getBucketLogging($request);

printf(
    'status code: '    . $result->statusCode . PHP_EOL .
    'request id: '     . $result->requestId  . PHP_EOL .
    'logging status: ' . var_export($result->bucketLoggingStatus, true) . PHP_EOL
);

返されるフィールド

フィールド説明
statusCodeHTTP 応答のステータスコード
requestIdトラブルシューティングに使用されるリクエストの一意の ID
bucketLoggingStatus現在のロギングの構成を含むオブジェクトで、targetBucket および targetPrefix

ロギングの無効化

DeleteBucketLogging を呼び出して、バケットからログストレージ設定を削除します。設定が削除されると、OSS はログファイルの書き込みを停止します。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\DeleteBucketLoggingRequest(
    bucket: $bucket
);

$result = $client->deleteBucketLogging($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

ユーザー定義ログフィールドの設定

PutUserDefinedLogFieldsConfig を呼び出して、リアルタイムログに追加のコンテキストをキャプチャします。これにより、OSS リクエストから特定のリクエストヘッダーまたはクエリパラメーターを user_defined_log_fields フィールドに記録し、後で分析することができます。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

// リアルタイムログでキャプチャするクエリパラメーターとリクエストヘッダーを指定します。
$request = new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
    bucket: $bucket,
    userDefinedLogFieldsConfiguration: new Oss\Models\UserDefinedLogFieldsConfiguration(
        new Oss\Models\LoggingParamSet(parameters: ['param1', 'params2']), // キャプチャするクエリパラメーター。
        new Oss\Models\LoggingHeaderSet(headers: ['header1', 'header2'])   // キャプチャするリクエストヘッダー。
    )
);

$result = $client->putUserDefinedLogFieldsConfig($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

主要なパラメーター

パラメータークラス説明
parametersLoggingParamSetOSS リクエストからキャプチャするクエリパラメーター名['param1', 'params2']
headersLoggingHeaderSetOSS リクエストからキャプチャするリクエストヘッダー名['header1', 'header2']

ユーザー定義ログフィールドのクエリ

GetUserDefinedLogFieldsConfig を呼び出して、バケットの現在のユーザー定義ログフィールド設定を取得します。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\GetUserDefinedLogFieldsConfigRequest(bucket: $bucket);

$result = $client->getUserDefinedLogFieldsConfig($request);

printf(
    'status code: '               . $result->statusCode . PHP_EOL .
    'request id: '                . $result->requestId  . PHP_EOL .
    'user defined log fields config: ' . var_export($result->userDefinedLogFieldsConfiguration, true)
);

返されるフィールド

フィールド説明
statusCodeHTTP 応答のステータスコード
requestIdリクエストの一意の ID
userDefinedLogFieldsConfiguration設定された LoggingParamSet (クエリパラメーター) と LoggingHeaderSet (リクエストヘッダー) を含むオブジェクト

ユーザー定義ログフィールドの削除

DeleteUserDefinedLogFieldsConfig を呼び出して、バケットからユーザー定義ログフィールド設定を削除します。

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'バケットが配置されているリージョン。', 'required' => True],
    "endpoint" => ['help' => '他のサービスが OSS にアクセスするために使用できるドメイン名。', 'required' => False],
    "bucket"   => ['help' => 'バケットの名前。', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\DeleteUserDefinedLogFieldsConfigRequest(bucket: $bucket);
$result  = $client->deleteUserDefinedLogFieldsConfig($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

次のステップ