객체 복사·이동·이름 바꾸기

객체 복사·이동·이름 바꾸기

CopyObject 작업은 Amazon S3에 이미 저장된 객체의 복사본을 만들어요.

단일 원자(atomic) 작업으로 최대 5GB 객체의 복사본을 만들 수 있어요. 하지만 5GB보다 큰 객체를 복사하려면 AWS CLI나 AWS SDK를 사용한 멀티파트 업로드를 써야 해요. 자세한 내용은 멀티파트 업로드를 사용한 객체 복사를 참고하세요.

참고

멀티파트 업로드로 업로드한 객체의 성능 이점을 유지하려면 S3 콘솔 대신 AWS CLI나 AWS SDK를 사용한 멀티파트 업로드로 객체를 복사해야 해요. 자세한 내용은 멀티파트 업로드를 사용한 객체 복사를 참고하세요.

CopyObject 작업을 사용하면 다음을 할 수 있어요.

  • 객체의 추가 복사본을 만들어요.
  • 객체를 복사하고 원본을 삭제해 이름을 바꿔요.
  • 객체를 한 버킷에서 다른 버킷으로 복사하거나 이동해요. AWS 리전 간 이동(예: us-west-1에서 eu-west-2로)도 포함돼요. 객체를 이동하면 S3는 객체를 지정된 대상으로 복사한 다음 소스 객체를 삭제해요.

참고

AWS 리전 간 객체 복사·이동에는 대역폭 요금이 발생해요. 자세한 내용은 Amazon S3 요금을 참고하세요.

  • 객체 메타데이터를 변경해요. 각 S3 객체에는 메타데이터가 있어요. 이 메타데이터는 이름-값 쌍의 집합이에요. 객체를 업로드할 때 객체 메타데이터를 설정할 수 있어요. 업로드 후에는 객체 메타데이터를 수정할 수 없어요. 메타데이터를 수정하는 유일한 방법은 객체의 복사본을 만들고 메타데이터를 설정하는 거예요. 그러려면 복사 작업에서 같은 객체를 소스이자 대상으로 설정하면 돼요.

일부 객체 메타데이터는 시스템 메타데이터이고, 다른 것은 사용자 정의 메타데이터예요. 시스템 메타데이터 중 일부는 제어할 수 있어요. 예를 들어 객체에 사용할 스토리지 클래스와 서버 측 암호화 유형을 제어할 수 있어요. 객체를 복사하면 사용자 제어 시스템 메타데이터와 사용자 정의 메타데이터도 복사돼요. S3는 시스템 제어 메타데이터를 재설정해요. 예를 들어 객체를 복사하면 S3는 복사된 객체의 생성 날짜를 재설정해요. 복사 요청에서 이런 시스템 제어 메타데이터 값을 설정할 필요는 없어요.

객체를 복사할 때 메타데이터 값 중 일부를 업데이트하기로 결정할 수도 있어요. 예를 들어 소스 객체가 S3 Standard 스토리지를 사용하도록 구성되어 있다면, 객체 복사본에는 S3 Intelligent-Tiering을 사용하도록 선택할 수 있어요. 또한 소스 객체에 있는 사용자 정의 메타데이터 값 중 일부를 변경하기로 결정할 수도 있어요. 복사 중에 객체의 사용자 구성 가능 메타데이터(시스템 또는 사용자 정의)를 하나라도 업데이트하기로 선택했다면, 값 하나만 변경하더라도 요청에서 소스 객체에 있는 모든 사용자 구성 가능 메타데이터를 명시적으로 지정해야 해요.

참고

S3 콘솔로 객체를 복사할 때 "Copied metadata can't be verified." 오류 메시지를 받을 수 있어요. 콘솔은 헤더를 사용해 객체의 메타데이터를 가져오고 설정해요. 네트워크나 브라우저 구성이 네트워크 요청을 수정하면, 이 동작이 수정된 Cache-Control 헤더 같은 의도하지 않은 메타데이터가 복사된 객체에 기록되게 할 수 있어요. S3는 이런 의도하지 않은 메타데이터를 검증할 수 없어요.

