Amazon Simple Storage Service
개발자 안내서 (API 버전 2006-03-01)

IAM 사용자 임시 자격 증명을 사용하여 요청 - Ruby용 AWS SDK

IAM 사용자 또는 AWS 계정은 Ruby용 AWS SDK를 사용하여 임시 보안 자격 증명을 요청한 후 이 자격 증명을 사용하여 Amazon S3에 액세스할 수 있습니다. 세션의 유효 기간이 만료된 후 이 자격 증명도 만료됩니다. 세션은 기본적으로 1시간 동안 지속됩니다. 사용자 자격 증명을 사용할 경우 임시 보안 자격 증명을 요청할 때 기간(1~36시간)을 지정할 수 있습니다. 임시 보안 자격 증명 요청에 대한 자세한 내용은 요청 만들기 단원을 참조하십시오.

참고

AWS 계정 보안 자격 증명을 사용하여 구한 임시 보안 자격 증명의 유효 기간은 1시간입니다. IAM 사용자 자격 증명을 사용하여 세션을 요청할 경우에만 세션 기간을 지정할 수 있습니다.

다음 Ruby 예제는 한 시간 동안 지정된 버킷의 항목을 나열하기 위해 임시 사용자를 생성합니다. 이 예제를 사용하려면 새 AWS Security Token Service(AWS STS) 클라이언트를 생성하고 Amazon S3 버킷을 나열하는데 필요한 권한을 가진 AWS 자격 증명이 있어야 합니다.

# This snippet example does the following: # The following Ruby example creates a temporary user to list the items in a specified bucket # for one hour. To use this example, you must have AWS credentials that have the necessary # permissions to create new AWS Security Token Service (AWS STS) clients, and list Amazon S3 buckets using temporary security credentials # using your AWS account security credentials, the temporary security credentials are valid for only one hour. You can # specify session duration only if you use &IAM; user credentials to request a session. require 'aws-sdk-core' require 'aws-sdk-s3' require 'aws-sdk-iam' USAGE = <<DOC Usage: assumerole_create_bucket_policy.rb -b BUCKET -u USER [-r REGION] [-d] [-h] Assumes a role for USER to list items in BUCKET for one hour. BUCKET is required and must already exist. USER is required and if not found, is created. If REGION is not supplied, defaults to us-west-2. -d gives you extra (debugging) information. -h displays this message and quits. DOC def print_debug(debug, s) if debug puts s end end # Get the user if they exist, otherwise create them def get_user(region, user_name, debug) iam = Aws::IAM::Resource.new(region: region) # See if user exists user = iam.user(user_name) # If user does not exist, create them if user == nil user = iam.create_user(user_name: user_name) iam.wait_until(:user_exists, user_name: user_name) print_debug(debug, "Created new user #{user_name}") else print_debug(debug, "Found user #{user_name} in region #{region}") end user end # main region = 'us-west-2' user_name = '' bucket_name = '' i = 0 while i &lt; ARGV.length case ARGV[i] when '-b' i += 1 bucket_name = ARGV[i] when '-u' i += 1 user_name = ARGV[i] when '-r' i += 1 region = ARGV[i] when '-h' puts USAGE exit 0 else puts 'Unrecognized option: ' + ARGV[i] puts USAGE exit 1 end i += 1 end if bucket_name == '' puts 'You must supply a bucket name' puts USAGE exit 1 end if user_name == '' puts 'You must supply a user name' puts USAGE exit 1 end # Create a new Amazon STS client and get temporary credentials. This uses a role that was already created. begin creds = Aws::AssumeRoleCredentials.new( client: Aws::STS::Client.new(region: region), role_arn: "arn:aws:iam::111122223333:role/assumedrolelist", role_session_name: "assumerole-s3-list" ) # Create an Amazon S3 resource with temporary credentials. s3 = Aws::S3::Resource.new(region: region, credentials: creds) puts "Contents of '%s':" % bucket_name puts ' Name => GUID' s3.bucket(bucket_name).objects.limit(50).each do |obj| puts " #{obj.key} => #{obj.etag}" end rescue StandardError => ex puts 'Caught exception accessing bucket ' + bucket_name + ':' puts ex.message end