기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SDK for Ruby 버전 1 또는 2를 버전 3으로 마이그레이션
이 주제의 목적은 AWS SDK for Ruby 버전 1 또는 2에서 버전 3으로 마이그레이션하는 과정을 돕는 것입니다.
Side-by-side 사용
AWS SDK for Ruby의 버전 1 또는 2를 버전 3으로 바꿀 필요는 없습니다. 동일한 애플리케이션에서는 이 둘을 함께 사용할 수 있습니다. 자세한 내용은 이 블로그 게시물
간단하게 예를 들면 다음과 같습니다.
require 'aws-sdk-v1' # version 1 require 'aws-sdk' # version 2 require 'aws-sdk-s3' # version 3 s3 = AWS::S3::Client.new # version 1 s3 = Aws::S3::Client.new # version 2 or 3
버전 3 SDK를 사용하기 위해 기존 작업 버전 1 또는 2 코드를 다시 쓸 필요는 없습니다. 올바른 마이그레이션 전략은 버전 3 SDK에 대해서만 새 코드를 쓰는 것입니다.
일반적인 차이
버전 3은 한 가지 중요한 면에서 버전 2와 다릅니다.
-
각 서비스는 별도의 gem으로 사용할 수 있습니다.
버전 2는 여러 가지 중요한 면에서 버전 1과 다릅니다.
-
Aws
및AWS
간에 루트 네임스페이스가 다릅니다. 따라서 항목별 사용이 가능합니다. -
Aws.config
- 이제 메서드가 아닌 vanilla Ruby 해시입니다. -
엄격한 생성자 옵션 - 버전 1에서 클라이언트나 리소스 객체를 생성할 때 알 수 없는 생성자 옵션이 무시됩니다. 버전 2에서는 알 수 없는 생성자 옵션이
ArgumentError
를 트리거합니다. 예:# version 1 AWS::S3::Client.new(http_reed_timeout: 10) # oops, typo'd option is ignored # version 2 Aws::S3::Client.new(http_reed_timeout: 10) # => raises ArgumentError
클라이언트 차이
버전 2와 버전 3의 클라이언트 클래스 간에 차이가 없습니다.
버전 1과 버전 2 간에 클라이언트 클래스는 외부적인 차이가 가장 적습니다. 다수의 서비스 클라이언트에는 클라이언트 생성 후에 호환되는 인터페이스가 있습니다. 일부 중요한 차이는 다음과 같습니다.
-
Aws::S3::Client
- 버전 1 Amazon S3 클라이언트 클래스는 수작업으로 코딩되었습니다. 버전 2는 서비스 모델에서 생성됩니다. 메서드 이름과 입력이 버전 2에서 크게 다릅니다. -
Aws::EC2::Client
- 버전 2는 출력 목록에 복수형 이름을 사용하고, 버전 1은 접미사_set
를 사용합니다. 예:# version 1 resp = AWS::EC2::Client.new.describe_security_groups resp.security_group_set #=> [...] # version 2 resp = Aws::EC2::Client.new.describe_security_groups resp.security_groups #=> [...]
-
Aws::SWF::Client
- 버전 2는 구조화된 응답을 사용하는 반면, 버전 1은 vanilla Ruby 해시를 사용합니다. -
서비스 클래스 이름 바꾸기 - 버전 2는 여러 서비스에 대해 다음과 같이 다른 이름을 사용합니다.
-
AWS::SimpleWorkflow
는Aws::SWF
가 됩니다. -
AWS::ELB
는Aws::ElasticLoadBalancing
가 됩니다. -
AWS::SimpleEmailService
는Aws::SES
가 됩니다.
-
-
클라이언트 구성 옵션 - 버전 1 구성 옵션 중 일부가 버전 2에서 이름이 변경되었습니다. 다른 옵션은 제거되거나 바뀌었습니다. 주된 변경 사항은 다음과 같습니다.
-
:use_ssl
이 제거되었습니다. 버전 2는 모든 위치에서 SSL을 사용합니다. SSL을 비활성화하려면:endpoint
를 사용하는http://
를 구성해야 합니다. -
:ssl_ca_file
가 이제:ssl_ca_bundle
입니다. -
:ssl_ca_path
가 이제:ssl_ca_directory
입니다. -
:ssl_ca_store
을 추가했습니다. -
:endpoint
가 호스트 이름 대신 정규화된 HTTP 또는 HTTPS URI여야 합니다. -
각 서비스에 대한
:*_port
옵션이 제거되고 이제:endpoint
로 바뀌었습니다. -
:user_agent_prefix
가 이제:user_agent_suffix
입니다.
-
리소스 차이
버전 2와 버전 3의 리소스 인터페이스 간에 차이가 없습니다.
버전 1과 버전 2의 리소스 인터페이스 간에 큰 차이가 있습니다. 버전 1은 전적으로 수작업 코딩되었지만, 버전 2 리소스 인터페이스는 모델에서 생성됩니다. 버전 2 리소스 인터페이스는 일관성이 훨씬 더 높습니다. 몇 가지 주요 시스템적인 차이는 다음과 같습니다.
-
분리된 리소스 클래스 - 버전 2에서는 서비스 이름이 클래스가 아닌 모듈입니다. 여기서는 모듈이 리소스 인터페이스입니다.
# version 1 s3 = AWS::S3.new # version 2 s3 = Aws::S3::Resource.new
-
참조 리소스 - 버전 2 SDK는 모음과 개별 리소스 getter를 다음과 같은 두 개의 서로 다른 메서드로 분리합니다.
# version 1 s3.buckets['bucket-name'].objects['key'].delete # version 2 s3.bucket('bucket-name').object('key').delete
-
배치 작업 - 버전 1에서는 모든 배치 작업이 수작업 코딩된 유틸리티입니다. 버전 2에서는 다수의 배치 작업이 API를 통해 자동 생성된 일괄 처리 작업입니다. 버전 2 일괄 처리 인터페이스는 버전 1과 매우 다릅니다.