이 문제를 해결하려면 네트워크와 브라우저 구성을 확인해 Cache-Control 같은 헤더를 수정하지 않는지 확인하세요. 자세한 내용은 공동 책임 모델을 참고하세요.

객체 메타데이터에 대한 자세한 내용은 객체 메타데이터 작업하기를 참고하세요.

아카이브·복원 객체 복사

소스 객체가 S3 Glacier Flexible Retrieval이나 S3 Glacier Deep Archive에 아카이브되어 있다면, 객체를 다른 버킷으로 복사하기 전에 먼저 임시 복사본을 복원해야 해요. 객체 아카이브에 대한 자세한 내용은 아카이브 객체 작업하기를 참고하세요.

S3 콘솔의 Copy 작업은 S3 Glacier Flexible Retrieval 또는 S3 Glacier Deep Archive 스토리지 클래스의 복원된 객체를 지원하지 않아요. 이런 복원된 객체를 복사하려면 AWS Command Line Interface(AWS CLI), AWS SDK, 또는 Amazon S3 REST API를 사용하세요.

암호화된 객체 복사

S3는 S3 버킷으로 복사되는 모든 새 객체를 자동으로 암호화해요. 복사 요청에서 암호화 정보를 지정하지 않으면 대상 객체의 암호화 설정은 대상 버킷의 기본 암호화 구성으로 설정돼요. 기본적으로 모든 버킷은 Amazon S3 관리 키를 사용한 서버 측 암호화(SSE-S3)를 사용하는 기본 암호화 구성을 가져요. 대상 버킷에 AWS Key Management Service(AWS KMS) 키를 사용한 서버 측 암호화(SSE-KMS) 또는 고객 제공 암호화 키(SSE-C)를 사용하는 기본 암호화 구성이 있다면, S3는 해당 KMS 키나 고객 제공 키를 사용해 대상 객체 복사본을 암호화해요.

객체를 복사할 때 대상 객체에 다른 유형의 암호화 설정을 사용하려면, S3가 대상 객체를 KMS 키, Amazon S3 관리 키, 또는 고객 제공 키로 암호화하도록 요청할 수 있어요. 요청의 암호화 설정이 대상 버킷의 기본 암호화 구성과 다르면, 요청의 암호화 설정이 우선해요. 복사 대상 소스 객체가 SSE-C로 암호화되어 있다면, S3가 복사를 위해 객체를 복호화할 수 있도록 요청에 필요한 암호화 정보를 제공해야 해요. 자세한 내용은 암호화로 데이터 보호하기를 참고하세요.

객체 복사 시 체크섬 사용

객체를 복사할 때 객체에 다른 체크섬 알고리즘을 사용하도록 선택할 수 있어요. 같은 알고리즘을 선택하든 새 알고리즘을 선택하든, S3는 객체가 복사된 후 새 체크섬 값을 계산해요. S3는 체크섬 값을 직접 복사하지 않아요. 체크섬이 없는 모든 복사 객체와 지정된 대상 체크섬 알고리즘은 자동으로 CRC-64NVME 체크섬 알고리즘을 얻게 돼요. 체크섬 계산 방법에 대한 자세한 내용은 Amazon S3에서 멀티파트 업로드를 사용한 객체 업로드·복사를 참고하세요.

단일 요청으로 여러 객체 복사

단일 요청으로 둘 이상의 S3 객체를 복사하려면 S3 Batch Operations를 사용할 수도 있어요. S3 Batch Operations에 작업할 객체 목록을 제공하면, S3 Batch Operations가 해당 API 작업을 호출해 지정된 작업을 수행해요. 단일 Batch Operations 작업은 엑사바이트(EB) 규모의 데이터를 담은 수십억 개 객체에 지정된 작업을 수행할 수 있어요.

S3 Batch Operations 기능은 진행 상황을 추적하고, 알림을 보내고, 모든 작업의 상세 완료 보고서를 저장해서 완전 관리형이고 감사 가능한 서버리스 환경을 제공해요. Amazon S3 콘솔, AWS CLI, AWS SDK, 또는 REST API로 S3 Batch Operations를 사용할 수 있어요. 자세한 내용은 S3 Batch Operations 기초를 참고하세요.

