

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK for Ruby 시작하기
<a name="getting-started"></a>

SDK를 설치, 설정 및 사용하여 프로그래밍 방식으로 AWS 리소스에 액세스하는 Ruby 애플리케이션을 생성하는 방법을 알아봅니다.

**Topics**
+ [를 사용하여 인증 AWS](credentials.md)
+ [SDK 설치](setup-install.md)
+ [샘플 애플리케이션 만들기](hello.md)

# AWS SDK for Ruby를 AWS 사용하여 로 인증
<a name="credentials"></a>

를 사용하여 개발할 AWS 때 코드가 로 인증되는 방법을 설정해야 합니다 AWS 서비스. 환경 및 사용 가능한 액세스에 따라 다양한 방식으로 AWS 리소스에 대한 프로그래밍 방식 AWS 액세스를 구성할 수 있습니다.

인증 방법을 선택하고 SDK에 맞게 구성하려면AWS SDK 및 도구 참조 안내서**의 [Authentication and access](https://docs.aws.amazon.com/sdkref/latest/guide/access.html)를 참조하세요.

## 콘솔 자격 증명 사용
<a name="using-con-creds"></a>

로컬 개발의 경우 새 사용자는 기존 AWS Management Console 로그인 자격 증명을 사용하여 AWS 서비스에 프로그래밍 방식으로 액세스하는 것이 좋습니다. 브라우저 기반 인증 후는 AWS 명령줄 인터페이스(AWS CLI) 및 AWS SDK for Ruby와 같은 로컬 개발 도구에서 작동하는 임시 자격 증명을 AWS 생성합니다.

이 방법을 선택하는 경우 [AWS CLI를 사용하여 콘솔 자격 증명을 사용하여 AWS 로컬 개발에 로그인 지침을](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html) 따릅니다.

 AWS SDK for Ruby는 콘솔 자격 증명으로 로그인을 사용하기 위해 애플리케이션에 추가 젬(예: `aws-sdk-signin`)을 추가할 필요가 없습니다.

## IAM Identity Center 인증 사용
<a name="using-iam-auth"></a>

이 방법을 선택하는 경우 *AWS SDK 및 도구 참조 가이드*의 [IAM Identity Center 인증](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html) 절차를 완료합니다. 그런 다음 환경에 다음 요소가 포함되어야 합니다.
+ 애플리케이션을 실행하기 전에 AWS 액세스 포털 세션을 시작하는 데 AWS CLI사용하는 입니다.
+ SDK에서 참조할 수 있는 구성 값 세트가 포함된 `[default]` 프로필이 있는 [shared AWS`config` file](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html)입니다. 이 파일의 위치를 찾으려면 **AWS SDK 및 도구 참조 가이드에서 [공유 파일의 위치](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)를 참조하세요.
+  공유 `config` 파일은 [https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html) 설정을 지정합니다. 이렇게 하면 SDK AWS 리전 가 AWS 요청에 사용하는 기본값이 설정됩니다. 이 리전은 사용할 리전이 지정되지 않은 SDK 서비스 요청에 사용됩니다.
+  SDK는 AWS에 요청을 보내기 전에 프로필의 [SSO token provider configuration](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#feature-sso-credentials-profile)을 사용하여 보안 인증을 얻습니다. IAM Identity Center 권한 세트에 연결된 IAM 역할인 `sso_role_name` 값은 애플리케이션에 AWS 서비스 사용되는에 대한 액세스를 허용합니다.

  다음 샘플 `config` 파일은 SSO 토큰 공급자 구성으로 설정된 기본 프로필을 보여줍니다. 프로필의 `sso_session` 설정은 이름이 지정된 [`sso-session` section](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#section-session)을 참조합니다. `sso-session` 섹션에는 AWS 액세스 포털 세션을 시작하는 설정이 포함되어 있습니다.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

 AWS SDK for Ruby는 IAM Identity Center 인증을 사용하기 위해 애플리케이션에 추가 젬(예: `aws-sdk-sso` 및 `aws-sdk-ssooidc`)을 추가할 필요가 없습니다.

### AWS 액세스 포털 세션 시작
<a name="accessportal"></a>

에 액세스하는 애플리케이션을 실행하기 전에 SDK가 IAM Identity Center 인증을 사용하여 자격 증명을 확인하려면 활성 AWS 액세스 포털 세션이 AWS 서비스필요합니다. 구성된 세션 길이에 따라 결국 액세스가 만료되고 SDK에 인증 오류가 발생합니다. AWS 액세스 포털에 로그인하려면에서 다음 명령을 실행합니다 AWS CLI.

```
aws sso login
```

지침에 따라 기본 프로필을 설정했다면 `--profile` 옵션으로 명령을 직접적으로 호출할 필요가 없습니다. SSO 토큰 공급자 구성에서 명명된 프로필을 사용하는 경우 `aws sso login --profile named-profile` 명령을 사용합니다.

필요할 경우 이미 활성 세션이 있는지 테스트하려면 다음 AWS CLI 명령을 실행합니다.

```
aws sts get-caller-identity
```

세션이 활성 상태인 경우 이 명령에 대한 응답은 공유 `config` 파일에 구성된 IAM Identity Center 계정 및 권한 집합을 보고합니다.

**참고**  
이미 활성 AWS 액세스 포털 세션이 있고를 실행하는 경우 `aws sso login`자격 증명을 제공할 필요가 없습니다.  
로그인 프로세스에서 데이터에 대한 AWS CLI 액세스를 허용하라는 메시지가 표시될 수 있습니다. AWS CLI 는 SDK for Python을 기반으로 구축되므로 권한 메시지에 `botocore` 이름의 변형이 포함될 수 있습니다.

## 세부 인증 정보
<a name="credother"></a>

인간 사용자(*인간 ID*라고도 함)는 애플리케이션의 사용자, 관리자, 개발자, 운영자 및 소비자입니다. AWS 환경 및 애플리케이션에 액세스하려면 자격 증명이 있어야 합니다. 조직의 구성원인 인간 사용자, 즉 개발자는 *작업 인력 ID*라고도 합니다.

에 액세스할 때 임시 자격 증명을 사용합니다 AWS. 인간 사용자의 자격 증명 공급자를 사용하여 임시 자격 증명을 제공하는 역할을 수임하여 AWS 계정에 대한 페더레이션 액세스를 제공할 수 있습니다. 중앙 액세스 관리를 위해 AWS IAM Identity Center (IAM Identity Center)을 사용하여 계정에 대한 액세스 권한과 해당 계정 내 권한을 관리하는 것이 좋습니다. 더 많은 대안을 보려면 다음을 참조하세요.
+ 모범 사례에 대해 자세히 알아보려면 **IAM 사용 설명서에서 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.
+ 단기 AWS 자격 증명을 생성하려면 *IAM 사용 설명서*의 [임시 보안 자격 증명을 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html).
+  AWS SDK for Ruby 자격 증명 공급자 체인과 SDK가 시퀀스에서 다양한 인증 방법을 자동으로 시도하는 방법에 대해 알아보려면 섹션을 참조하세요[보안 인증 공급자 체인](credential-providers.md#credchain).
+  AWS SDK 자격 증명 공급자 구성 설정은 SDK 및 도구 참조 안내서의 [표준화된 자격 증명 공급자](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)를 참조하세요. *AWS SDKs *

# AWS SDK for Ruby 설치
<a name="setup-install"></a>

이 섹션에는 AWS SDK for Ruby의 사전 조건 및 설치 지침이 포함되어 있습니다.

## 사전 조건
<a name="aws-ruby-sdk-prerequisites"></a>

 AWS SDK for Ruby를 사용하기 전에 먼저를 인증해야 합니다 AWS. 인증 설정에 대한 자세한 내용은 [AWS SDK for Ruby를 AWS 사용하여 로 인증](credentials.md)를 참조하세요.

## SDK 설치
<a name="installing-the-sdk"></a>

Ruby Gem과 마찬가지로 AWS SDK for Ruby를 설치할 수 있습니다. gem은 [RubyGems](https://rubygems.org/gems/aws-sdk/)에서 확인할 수 있습니다. AWS SDK for Ruby는 모듈식으로 설계되었으며 로 구분됩니다 AWS 서비스. 전체 `aws-sdk` gem을 설치하는 데는 많은 시간이 소요되며 한 시간 이상 걸릴 수 있습니다.

사용하는에 대해서만 젬을 설치하는 AWS 서비스 것이 좋습니다. 이러한 이름은와 같`aws-sdk-service_abbreviation`으며 전체 목록은 AWS SDK for Ruby README 파일의 [지원되는 서비스](https://github.com/aws/aws-sdk-ruby/#supported-services) 테이블에서 확인할 수 있습니다. 예를 들어 Amazon S3 서비스와 인터페이스하기 위한 gem은 [https://rubygems.org/gems/aws-sdk-s3](https://rubygems.org/gems/aws-sdk-s3)에서 직접 사용할 수 있습니다.

### Ruby 버전 관리자
<a name="installing-rvm"></a>

시스템 Ruby를 사용하는 대신 다음과 같은 Ruby 버전 관리자를 사용하는 것이 좋습니다.
+ [RVM](http://rvm.io/)
+ [chruby](https://github.com/postmodern/chruby)
+ [rbenv](https://github.com/rbenv/rbenv)

예를 들어 Amazon Linux 2 운영 체제를 사용하는 경우 다음 명령을 사용하여 RVM을 업데이트하고 사용 가능한 Ruby 버전을 나열한 다음 AWS SDK for Ruby를 사용하여 개발하는 데 사용할 버전을 선택할 수 있습니다. 필요한 최소 Ruby 버전은 2.5입니다.

```
$ rvm get head
$ rvm list known
$ rvm install ruby-3.1.3
$ rvm --default use 3.1.3
```

### Bundler
<a name="bundler"></a>

 [Bundler](http://bundler.io/)를 사용하는 경우 다음 명령은 AWS SDK for Ruby Gem for Amazon S3를 설치합니다.

1. Bundler를 설치하고 `Gemfile`을 생성합니다.

   ```
   $ gem install bundler
   $ bundle init
   ```

1. 생성된를 열고 코드가 사용할 각 AWS 서비스 젬에 대한 `gem` 줄을 `Gemfile` 추가합니다. Amazon S3 예제를 사용하여 따라하려면 파일 하단에 다음과 같은 줄을 추가합니다.

   ```
   gem "aws-sdk-s3"
   ```

1. Gemfile을 저장합니다.

1. `Gemfile`에 지정된 종속성을 설치합니다.

   ```
   $ bundle install
   ```

# AWS SDK for Ruby를 사용하여 간단한 애플리케이션 생성
<a name="hello"></a>

 AWS SDK for Ruby를 사용하여 Amazon S3에 인사합니다. 다음 예제에서는 Amazon S3 버킷의 목록을 표시합니다.

## 코드 작성
<a name="aws-ruby-sdk-hello-world-code"></a>

다음 코드를 복사하여 새로운 소스 파일에 붙여 넣습니다. 파일 이름을 `hello-s3.rb`으로 지정합니다.

```
require 'aws-sdk-s3'

# Wraps Amazon S3 resource actions.
class BucketListWrapper
  attr_reader :s3_resource

  # @param s3_resource [Aws::S3::Resource] An Amazon S3 resource.
  def initialize(s3_resource)
    @s3_resource = s3_resource
  end

  # Lists buckets for the current account.
  #
  # @param count [Integer] The maximum number of buckets to list.
  def list_buckets(count)
    puts 'Found these buckets:'
    @s3_resource.buckets.each do |bucket|
      puts "\t#{bucket.name}"
      count -= 1
      break if count.zero?
    end
    true
  rescue Aws::Errors::ServiceError => e
    puts "Couldn't list buckets. Here's why: #{e.message}"
    false
  end
end

# Example usage:
def run_demo
  wrapper = BucketListWrapper.new(Aws::S3::Resource.new)
  wrapper.list_buckets(25)
end

run_demo if $PROGRAM_NAME == __FILE__
```

AWS SDK for Ruby는 모듈식으로 설계되었으며 로 구분됩니다 AWS 서비스. gem이 설치된 후 Ruby 소스 파일 상단에 있는 `require` 명령문을 통해 Amazon S3 서비스용 AWS SDK 클래스 및 메서드를 가져옵니다. 사용 가능한 AWS 서비스 Gem의 전체 목록은 AWS SDK for Ruby README 파일의 [지원되는 서비스](https://github.com/aws/aws-sdk-ruby/#supported-services) 테이블을 참조하세요.

```
require 'aws-sdk-s3'
```

## 프로그램 실행
<a name="aws-ruby-sdk-hello-world-running"></a>

명령 프롬프트를 열어 Ruby 프로그램을 실행합니다. Ruby 프로그램을 실행하는 일반적인 명령 구문은 다음과 같습니다.

```
ruby [source filename] [arguments...]
```

이 샘플 코드는 인수를 사용하지 않습니다. 이 코드를 실행하려면 명령 프롬프트에 다음을 입력합니다.

```
$ ruby hello-s3.rb
```

## Windows 사용자를 위한 참고 사항
<a name="aws-ruby-sdk-quick-start-windows"></a>

Windows에서 SSL 인증서를 사용하고 Ruby 코드를 실행하면 다음과 비슷한 오류가 표시될 수 있습니다.

```
C:\Ruby>ruby buckets.rb
C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Seahorse::Client::NetworkingError)
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `block in connect'

         from C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:921:in `connect'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in `do_start'
         from C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:857:in `start'
...
```

이 문제를 해결하려면 첫 번째 AWS 호출 전에 Ruby 소스 파일에 다음 줄을 추가합니다.

```
Aws.use_bundled_cert!
```

Ruby 프로그램에 `aws-sdk-s3` gem만 사용하는 경우, 번들 인증서를 사용하려면 `aws-sdk-core` gem도 추가해야 합니다.

## 다음 단계
<a name="aws-ruby-sdk-hello-world-next-steps"></a>

다른 많은 Amazon S3 작업을 테스트하려면 GitHub의 [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/ruby/example_code//s3)를 확인하세요.