シンボリックリンクを使用すると、バケット内で頻繁に使用されるオブジェクトに簡単にアクセスできます。シンボリックリンクを作成すると、Windows のショートカットと同様の方法でターゲットオブジェクトにアクセスできます。
注意事項
このトピックのサンプルコードを実行する前に、カスタムドメイン名やセキュリティトークンサービス (STS) を使用するなどの方法で OSSClient インスタンスを作成する必要があります。 詳細については、「初期化 (Android SDK)」をご参照ください。
シンボリックリンクの作成
次のコードは、シンボリックリンクを作成する方法の例です。
// リクエストを構築します。
PutSymlinkRequest putSymlink = new PutSymlinkRequest();
// バケット名を指定します。
putSymlink.setBucketName("yourBucketName");
// シンボリックリンク名を指定します。
putSymlink.setObjectKey("yourSymLink");
// シンボリックリンクのターゲットオブジェクト名を指定します。
putSymlink.setTargetObjectName("yourTargetObjectName");
ObjectMetadata metadata = new ObjectMetadata();
// 同じ名前のオブジェクトの上書きを禁止するかどうかを指定します。 この例では、このパラメーターは true に設定され、上書きが禁止されます。
//metadata.setHeader("x-oss-forbid-overwrite", "true");
// オブジェクトのアクセス権限を指定します。 この例では、アクセス権限は非公開に設定されています。
//metadata.setHeader("x-oss-object-acl", "private");
// オブジェクトのストレージクラスを指定します。 この例では、ストレージクラスは標準ストレージに設定されています。
//metadata.setHeader("x-oss-storage-class", "Standard");
putSymlink.setMetadata(metadata);
OSSAsyncTask task = oss.asyncPutSymlink(putSymlink, new OSSCompletedCallback<PutSymlinkRequest, PutSymlinkResult>() {
@Override
public void onSuccess(PutSymlinkRequest request, PutSymlinkResult result) {
Log.d("PutSymlink", "PutSymlink success");
}
@Override
public void onFailure(PutSymlinkRequest request, ClientException clientException,
ServiceException serviceException) {
// リクエストエラー。
if (clientException != null) {
// クライアント側の例外 (ネットワーク例外など)。
clientException.printStackTrace();
}
if (serviceException != null) {
// サーバー側の例外。
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
task.waitUntilFinished();シンボリックリンクが指すオブジェクトファイル名の取得
シンボリックリンクに関する情報を取得するには、そのシンボリックリンクに対する読み取り権限が必要です。次のコードは、シンボリックリンクが指すオブジェクトファイル名を取得する方法の例です。
// リクエストを構築します。
GetSymlinkRequest getSymlink = new GetSymlinkRequest();
// バケット名を指定します。
getSymlink.setBucketName("yourBucketName");
// シンボリックリンク名を指定します。
getSymlink.setObjectKey("yourSymLink");
OSSAsyncTask task = oss.asyncGetSymlink(getSymlink, new OSSCompletedCallback<GetSymlinkRequest,
GetSymlinkResult>() {
@Override
public void onSuccess(GetSymlinkRequest request, GetSymlinkResult result) {
OSSLog.logInfo("targ::"+result.getTargetObjectName());
}
@Override
public void onFailure(GetSymlinkRequest request, ClientException clientException,
ServiceException serviceException) {
OSSLog.logError("error: "+serviceException.getRawMessage());
}
});
task.waitUntilFinished();関連ドキュメント
シンボリックリンクの完全なサンプルコードについては、GitHub の例をご参照ください。
シンボリックリンクを作成するための API 操作の詳細については、「PutSymlink」をご参照ください。
シンボリックリンクを取得するための API 操作の詳細については、「GetSymlink」をご参照ください。
OSSClient インスタンスを初期化する方法の詳細については、「Android 用の OSSClient インスタンスの初期化」をご参照ください。