シンボリックリンクを使用すると、バケット内で頻繁に使用するオブジェクトに簡単にアクセスできます。シンボリックリンクを作成すると、Windows のショートカットと同様の方法でターゲットオブジェクトにアクセスできます。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
シンボリックリンクを作成するには、
oss:PutObject権限が必要です。シンボリックリンクを取得するには、oss:GetObject権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
シンボリックリンクの作成
次のコードは、シンボリックリンクを作成する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントが配置されているリージョン (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要ですのでご注意ください。
region = "cn-hangzhou"
# examplebucket を実際のバケット名に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# シンボリックリンクが指すオブジェクトの名前 (例: exampleobject.txt) を指定します。オブジェクトの命名規則の詳細については、「オブジェクト」をご参照ください。
object_name = 'exampleobject.txt'
# シンボリックリンクの名前 (例: examplesymlick.txt) を指定します。
symlink = 'examplesymlick.txt'
# headers = dict()
# シンボリックリンクの作成時に、同じ名前の既存オブジェクトを上書きするかどうかを指定します。この例では、このパラメーターは true に設定されており、上書きが禁止されることを示します。
# headers['x-oss-forbid-overwrite'] = 'true'
# オブジェクトのアクセス制御リスト (ACL) を指定します。この例では、このパラメーターは OBJECT_ACL_PRIVATE に設定されており、オブジェクトが非公開のアクセス権限を持つことを示します。オブジェクト所有者と承認されたユーザーのみがオブジェクトに対する読み取りおよび書き込み権限を持ち、他のユーザーはオブジェクトにアクセスできません。
# headers[OSS_OBJECT_ACL] = oss2.OBJECT_ACL_PRIVATE
# オブジェクトのストレージクラスを指定します。この例では、このパラメーターは BUCKET_STORAGE_CLASS_STANDARD に設定されており、標準ストレージクラスを示します。
# headers['x-oss-storage-class'] = oss2.BUCKET_STORAGE_CLASS_STANDARD
# bucket.put_symlink(object_name, symlink, headers=headers)
# シンボリックリンクを作成します。
bucket.put_symlink(object_name, symlink) ターゲットオブジェクト名の取得
シンボリックリンクを取得するには、そのシンボリックリンクに対する読み取り権限が必要です。次のコードは、シンボリックリンクと、それが指すオブジェクトファイルの名前を取得する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントが配置されているリージョン (例: cn-hangzhou) を指定します。このパラメーターは V4 署名に必要ですのでご注意ください。
region = "cn-hangzhou"
# examplebucket を実際のバケット名に置き換えます。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# シンボリックリンクの名前を指定します。
symlink = 'examplesymlick.txt'
# シンボリックリンクと、それが指すオブジェクトの名前を取得します。
bucket.get_symlink(symlink)
result = bucket.get_symlink(symlink)
print(result.target_key)関連ドキュメント
シンボリックリンクの作成に使用される API 操作の詳細については、「PutSymlink」をご参照ください。
シンボリックリンクの取得に使用される API 操作の詳細については、「GetSymlink」をご参照ください。