디렉터리 버킷으로 객체 복사

디렉터리 버킷으로 객체를 복사하는 방법은 디렉터리 버킷으로·에서 객체 복사를 참고하세요. 디렉터리 버킷에서 Amazon S3 Express One Zone 스토리지 클래스를 사용하는 방법은 S3 Express One Zone과 디렉터리 버킷 작업하기를 참고하세요.

주석 복사

CopyObject API로 객체를 복사하면 S3는 기본적으로 객체의 주석(annotation)을 대상으로 복사해요. 복사 요청에 x-amz-annotation-directive: EXCLUDE 헤더를 지정하면 복사에서 주석을 제외할 수 있어요.

멀티파트 업로드로 객체를 복사할 때(예: 약 8MB보다 큰 객체에 AWS CLI aws s3 cp 명령 사용) 주석은 기본적으로 복사되지 않아요. 멀티파트 업로드로 객체를 복사할 때 주석을 포함하려면 --copy-props all을 지정하세요.

주석에 대한 자세한 내용은 객체에 주석 달기를 참고하세요.

출처: 문서

본문

객체 복사하기

객체를 복사하려면 다음 방법을 사용하세요.

참고

콘솔로 객체를 복사할 때의 제한·제약은 다음과 같아요.

  • 객체가 5GB보다 작으면 복사할 수 있어요. 객체가 5GB보다 크면 AWS CLI 또는 AWS SDK를 사용해 객체를 복사해야 해요.
  • 객체를 복사하는 데 필요한 추가 권한 목록은 Amazon S3 API 작업에 필요한 권한을 참고하세요. 이 권한을 부여하는 예시 정책은 Amazon S3용 ID 기반 정책 예시를 참고하세요.
  • Copy 작업은 지정된 폴더(접두사) 안의 모든 객체에 적용돼요. 작업이 진행되는 동안 폴더에 추가된 객체는 영향을 받을 수 있어요.
  • S3 콘솔은 SSE-KMS로 암호화된 객체의 크로스 리전 복사를 지원하지 않아요. SSE-KMS로 암호화된 객체를 리전 간 복사하려면 AWS CLI, AWS SDK, 또는 Amazon S3 REST API를 사용하세요.
  • 고객 제공 암호화 키(SSE-C)로 암호화된 객체는 S3 콘솔로 복사할 수 없어요. SSE-C로 암호화된 객체를 복사하려면 AWS CLI, AWS SDK, 또는 Amazon S3 REST API를 사용하세요.
  • 복사된 객체는 원래 객체의 Object Lock 설정을 유지하지 않아요.
  • 객체를 복사해 오는 버킷이 S3 Object Ownership에 대해 버킷 소유자 강제 설정을 사용한다면, 객체 ACL은 지정된 대상으로 복사되지 않아요.
  • S3 Object Ownership에 대해 버킷 소유자 강제 설정을 사용하는 버킷으로 객체를 복사하려면, 소스 버킷도 버킷 소유자 강제 설정을 사용하는지 확인하거나, 다른 AWS 계정과 그룹에 대한 객체 ACL 부여를 제거하세요.

객체를 복사하려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 General purpose buckets 또는 Directory buckets를 선택합니다.
  3. 버킷 목록에서 복사할 객체가 들어 있는 버킷의 이름을 선택합니다.
  4. 복사할 객체 이름 왼쪽의 확인란을 선택합니다.
  5. Actions 메뉴에서 나타나는 옵션 목록의 Copy를 선택합니다.
  6. 대상 유형과 대상 계정을 선택합니다. 대상 경로를 지정하려면 Browse S3를 선택하고 대상으로 이동한 다음 대상 왼쪽의 확인란을 선택합니다. Choose destination을 선택합니다. 또는 대상 경로를 직접 입력할 수도 있습니다.
  7. 버킷 버전 관리를 활성화하지 않았다면, 객체를 실수로 덮어쓰거나 삭제하지 않도록 Bucket Versioning을 활성화할 것을 권장하는 경고가 표시됩니다. 이 버킷의 모든 객체 버전을 유지하려면 Enable Bucket Versioning을 선택합니다. Destination details에서 기본 암호화와 S3 Object Lock 속성도 볼 수 있습니다.
  8. Additional copy settings에서 Copy source settings, Don't specify settings, Specify settings 중 무엇을 할지 선택합니다. Copy source settings가 기본 옵션이에요. 소스 설정 속성 없이 객체만 복사하려면 Don't specify settings를 선택합니다. 스토리지 클래스, ACL, 객체 태그, 주석, 메타데이터, 서버 측 암호화, 추가 체크섬에 대한 설정을 지정하려면 Specify settings를 선택합니다.
  9. Copy를 선택합니다. Amazon S3가 객체를 대상으로 복사합니다.

