バケット管理問題

Prev Next

Classic/VPC環境で利用できます。

Object Storageサービスの利用中に次のような問題が発生することがあります。問題ごとの原因と解決方法を確認し、適切に対処してください。

共有されたバケット照会不可

バケット権限管理を使用して他のアカウントに権限を付与しましたが、共有されたアカウントでそのバケットが表示されません。

原因

S3 APIスペックによると、自分が所有しているバケットのみ照会できるので、権限を付与されたバケットはコンソールに表示されないのが普通です。

解決方法

権限を付与されたバケットにアクセスするには、APIまたは CLIで直接呼び出します。

参考

Object Storageサービスを利用中のメインアカウントにのみ権限を付与できます。

バケット照会不可

バケットを照会できません。

原因

URL Encodingをしていない Keyを使って Objectをアップロードする場合、バケットが照会されない場合があります。

解決方法

その Objectにアクセスするには、Javascript SDKを使用します。問題の再発を防止するため、今後 Objectをアップロードする際、Key値に対する URL Encodingを必ず実行します。

次のユースケースは、Prefixで指定した Objectを照会し、Key値に対する URL Encodingを適用してから再度アップロードして問題のある Objectを削除するコードサンプルです。次のコードを参照して環境に合わせて作業してから実行します。

import AWS from 'aws-sdk';

const endpoint = new AWS.Endpoint('ENDPOINT');
const region = 'kr-standard';
const bucket_name = 'BUCKET_NAME';
const prefix = 'PREFIX';
const access_key = 'ACCESS_KEY';
const secret_key = 'SECRET_KEY';

const S3 = new AWS.S3({
    endpoint: endpoint,
    region: region,
    credentials: {
        accessKeyId: access_key,
        secretAccessKey: secret_key
    }
});

(async () => {
    let response = await S3.listObjectsV2({
        Bucket: bucket_name,
        Prefix: prefix
    }).promise();

    console.log(response.Contents);

    for (let content of response.Contents) {
        if (encodeURI(content.Key) !== content.Key) {
            console.log(decodeURI(encodeURI(content.Key)));

            // get object
            let inStream = S3.getObject({
                Bucket: bucket_name,
                Key: content.Key,
            }).createReadStream();

            // upload file
            await S3.upload({
                Bucket: bucket_name,
                Key: encodeURI(content.Key),
                Body: inStream
            }).promise();

            // delete invalid file
            await S3.deleteObject({
                Bucket: bucket_name,
                Key: content.Key
            }).promise();
        }
    }
})();

オブジェクトロック解除

Object Storageのバケットに適用したオブジェクトロックを解除できません。

原因

バケットにオブジェクトロックを適用した場合は解除できません。

解決方法

オブジェクトロック関する詳しい説明は、ロック管理をご参照ください。

「オブジェクトの所有者ではありません。」メッセージ

バケットにフォルダを作成したり、ファイルをアップロードしようとすると、オブジェクトの所有者ではないというメッセージが表示されます。

原因

バケットのアップロード権限が無効になっている場合に発生します。

解決方法

所有者がバケットの権限管理のポップアップで、そのアカウントのアップロード権限を追加します。バケットにアップロード権限を追加する方法は、Object Storageガイドの権限管理をご参照ください。

参考

本ガイドで必要な情報が見つからない場合やさらに必要な情報がある場合は、いつでも以下のフィードバックアイコンをクリックして、ご意見をお寄せください。いただいたご意見を参照して、より有益な情報を提供できるよう努力してまいります。