このトピックでは、Object Storage Service (OSS) SDK for Go 2.0 が提供するファイルのような操作を使用して、バケット内のオブジェクトにアクセスする方法について説明します。
注意事項
このトピックのサンプルコードでは、中国 (杭州) リージョン ID の
cn-hangzhouを例として使用します。デフォルトではパブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud プロダクトから OSS にアクセスする場合は、内部エンドポイントを使用してください。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報を構成する方法の詳細については、「アクセス認証情報を構成する」をご参照ください。
ファイルをダウンロードするには、
oss:GetObject権限が必要です。詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
メソッド
OSS SDK for Go 2.0 が提供する File-Like 操作を使用すると、ReadOnlyFile メソッドを使用してバケット内のオブジェクトにアクセスできます。
ReadOnlyFile メソッドは、シングルストリームモードとプリフェッチモードを提供します。並列タスク数を変更して読み取り速度を向上させることができます。
ReadOnlyFile メソッドは再接続メカニズムを提供しており、より複雑なネットワーク環境において堅牢性を備えています。
type ReadOnlyFile struct {
...
}
func (c *Client) OpenFile(ctx context.Context, bucket string, key string, optFns ...func(*OpenOptions)) (file *ReadOnlyFile, err error)リクエストパラメーター
パラメーター | タイプ | 説明 |
ctx | context.Context | リクエストのコンテキスト。 |
bucket | string | バケットの名前。 |
key | string | オブジェクトの名前。 |
optFns | ...func(*OpenOptions) | オプション。オブジェクトを開くときに構成できるオプション。 |
OpenOptions のオプション
オプション | タイプ | 説明 |
Offset | int64 | オブジェクトを開くときの初期オフセット。デフォルト値:0。 |
VersionId | *string | 指定したオブジェクトのバージョン番号。このパラメーターは、オブジェクトの複数のバージョンが存在する場合にのみ有効です。 |
RequestPayer | *string | リクエスト元支払いモードが有効になっている場合、RequestPayer を requester に設定する必要があります。 |
EnablePrefetch | bool | プリフェッチモードを有効にするかどうかを指定します。デフォルトでは、プリフェッチモードは無効になっています。 |
PrefetchNum | int | プリフェッチされるチャンクの数。デフォルト値:3。このパラメーターは、プリフェッチモードが有効になっている場合に有効です。 |
ChunkSize | int64 | プリフェッチされる各チャンクのサイズ。デフォルト値:6 MiB。このパラメーターは、プリフェッチモードが有効になっている場合に有効です。 |
PrefetchThreshold | int64 | プリフェッチモードが有効になる前に順番に読み取られるバイト数。デフォルト値:20 MiB。このパラメーターは、プリフェッチモードが有効になっている場合に有効です。 |
レスポンスパラメーター
パラメーター | タイプ | 説明 |
file | *ReadOnlyFile | ReadOnlyFile のインスタンス。このパラメーターは、err の値が nil の場合に有効です。詳細については、ReadOnlyFile をご参照ください。 |
err | error | ReadOnlyFile のステータス。エラーが発生した場合、err の値は nil になりません。 |
ReadOnlyFile の一般的なメソッド
メソッド | 説明 |
Close() error | ファイルハンドルを閉じて、メモリやアクティブなソケットなどのリソースを解放します。 |
Read(p []byte) (int, error) | データソースから長さ len(p) のバイトを読み取り、バイトを p に格納し、読み取られたバイト数と発生したエラーを返します。 |
Seek(offset int64, whence int) (int64, error) | 次の読み取りまたは書き込みのオフセットを指定します。whence の有効な値:0:先頭。1:現在のオフセット。2:末尾。 |
Stat() (os.FileInfo, error) | オブジェクトサイズ、最終更新時刻、メタデータなどのオブジェクト情報をクエリします。 |
注:プリフェッチモードが有効になっていて、複数の順序外れ読み取りが発生した場合、シングルストリームモードが自動的に使用されます。