

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

# 구독 워크플로 자습서 1부:에서 Amazon SWF 사용 AWS SDK for Ruby
<a name="swf-sns-tutorial-setup-swf"></a>

**Topics**
+ [포함 AWS SDK for Ruby](#include-the-sdk-for-ruby)
+ [AWS 세션 구성](#configuring-the-aws-session)
+ [Amazon SWF 도메인 등록](#registering-swf-domain)
+ [다음 단계](#next-steps)

## 포함 AWS SDK for Ruby
<a name="include-the-sdk-for-ruby"></a>

`utils.rb`라는 파일을 생성하여 시작합니다. 이 파일의 코드는 필요한 경우 워크플로 및 활동 코드 둘 다에서 사용하는 Amazon SWF 도메인을 얻거나 생성하고 모든 클래스에 공통적인 코드를 삽입할 위치를 제공합니다.

먼저, SDK for Ruby에서 제공한 기능을 사용할 수 있도록 코드에 `aws-sdk-v1` 라이브러리를 포함해야 합니다.

```
require 'aws-sdk-v1'
```

이를 통해 AWS 네임스페이스에 액세스할 수 있습니다.이 네임스페이스는 AWS 자격 증명 및 리전과 같은 글로벌 세션 관련 값을 설정하는 기능을 제공하고 AWS 서비스 APIs에 대한 액세스도 제공합니다.

## AWS 세션 구성
<a name="configuring-the-aws-session"></a>

자격 AWS 증명( AWS 서비스에 액세스하는 데 필요)과 사용할 AWS 리전을 설정하여 AWS 세션을 구성합니다.

[AWS SDK for Ruby에는 환경 변수(AWS\_ACCESS\_KEY\_ID 및 AWS\_SECRET\_ACCESS\_KEY)에서 자격 AWS 증명을](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration) 설정하거나 로 설정하여 자격 증명을 설정하는 여러 가지 방법이 있습니다[https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method).AWS\_ACCESS\_KEY\_ID AWS\_SECRET\_ACCESS\_KEY 여기서는 후자의 방법을 사용하여 다음과 같은 YAML 구성 파일(`aws-config.txt`)에서 로드합니다.

```
---
:access_key_id: REPLACE_WITH_ACCESS_KEY_ID
:secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY
```

지금이 파일을 생성하여 *REPLACE\_WITH\_*로 시작하는 문자열을 AWS 액세스 키 ID 및 보안 액세스 키로 바꿉니다. AWS 액세스 키에 대한 자세한 내용은 Amazon Web Services 일반 참조의 [보안 자격 증명을 얻으려면 어떻게 해야 합니까?](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html)를 참조하세요. ** 

또한 사용할 AWS 리전을 설정해야 합니다. Amazon SNS를 통해 [SMS(문자 서비스)](http://en.wikipedia.org/wiki/Short_Message_Service)를 사용하여 사용자 휴대폰으로 문자 메시지를 보낼 예정이므로 Amazon SNS가 지원하는 리전을 사용하고 있는지 확인해야 합니다. Amazon Simple Notification Service 개발자 안내서의 [지원 리전 및 국가](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html)를 참조하십시오.

**참고**  
**us-east-1**에 액세스할 수 없거나 SMS 메시징이 지원되는 데모를 실행해도 괜찮은 경우 원하는 모든 리전을 자유롭게 사용할 수 있습니다. 샘플에서 SMS 기능을 제거하고 이메일을 단독 엔드포인트로 사용하여 Amazon SNS 주제를 구독할 수 있습니다.  
SMS 메시지 전송에 대한 자세한 내용은 *Amazon Simple Notification Service 개발자 안내서*의 [Amazon SNS를 사용한 SMS 알림 전송 및 수신](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html)을 참조하십시오.

이제 `utils.rb`에 일부 코드를 추가하여 구성 파일을 로드하고 사용자의 보안 인증을 가져온 다음 보안 인증과 리전을 [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method)에 제공합니다.

```
require 'yaml'

# Load the user's credentials from a file, if it exists.
begin
  config_file = File.open('aws-config.txt') { |f| f.read }
rescue
  puts "No config file! Hope you set your AWS credentials in the environment..."
end

if config_file.nil?
  options = { }
else
  options = YAML.load(config_file)
end

# SMS Messaging (which can be used by Amazon SNS) is available only in the
# `us-east-1` region.
$SMS_REGION = 'us-east-1'
options[:region] = $SMS_REGION

# Now, set the options
AWS.config = options
```

## Amazon SWF 도메인 등록
<a name="registering-swf-domain"></a>

Amazon SWF를 사용하려면 *도메인*을 설정해야 합니다. 도메인은 워크플로 및 활동을 보관하는 명명된 엔터티입니다. 많은 Amazon SWF 도메인을 등록할 수 있지만 모두 AWS 계정 내에 고유한 이름이 있어야 하고 워크플로가 도메인 간에 상호 작용할 수 없습니다. 애플리케이션의 모든 워크플로와 활동이 서로 상호 작용하려면 동일한 도메인에 있어야 합니다.

애플리케이션 전체에서 동일한 도메인을 사용할 것이기 때문에 `init_domain`라는 `utils.rb`에서 Amazon SWF 도메인 *SWFSampleDomain*을 검색하는 함수를 생성합니다.

도메인을 등록하면 여러 워크플로 실행에 재사용할 수 있습니다. 그러나 *이미 있는 도메인을 등록하려고 하면 오류가 발생하기 때문에* 이 코드에서는 먼저 도메인이 있는지 확인한 다음 있는 경우 기존 도메인을 사용합니다. 도메인이 없으면 생성합니다.

SDK for Ruby에서 Amazon SWF 도메인을 사용하려면 도메인을 열거하고 등록하는 데 사용할 수 있는 [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html)을 반환하는 [AWS::SimpleWorkflow.domains](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method)를 사용합니다.
+ 도메인이 이미 등록되어 있는지 확인하려면 [AWS::Simpleworkflow.domains.registered](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#registered-instance_method)에서 제공하는 목록을 살펴봅니다.
+ 새 도메인을 등록하려면 [AWS::Simpleworkflow.domains.register](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#register-instance_method)를 사용합니다.

다음은 `utils.rb`의 `init_domain`에 대한 코드입니다.

```
# Registers the domain that the workflow will run in.
def init_domain
  domain_name = 'SWFSampleDomain'
  domain = nil
  swf = AWS::SimpleWorkflow.new

  # First, check to see if the domain already exists and is registered.
  swf.domains.registered.each do | d |
    if(d.name == domain_name)
      domain = d
      break
    end
  end

  if domain.nil?
    # Register the domain for one day.
    domain = swf.domains.create(
      domain_name, 1, { :description => "#{domain_name} domain" })
  end

  return domain
end
```

## 다음 단계
<a name="next-steps"></a>

다음으로, [구독 워크플로 자습서 파트 2: 워크플로 구현](swf-sns-tutorial-implementing-workflow.md) 단원에서 워크플로 및 시작 코드를 생성합니다.