デフォルトでは、バージョン管理が有効なバケット内のオブジェクトに対して GetObject 操作を呼び出すと、オブジェクトの現在のバージョンのみが返されます。
背景情報
GetObject 操作をバケットで呼び出す場合、次の 3 つのケースのいずれかが適用されます。
オブジェクトの現在のバージョンが削除マーカーの場合、OSS は 404 Not Found を返します。
クエリパラメーターでオブジェクトの versionId を指定すると、指定されたバージョンが返されます。versionId を "null" に設定すると、versionId が null のオブジェクトバージョンが返されます。
versionId を指定して削除マーカーを取得しようとすると、OSS は 405 Method Not Allowed を返します。
権限
デフォルトでは、Alibaba Cloud アカウントは完全な権限を持っています。Alibaba Cloud アカウント下の Resource Access Management (RAM) ユーザーまたは RAM ロールは、デフォルトではいかなる権限も持っていません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。
API | アクション | 定義 |
GetObject |
| オブジェクトをダウンロードします。 |
| オブジェクトをダウンロードする際に、versionId を通じてオブジェクトのバージョンを指定する場合、この権限が必要です。 | |
| オブジェクトをダウンロードする際に、オブジェクトのメタデータに X-Oss-Server-Side-Encryption: KMS が含まれている場合、この権限が必要です。 |
サンプルコード
次のサンプルコードは、ファイルをダウンロードする方法を示しています。
const OSS = require('ali-oss');
const client = new OSS({
// yourregion をバケットが配置されているリージョンに設定します。たとえば、中国 (杭州) リージョンの場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス認証情報を取得します。このコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// yourbucketname をバケットの名前に設定します。
bucket: 'yourbucketname'
});
async function get() {
// ファイルの名前。
const result = await client.get('filename', {
// ダウンロードするファイルのバージョン ID。
versionId: 'versionid',
});
console.log(result.content);
}
get();関連ドキュメント
ファイルのダウンロードに使用される API 操作の詳細については、「GetObject」をご参照ください。