

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# サブスクリプションワークフローチュートリアルパート 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 ドメインを取得または作成し、すべてのクラスに共通のコードを配置する場所を提供します。

最初に、`aws-sdk-v1` ライブラリをコードに含める必要があります。これにより、SDK for Ruby が提供する機能を使用できるようになります。

```
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 認証情報を設定するには](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration)、環境変数 (AWS\_ACCESS\_KEY\_ID および AWS\_SECRET\_ACCESS\_KEY) で設定するか、 で設定する方法がいくつかあります[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-config.txt` という YAML 設定ファイルからロードします。これは次のようになります。

```
---
: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 リージョンを設定する必要があります。[Short Message Service (SMS)](http://en.wikipedia.org/wiki/Short_Message_Service) を使用して Amazon SNS でユーザーの電話にテキストメッセージを送信するため、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 トピックに登録する唯一のエンドポイントとして E メールを使用することができます。  
SMS メッセージの送信の詳細については、*Amazon 「Simple Notification Service 開発者ガイド*」の「[Amazon Simple Notification Service Developer Guide](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html)」 (Amazon SNS を使用した SMS 通知の送受信) を参照してください。

`utils.rb` にいくつかのコードを追加して Config ファイルをロードし、ユーザーの認証情報を取得し、認証情報とリージョンの両方を [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 アカウント内で一意の名前を持つ必要があり、ワークフローはドメイン間でやり取りできません。アプリケーションのすべてのワークフローとアクティビティは、相互にやり取りするために同じドメインに存在する必要があります。

アプリケーション全体で同じドメインを使用するため、`utils.rb` に `init_domain` という関数を作成し、*SWFSampleDomain* という名前の Amazon SWF ドメインを取得します。

ドメインを登録したら、それを多くのワークフローの実行に再利用できます。ただし、*すでに存在するドメインを登録しようとするとエラーになるので*、コードはまずドメインが存在するかどうかを確認し、見つかった場合は既存のドメインを使用します。ドメインが見つからない場合は作成します。

SDK forRuby で Amazon SWF ドメインを操作するには、[AWS::SimpleWorkflow.domains](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method) を使用します。これにより、ドメインの列挙と登録の両方に使用できる [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html) が返されます。
+ ドメインがすでに登録されているかどうかを確認するには、[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) でワークフローとスターターコードを作成します。