

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tutorial Alur Kerja Berlangganan Bagian 1: Menggunakan Amazon SWF dengan AWS SDK untuk Ruby
<a name="swf-sns-tutorial-setup-swf"></a>

**Topics**
+ [Sertakan AWS SDK untuk Ruby](#include-the-sdk-for-ruby)
+ [Mengkonfigurasi Sesi AWS](#configuring-the-aws-session)
+ [Mendaftarkan Domain Amazon SWF](#registering-swf-domain)
+ [Langkah selanjutnya](#next-steps)

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

Mulailah dengan membuat file bernama `utils.rb`. Kode dalam file ini akan memperoleh, atau membuat jika perlu, domain Amazon SWF yang digunakan oleh kode alur kerja dan aktivitas dan akan menyediakan tempat untuk meletakkan kode yang umum untuk semua kelas kita.

Pertama, kita perlu menyertakan pustaka `aws-sdk-v1` dalam kode kita, sehingga kita dapat menggunakan fitur yang disediakan oleh SDK for Ruby.

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

Ini memberi kami akses ke AWS namespace, yang menyediakan kemampuan untuk menetapkan nilai terkait sesi global, seperti AWS kredensi dan wilayah Anda, dan juga menyediakan akses ke layanan. AWS APIs

## Mengkonfigurasi Sesi AWS
<a name="configuring-the-aws-session"></a>

Kami akan mengonfigurasi AWS Sesi dengan menetapkan AWS kredensional kami (yang diperlukan untuk mengakses AWS layanan) dan AWS wilayah yang akan digunakan.

Ada beberapa cara untuk [mengatur AWS kredensional di AWS SDK for Ruby: dengan menyetelnya dalam](https://docs.aws.amazon.com/AWSRubySDK/latest/index.html#Basic_Configuration) variabel lingkungan AWS\_ACCESS (\_KEY\_ID dan AWS\_SECRET \_ACCESS\_KEY) atau dengan menyetelnya dengan. [https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS.html#config-class_method) Kami akan menggunakan metode terakhir, yaitu memuatnya dari file konfigurasi YAML, disebut `aws-config.txt`, yang terlihat seperti ini.

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

Buat file ini sekarang, ganti string yang dimulai dengan *REPLACE\_WITH\_* dengan ID kunci AWS akses dan kunci akses rahasia Anda. Untuk informasi tentang kunci AWS akses Anda, lihat [Bagaimana Cara Mendapatkan Kredensi Keamanan](https://docs.aws.amazon.com/general/latest/gr/getting-aws-sec-creds.html)? dalam *Referensi Umum Amazon Web Services*.

Kita juga perlu mengatur AWS wilayah yang akan digunakan. Karena kami akan menggunakan [Short Message Service (SMS)](http://en.wikipedia.org/wiki/Short_Message_Service) (Layanan Pesan Singkat) untuk mengirim pesan teks ke ponsel pengguna dengan Amazon SNS, kami perlu memastikan bahwa kami menggunakan wilayah yang didukung oleh Amazon SNS. Lihat [Wilayah dan Negara yang Didukung](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html) di Panduan Developer Amazon Simple Notification Service.

**catatan**  
Jika Anda tidak memiliki akses ke **us-east-1**, atau tidak tertarik untuk menjalankan demo dengan mengaktifkan olahpesan SMS, jangan ragu untuk menggunakan wilayah mana pun yang Anda inginkan. Anda dapat menghapus fungsionalitas SMS dari sampel dan menggunakan email sebagai satu-satunya endpoint untuk berlangganan topik Amazon SNS.  
Untuk informasi selengkapnya tentang mengirim pesan SMS, lihat [Mengirim dan Menerima Notifikasi SMS Menggunakan Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/SMSMessages.html) di *Panduan Developer Amazon Simple Notification Service*.

Sekarang kita akan menambahkan beberapa kode ke `utils.rb` untuk memuat file konfigurasi, mendapatkan kredensial pengguna, lalu memberikan kredensial dan wilayah ke [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
```

## Mendaftarkan Domain Amazon SWF
<a name="registering-swf-domain"></a>

Untuk menggunakan Amazon SWF, Anda perlu mengatur *domain*: entitas bernama yang akan menampung alur kerja dan aktivitas Anda. Anda dapat memiliki banyak domain Amazon SWF yang terdaftar, tetapi semuanya harus memiliki nama unik dalam AWS akun Anda, dan alur kerja tidak dapat berinteraksi di seluruh domain: Semua alur kerja dan aktivitas untuk aplikasi Anda harus berada dalam domain yang sama untuk berinteraksi satu sama lain.

*Karena kita akan menggunakan domain yang sama di seluruh aplikasi kita, kita akan membuat fungsi yang `utils.rb` dipanggil`init_domain`, yang akan mengambil domain Amazon SWF bernama DomainSWFSample.*

Setelah Anda mendaftarkan domain, Anda dapat menggunakannya kembali untuk eksekusi alur kerja yang banyak. Namun, *itu adalah kesalahan untuk mencoba mendaftarkan domain yang sudah ada*, jadi kode kami akan memeriksa terlebih dahulu untuk melihat apakah domain itu ada, dan akan menggunakan domain yang ada jika dapat ditemukan. Jika domain tidak dapat ditemukan, kami akan membuatnya.

Untuk bekerja dengan domain Amazon SWF di SDK for Ruby, [AWS::Simplegunakan](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow.html#domains-instance_method) Workflow.domains, yang menampilkan [DomainCollection](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html)domain yang dapat digunakan untuk menghitung dan mendaftarkan domain:
+ Untuk memeriksa apakah domain sudah terdaftar, Anda dapat melihat daftar yang disediakan [AWS::Simpleworkflowoleh.domains.registered](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#registered-instance_method).
+ Untuk mendaftarkan domain baru, gunakan [AWS::Simpleworkflow.domains.register](https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/SimpleWorkflow/DomainCollection.html#register-instance_method).

Berikut adalah kode untuk `init_domain` di `utils.rb`.

```
# 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
```

## Langkah selanjutnya
<a name="next-steps"></a>

Selanjutnya, Anda akan membuat alur kerja dan kode starter di [Tutorial Alur Kerja Langganan Bagian 2: Menerapkan Alur Kerja](swf-sns-tutorial-implementing-workflow.md).