메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

AWS 계정 또는 IAM 사용자 자격 증명을 사용하여 요청하기 - Ruby용 AWS SDK

Ruby용 AWS SDK 버전 3를 사용하여 Amazon S3을 호출할 수 있으려면 먼저 SDK가 버킷 및 객체에 대한 액세스를 확인하기 위해 사용하는 AWS 액세스 자격 증명을 설정해야 합니다. 로컬 시스템에서 AWS 자격 증명 프로파일에 설정된 자격 증명을 공유하는 경우 Ruby용 SDK 버전 3가 코드에서 선언하지 않고도 이러한 자격 증명을 사용할 수 있습니다. 공유 자격 증명 설정에 대한 자세한 내용은 AWS 계정 또는 IAM 사용자 자격 증명을 사용하여 요청하기 단원을 참조하십시오.

다음과 같은 Ruby 코드 조각은 로컬 컴퓨터에서 공유되는 AWS 자격 증명 파일의 자격 증명을 사용하여 특정 버킷에서 모든 객체 키 이름을 가져오기 위한 요청을 인증하고 다음과 같은 작업을 수행합니다.

  1. Aws::S3::Resource 클래스의 인스턴스를 만듭니다.

  2. bucketAws::S3::Resource 메서드를 사용하여 버킷의 객체를 열거함으로써 Amazon S3에 요청합니다. 클라이언트는 컴퓨터의 AWS 자격 증명 파일에 있는 자격 증명에서 필요한 서명 값을 생성하여 Amazon S3으로 전송하는 요청에 이를 포함시킵니다.

  3. 객체 키 이름 어레이를 터미널에 인쇄합니다.

Copy
# Use the Amazon S3 modularized gem for version 3 of the AWS Ruby SDK require 'aws-sdk-s3' # Get an Amazon S3 resource s3 = Aws::S3::Resource.new(region: 'us-west-2') # Create an array of the object keynames in the bucket, up to the first 100 bucket = s3.bucket('example_bucket').objects.collect(&:key) # Print the array to the terminal puts bucket

로컬 AWS 자격 증명 파일을 가지고 있지 않더라도 여전히 Aws::S3::Resource 리소스를 생성하고 Amazon S3 버킷 및 객체에 대해 코드를 실행할 수 있습니다. Ruby용 SDK 버전 3를 사용하여 보낸 요청은 기본적으로 서명이 없는 익명 요청입니다. Amazon S3은 공개적으로 사용할 수 없는 리소스에 대해 익명 요청을 보내면 오류를 반환합니다.

다음과 같이 Ruby용 SDK 애플리케이션을 위한 이전의 코드 조각을 사용 및 확장하는 등 보다 강력한 용도로 사용할 수 있습니다. 이 예제에서 사용된 자격 증명은 이 애플리케이션을 실행 중인 컴퓨터의 로컬 AWS 자격 증명 파일에서 나온 것입니다. 자격 증명은 애플리케이션 실행 시 사용자가 지정한 버킷에 객체를 나열할 수 있는 IAM 사용자를 위한 것입니다.

Copy
# Use the Amazon S3 modularized gem for version 3 of the AWS Ruby SDK require 'aws-sdk-s3' # Set the name of the bucket on which the operations are performed # This argument is required bucket_name = nil # The operation to perform on the bucket operation = 'list' # default operation = ARGV[0] if (ARGV.length > 0) if ARGV.length > 1 bucket_name = ARGV[1] else exit 1 end # Get an Amazon S3 resource s3 = Aws::S3::Resource.new(region: 'us-west-2') # Get the bucket by name bucket = s3.bucket(bucket_name) case operation when 'list' if bucket.exists? # Enumerate the bucket contents and object etags puts "Contents of '%s':" % bucket_name puts ' Name => GUID' bucket.objects.limit(50).each do |obj| puts " #{obj.key} => #{obj.etag}" end else puts ""The bucket '%s' does not exist!" % bucket_name end else puts "Unknown operation: '%s'! Only list is supported." % operation end