버킷 관리 문제
    • PDF

    버킷 관리 문제

    • PDF

    기사 요약

    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 가이드의 시작하기 전에를 참조해 주십시오.

    참고

    이 가이드에서 필요한 정보를 찾지 못했거나 추가로 필요한 정보가 있으신 경우, 언제든지 아래의 피드백 아이콘을 클릭하여 의견을 보내 주십시오. 전달해 주신 의견을 참고하여 더 유용한 정보를 제공하겠습니다.


    이 문서가 도움이 되었습니까?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.