이 섹션의 예시들은 단일 작업으로 최대 5GB 객체를 복사하는 방법을 보여줘요. 5GB보다 큰 객체를 복사하려면 멀티파트 업로드를 사용해야 해요. 자세한 내용은 멀티파트 업로드를 사용한 객체 복사를 참고하세요.

Java

AWS SDK for Java로 객체를 복사하는 예시는 _Amazon S3 API Reference_의 객체를 한 버킷에서 다른 버킷으로 복사를 참고하세요.

.NET

다음 C# 예시는 .NET용 고급 SDK를 사용해 단일 작업으로 최대 5GB 객체를 복사해요. 5GB보다 큰 객체는 멀티파트 업로드를 사용한 객체 복사에 설명된 멀티파트 업로드 복사 예시를 사용하세요.

이 예시는 최대 5GB 객체의 복사본을 만들어요. 코드 예시를 설정하고 실행하는 방법은 _AWS SDK for .NET Developer Guide_의 AWS SDK for .NET 시작하기를 참고하세요.

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class CopyObjectTest
    {
        private const string sourceBucket = "*** provide the name of the bucket with source object ***";
        private const string destinationBucket = "*** provide the name of the bucket to copy the object to ***";
        private const string objectKey = "*** provide the name of object to copy ***";
        private const string destObjectKey = "*** provide the destination object key name ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;

        public static void Main()
        {
            s3Client = new AmazonS3Client(bucketRegion);
            Console.WriteLine("Copying an object");
            CopyingObjectAsync().Wait();
        }

        private static async Task CopyingObjectAsync()
        {
            try
            {
                CopyObjectRequest request = new CopyObjectRequest
                {
                    SourceBucket = sourceBucket,
                    SourceKey = objectKey,
                    DestinationBucket = destinationBucket,
                    DestinationKey = destObjectKey
                };
                CopyObjectResponse response = await s3Client.CopyObjectAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
    }
}

PHP

이 주제는 AWS SDK for PHP 버전 3의 클래스를 사용해 Amazon S3 내에서 단일 객체와 여러 객체를 한 버킷에서 다른 버킷으로, 또는 같은 버킷 안에서 복사하는 방법을 안내해요.

AWS SDK for Ruby API에 대한 자세한 내용은 AWS SDK for Ruby - Version 2를 참고하세요.

다음 PHP 예시는 Amazon S3 내에서 단일 객체를 복사하는 copyObject() 메서드 사용을 보여줘요. 또한 getcommand() 메서드로 CopyObject 호출 일괄 작업을 사용해 객체의 여러 복사본을 만드는 방법도 보여줘요.

복사 단계 설명
1 Aws\S3\S3Client 클래스 생성자로 Amazon S3 클라이언트 인스턴스를 만들어요.
2 객체의 여러 복사본을 만들려면 Amazon S3 클라이언트의 getCommand() 메서드에 호출 일괄 작업을 실행해요. 이 메서드는 Aws\CommandInterface 클래스에서 상속되어요. 첫 번째 인수로 CopyObject 명령을 제공하고, 두 번째 인수로 소스 버킷, 소스 키 이름, 대상 버킷, 대상 키 이름을 담은 배열을 제공해요.
 require 'vendor/autoload.php';

use Aws\CommandPool;
use Aws\Exception\AwsException;
use Aws\ResultInterface;
use Aws\S3\S3Client;

$sourceBucket = '*** Your Source Bucket Name ***';
$sourceKeyname = '*** Your Source Object Key ***';
$targetBucket = '*** Your Target Bucket Name ***';

$s3 = new S3Client([
    'version' => 'latest',
    'region' => 'us-east-1'
]);

// Copy an object.
$s3->copyObject([
    'Bucket' => $targetBucket,
    'Key' => "$sourceKeyname-copy",
    'CopySource' => "$sourceBucket/$sourceKeyname",
]);

// Perform a batch of CopyObject operations.
$batch = array();
for ($i = 1; $i <= 3; $i++) {
    $batch[] = $s3->getCommand('CopyObject', [
        'Bucket' => $targetBucket,
        'Key' => "{targetKeyname}-$i",
        'CopySource' => "$sourceBucket/$sourceKeyname",
    ]);
}
try {
    $results = CommandPool::batch($s3, $batch);
    foreach ($results as $result) {
        if ($result instanceof ResultInterface) {
            // Result handling here
        }
        if ($result instanceof AwsException) {
            // AwsException handling here
        }
    }
} catch (Exception $e) {
    // General error handling here
}

Python

class ObjectWrapper:
    """Encapsulates S3 object actions."""

    def __init__(self, s3_object):
        """
        :param s3_object: A Boto3 Object resource. This is a high-level resource in Boto3
                          that wraps object actions in a class-like structure.
        """
        self.object = s3_object
        self.key = self.object.key

    def copy(self, dest_object):
        """
        Copies the object to another bucket.

        :param dest_object: The destination object initialized with a bucket and key.
                            This is a Boto3 Object resource.
        """
        try:
            dest_object.copy_from(
                CopySource={"Bucket": self.object.bucket_name, "Key": self.object.key}
            )
            dest_object.wait_until_exists()
            logger.info(
                "Copied object from %s:%s to %s:%s.",
                self.object.bucket_name,
                self.object.key,
                dest_object.bucket_name,
                dest_object.key,
            )
        except ClientError:
            logger.exception(
                "Couldn't copy object from %s/%s to %s/%s.",
                self.object.bucket_name,
                self.object.key,
                dest_object.bucket_name,
                dest_object.key,
            )
            raise

Ruby

다음 작업은 Ruby 클래스를 사용해 Amazon S3에서 객체를 한 버킷에서 다른 버킷으로, 또는 같은 버킷 안에서 복사하는 방법을 안내해요.

복사 단계 설명
1 AWS SDK for Ruby 버전 3용 Amazon S3 모듈식 gem을 사용하고, aws-sdk-s3를 요구하고, AWS 자격 증명을 제공해요. 자격 증명을 제공하는 방법은 _Amazon S3 API Reference_의 AWS 계정 또는 IAM 사용자 자격 증명으로 요청하기를 참고하세요.
2 소스 버킷 이름, 소스 키 이름, 대상 버킷 이름, 대상 키 같은 요청 정보를 제공해요.

다음 Ruby 코드 예시는 #copy_object 메서드를 사용해 객체를 한 버킷에서 다른 버킷으로 복사하는 위 작업을 보여줘요.

require 'aws-sdk-s3'

# Wraps Amazon S3 object actions.
class ObjectCopyWrapper
  attr_reader :source_object

  # @param source_object [Aws::S3::Object] An existing Amazon S3 object. This is used as the source object for
  #                                        copy actions.
  def initialize(source_object)
    @source_object = source_object
  end

  # Copy the source object to the specified target bucket and rename it with the target key.
  #
  # @param target_bucket [Aws::S3::Bucket] An existing Amazon S3 bucket where the object is copied.
  # @param target_object_key [String] The key to give the copy of the object.
  # @return [Aws::S3::Object, nil] The copied object when successful; otherwise, nil.
  def copy_object(target_bucket, target_object_key)
    @source_object.copy_to(bucket: target_bucket.name, key: target_object_key)
    target_bucket.object(target_object_key)
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't copy #{@source_object.key} to #{target_object_key}. Here's why: #{e.message}"
  end
end

# Example usage:
def run_demo
  source_bucket_name = "amzn-s3-demo-bucket1"
  source_key = "my-source-file.txt"
  target_bucket_name = "amzn-s3-demo-bucket2"
  target_key = "my-target-file.txt"

  source_bucket = Aws::S3::Bucket.new(source_bucket_name)
  wrapper = ObjectCopyWrapper.new(source_bucket.object(source_key))
  target_bucket = Aws::S3::Bucket.new(target_bucket_name)
  target_object = wrapper.copy_object(target_bucket, target_key)
  return unless target_object

  puts "Copied #{source_key} from #{source_bucket_name} to #{target_object.bucket_name}:#{target_object.key}."
end

run_demo if $PROGRAM_NAME == __FILE__

이 예시는 Amazon S3 REST API로 객체를 복사하는 방법을 설명해요. REST API에 대한 자세한 내용은 CopyObject를 참고하세요.

이 예시는 amzn-s3-demo-bucket1 버킷의 flotsam 객체를 amzn-s3-demo-bucket2 버킷의 jetsam 객체로 복사하면서 메타데이터를 보존해요.

PUT /jetsam HTTP/1.1
Host: amzn-s3-demo-bucket2.s3.amazonaws.com
x-amz-copy-source: /amzn-s3-demo-bucket1/flotsam
Authorization: AWS AKIAIO...LDg=
Date: Wed, 20 Feb 2008 22:12:21 +0000

서명은 다음 정보에서 생성되었어요.

PUT\r\n
\r\n
\r\n
Wed, 20 Feb 2008 22:12:21 +0000\r\n

x-amz-copy-source:/amzn-s3-demo-bucket1/flotsam\r\n
/amzn-s3-demo-bucket2/jetsam

Amazon S3는 객체의 ETag와 마지막 수정 시각을 지정하는 다음 응답을 반환해요.

HTTP/1.1 200 OK
x-amz-id-2: Vyaxt7qEbzv34BnSu5hctyyNSlHTYZFMWK4FtzO+iX8JQNyaLdTshL0KxatbaOZt
x-amz-request-id: 6B13C3C5B34AF333
Date: Wed, 20 Feb 2008 22:13:01 +0000

Content-Type: application/xml
Transfer-Encoding: chunked
Connection: close
Server: AmazonS3
<?xml version="1.0" encoding="UTF-8"?>

<CopyObjectResult>
   <LastModified>2008-02-20T22:13:01</LastModified>
   <ETag>"7e9c608af58950deeb370c98608ed097"</ETag>
</CopyObjectResult>

AWS Command Line Interface(AWS CLI)로도 S3 객체를 복사할 수 있어요. 자세한 내용은 _AWS CLI Command Reference_의 copy-object를 참고하세요. AWS CLI에 대한 정보는 _AWS Command Line Interface User Guide_의 What is the AWS Command Line Interface?를 참고하세요.

객체 이동하기

객체를 이동하려면 다음 방법을 사용하세요.

참고

  • 객체가 5GB보다 작으면 이동할 수 있어요. 객체가 5GB보다 크면 AWS CLI 또는 AWS SDK를 사용해 객체를 이동해야 해요.
  • 객체를 이동하는 데 필요한 추가 권한 목록은 Amazon S3 API 작업에 필요한 권한을 참고하세요. 이 권한을 부여하는 예시 정책은 Amazon S3용 ID 기반 정책 예시를 참고하세요.
  • 고객 제공 암호화 키(SSE-C)로 암호화된 객체는 S3 콘솔로 이동할 수 없어요. SSE-C로 암호화된 객체를 이동하려면 AWS CLI, AWS SDK, 또는 Amazon S3 REST API를 사용하세요.
  • 폴더를 이동할 때는 폴더에서 추가 변경을 하기 전에 Move 작업이 끝날 때까지 기다리세요.
  • S3 콘솔에서 Move 작업의 소스나 대상으로 S3 액세스 포인트 별칭을 사용할 수 없어요.

객체를 이동하려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
  2. 왼쪽 탐색 창에서 Buckets를 선택합니다. 이동할 객체가 들어 있는 Amazon S3 버킷이나 폴더로 이동합니다.
  3. 이동할 객체의 확인란을 선택합니다.
  4. Actions 메뉴에서 Move를 선택합니다.
  5. 대상 경로를 지정하려면 Browse S3를 선택하고 대상으로 이동한 다음 대상 확인란을 선택합니다. Choose destination을 선택합니다. 또는 대상 경로를 직접 입력할 수도 있습니다.
  6. 버킷 버전 관리를 활성화하지 않았다면, 객체를 실수로 덮어쓰거나 삭제하지 않도록 Bucket Versioning을 활성화할 것을 권장하는 경고가 표시됩니다. 이 버킷의 모든 객체 버전을 유지하려면 Enable Bucket Versioning을 선택합니다. Destination details에서 기본 암호화와 Object Lock 속성도 볼 수 있습니다.
  7. Additional copy settings에서 Copy source settings, Don't specify settings, Specify settings 중 무엇을 할지 선택합니다. Copy source settings가 기본 옵션이에요. 소스 설정 속성 없이 객체만 복사하려면 Don't specify settings를 선택합니다. 스토리지 클래스, ACL, 객체 태그, 메타데이터, 서버 측 암호화, 추가 체크섬에 대한 설정을 지정하려면 Specify settings를 선택합니다.
  8. Move를 선택합니다. Amazon S3가 객체를 대상으로 이동합니다.

AWS Command Line Interface(AWS CLI)로도 S3 객체를 이동할 수 있어요. 자세한 내용은 _AWS CLI Command Reference_의 mv를 참고하세요. AWS CLI에 대한 정보는 _AWS Command Line Interface User Guide_의 What is the AWS Command Line Interface?를 참고하세요.

객체 이름 바꾸기

객체의 이름을 바꾸려면 다음 절차를 사용하세요.

참고

  • 객체가 5GB보다 작으면 이름을 바꿀 수 있어요. 5GB보다 큰 객체의 이름을 바꾸려면 AWS CLI 또는 AWS SDK로 객체를 새 이름으로 복사한 다음 원래 객체를 삭제해야 해요.
  • 객체를 복사하는 데 필요한 추가 권한 목록은 Amazon S3 API 작업에 필요한 권한을 참고하세요. 이 권한을 부여하는 예시 정책은 Amazon S3용 ID 기반 정책 예시를 참고하세요.
  • 객체 이름을 바꾸면 객체의 복사본이 새 마지막 수정 날짜로 만들어지고, 원래 객체에는 삭제 마커가 추가돼요.
  • 기본 암호화에 대한 버킷 설정은 암호화되지 않은 지정된 객체에 자동으로 적용돼요.
  • 고객 제공 암호화 키(SSE-C)가 있는 객체는 S3 콘솔로 이름을 바꿀 수 없어요. SSE-C로 암호화된 객체의 이름을 바꾸려면 AWS CLI, AWS SDK, 또는 Amazon S3 REST API로 그 객체를 새 이름으로 복사하세요.
  • 이 버킷이 S3 Object Ownership에 대해 버킷 소유자 강제 설정을 사용한다면 객체 ACL은 복사되지 않아요.

객체의 이름을 바꾸려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 엽니다.
  2. 탐색 창에서 Buckets를 선택한 다음 General purpose buckets 탭을 선택합니다. 이름을 바꿀 객체가 들어 있는 Amazon S3 버킷이나 폴더로 이동합니다.
  3. 이름을 바꿀 객체의 확인란을 선택합니다.
  4. Actions 메뉴에서 Rename object를 선택합니다.
  5. New object name 상자에 객체의 새 이름을 입력합니다.
  6. Additional copy settings에서 Copy source settings, Don't specify settings, Specify settings 중 무엇을 할지 선택합니다. Copy source settings가 기본 옵션이에요. 소스 설정 속성 없이 객체만 복사하려면 Don't specify settings를 선택합니다. 스토리지 클래스, ACL, 객체 태그, 메타데이터, 서버 측 암호화, 추가 체크섬에 대한 설정을 지정하려면 Specify settings를 선택합니다.
  7. Save changes를 선택합니다. Amazon S3가 객체의 이름을 바꿉니다.

더 알아보기 (Learn more)