Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abonnement-Workflow-Tutorial Teil 1: Verwenden von Amazon SWF mit demAWS SDK for Ruby
Themen
Schließen Sie das AWS SDK for Ruby mit ein
Erstellen Sie zunächst eine Datei namens utils.rb
. Mit dem Code in dieser Datei wird die Amazon SWF-Domäne abgerufen bzw. bei Bedarf erstellt, die sowohl vom Workflow als auch vom Aktivitätencode verwendet wird. Die Datei bietet außerdem einen Ort, um für alle Klassen gemeinsamen Code zu speichern.
Zunächst müssen wir dieaws-sdk-v1
-Bibliothek in unserem Code, sodass wir die vom SDK bereitgestellten Funktionen für Ruby nutzen können.
require 'aws-sdk-v1'
Damit erhalten wir Zugriff auf dieAWSNamespace, der die Möglichkeit bietet, globale sitzungsrelevante Werte, wie IhreAWSAnmeldeinformationen und Region sowie Zugriff aufAWSService-APIs.
Konfigurieren vonAWS-Sitzung
Im nächsten Schritt konfigurieren wirAWSSitzung durch Einstellen unsererAWSAnmeldeinformationen (die für den Zugriff benötigt werdenAWSDienstleistungen) und dasAWS-Region, die verwendet werden soll
Es gibt eine Reihe von MöglichkeiteneinstellenAWS-Anmeldeinformationen imAWS-SDK for Ruby: Sie können in den Umgebungsvariablen (AWS_ACCESS_KEY_ID und AWS_SECRET_ACCESS_KEY) oder mitAWS.config
aus. Wir verwenden die letzte Methode und laden sie aus einer YAML-Konfigurationsdatei mit dem Namen aws-config.txt
hoch, die wie im Folgenden dargestellt aussieht.
--- :access_key_id: REPLACE_WITH_ACCESS_KEY_ID :secret_access_key: REPLACE_WITH_SECRET_ACCESS_KEY
Erstellen Sie diese Datei jetzt und ersetzen Sie die Strings beginnend mitREPLACE_MIT_mit IhremAWSZugriffsschlüssel-ID und geheimen Zugriffsschlüssel. Informationen über IhreAWSZugriffsschlüssel, sieheWas sind die Sicherheitsanmeldeinformationen?imAllgemeine Amazon Web Services Services-Referenzaus.
Außerdem müssen wir dieAWS-Region, die verwendet werden soll Weil wir das benutzen werdenShort Message Service (SMS)
Anmerkung
Wenn Sie keinen Zugriff auf us-east-1 haben oder das Beispiel nicht mit aktivierter SMS-Messagingfunktion ausführen möchten, können Sie eine andere Region verwenden. Sie können die SMS-Funktion aus dem Beispiel entfernen und E-Mail als alleinigen Endpunkt zum Abonnieren des Amazon SNS SNS-Themas verwenden.
Weitere Informationen zum Senden von SMS-Nachrichten finden Sie unterSenden und Empfangen von SMS-Benachrichtigungen mit Amazon SNSimAmazon Simple Notification Service-Entwickleraus.
Wir fügen jetzt etwas Code hinzuutils.rb
Um die Konfigurationsdatei zu laden, rufen Sie die Anmeldeinformationen des Benutzers ab und geben Sie die Anmeldeinformationen und die Region anAWS.config
aus.
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
Registrieren einer Amazon SWF-Domain
Um Amazon SWF nutzen zu können, müssen Sie eineDomäne: Eine benannte Entity, die Ihre Workflows und Aktivitäten spannt. Sie können viele Amazon SWF-Domains registrieren lassen, aber sie müssen alle eindeutige Namen in IhremAWSKonto und Workflows können nicht domänenübergreifend interagieren: Alle Workflows und Aktivitäten für Ihre Anwendung müssen sich in derselben Domäne befinden, um interagieren zu können.
Da wir in unserer gesamten Anwendung die gleiche Domäne verwenden, erstellen wir eine Funktion inutils.rb
genanntinit_domain
, die die Amazon SWF-Domain mit dem Namen abruftswfSampleDomainaus.
Sobald Sie eine Domäne registriert haben, können Sie sie für viele Workflow-Ausführungen wiederverwenden. Allerdings tritt ein Fehler auf, wenn Sie versuchen, eine bereits vorhandene Domäne zu registrieren. Daher prüft unser Code zunächst, ob die Domäne vorhanden ist, und verwendet diese gegebenenfalls. Wenn die Domäne nicht gefunden wird, erstellen wir sie.
Um mit Amazon SWF-Domains im SDK for Ruby zu arbeiten, verwenden SieAWS:: SimpleWorkflow.Domains, das eine zurückgibtDomainCollectiondas kann sowohl zum Aufzählen als auch zum Registrieren von Domains verwendet werden:
-
Um festzustellen, ob eine Domäne bereits registriert ist, sehen Sie in der von AWS::Simpleworkflow.domains.registered bereitgestellten Liste nach.
-
Verwenden Sie zum Registrieren einer neuen Domäne AWS::Simpleworkflow.domains.register.
Hier finden Sie den Code für init_domain
in 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
Nächste Schritte
Im nächsten Schritt erstellen Sie den Workflow und Ausgangscode in Abonnement-Workflow, Anleitung Teil 2: Implementieren des Workflows.