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

Object Storage Service:PHPでシンボリックリンクを管理する

最終更新日:Mar 11, 2024

シンボリックリンクはWindowsのファイルショートカットのように機能し、Object Storage Service (OSS) の関連オブジェクトにすばやくアクセスできます。

使用上の注意

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。

  • シンボリックリンクを作成するには、oss:PutObject権限が必要です。 シンボリックリンクをクエリするには、oss:GetObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

シンボリックリンクの作成

次のサンプルコードは、シンボリックリンクを作成する方法の例を示しています。

<?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();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 ビジネス要件に基づいてエンドポイントを指定します。 
$end point = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket. 
$bucket= "examplebucket";
// シンボリックリンクを指すオブジェクトの名前を指定します。 例: exampleobject.txt。 
$object = "exampleobject.txt";
// シンボリックリンクの名前を指定します。 例: examplesymlink.txt。 
$symlink = "examplesymlink.txt";

$options[OssClient::OSS_HEADERS] =配列 (
    // シンボリックリンクと同じ名前のオブジェクトを上書きするかどうかを指定します。 この例では、このパラメーターはtrueに設定されています。これは、同じ名前のオブジェクトを上書きできないことを示します。 
    'x-oss-forbid-overwrite'=>"true" 、
    // オブジェクトのACLを指定します。 この例では、このパラメーターはprivateに設定されています。これは、オブジェクトの所有者と許可されたユーザーのみがオブジェクトに対する読み取りおよび書き込み権限を持っていることを示します。 
    'x-oss-object-acl' =>"private" 、
    // オブジェクトのストレージクラスを指定します。 この例では、ストレージクラスはStandardに設定されています。 
    'x-oss-storage-classs'=>"標準"
);
try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);
    $ossClient->putSymlink($bucket、$symlink、$object、$options);
} catch (OssException $e) {
    printf($e->getMessage()) 。 "\n");
    戻ります。} 

シンボリックリンクが指すオブジェクトの名前を照会する

シンボリックリンクを照会するには、シンボリックリンクの読み取り権限が必要です。 次のサンプルコードは、シンボリックリンクを照会する方法と、シンボリックリンクが指すオブジェクトの名前の例を示しています。

<?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();
// この例では、中国 (杭州) リージョンのエンドポイントが使用されます。 ビジネス要件に基づいてエンドポイントを指定します。 
$end point = "http://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 
$bucket= "examplebucket";
// シンボリックリンクの名前を指定します。 
$symlink = "examplesymlink.txt";
try {
    $config=配列 (
        "provider" => $provider、
        "endpoint" => $end ポイント、
    );
    $ossClient = new OssClient($config);
    // シンボリックリンクと、シンボリックリンクが指すオブジェクトの名前を照会します。 
    $Symlinks = $ossClient->getSymlink($bucket、$symlink);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage()) 。 "\n");
    戻ります。}
print(__FUNCTION__) 。 ": OK" 。 "\n");
var_dump($Symlinks); 

参考資料

  • シンボリックリンクの管理に使用する完全なサンプルコードについては、『GitHub』をご参照ください。

  • シンボリックリンクを作成するために呼び出すことができるAPI操作の詳細については、「PutSymlink」をご参照ください。

  • シンボリックリンクを照会するために呼び出すことができるAPI操作の詳細については、「GetSymlink」をご参照ください。