

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.

# Übermitteln von HTTP-Anforderungen an Amazon SWF
<a name="UsingJSON-swf"></a>

Wenn Sie keinen der verwenden AWS SDKs, können Sie Amazon Simple Workflow Service (Amazon SWF) -Operationen über HTTP mit der POST-Anforderungsmethode ausführen. Bei der POST-Methode müssen Sie den Vorgang im Header der Anforderung festlegen und im Anforderungstext die Daten für den Vorgang im JSON-Format angeben. 

## Inhalt des HTTP-Headers
<a name="HTTPHeader"></a>

Amazon SWF benötigt die folgenden Informationen im Header einer HTTP-Anfrage:
+ `host`Der Amazon SWF SWF-Endpunkt. 
+ `x-amz-date`Sie müssen den Zeitstempel entweder im `Date` HTTP-Header oder im angeben AWS `x-amz-date header` (in einigen HTTP-Clientbibliotheken können Sie den `Date` Header nicht festlegen). Ist der Header `x-amz-date` vorhanden, ignoriert das System bei der Anforderungsauthentifizierung alle Header des Typs `Date`.

  Das Datum muss in einem der folgenden drei Formate angegeben werden, wie in HTTP/1.1 RFC festgelegt:
  + Sun, 06 Nov 1994 08:49:37 GMT (RFC 822, aktualisiert durch RFC 1123)
  + Sunday, 06-Nov-94 08:49:37 GMT (RFC 850, abgelöst durch RFC 1036)
  + Sun Nov 6 08:49:37 1994 (ANSI C asctime()-Format)
+ `x-amzn-authorization` Die Parameter der signierten Anforderung im Format:

  ```
  AWS3 AWSAccessKeyId=####,Algorithm=HmacSHA256, [,SignedHeaders=Header1;Header2;...]
  Signature=S(StringToSign)
  ```

  `AWS3`— Dies ist ein AWS implementierungsspezifisches Tag, das die Authentifizierungsversion angibt, die zum Signieren der Anfrage verwendet wurde (derzeit ist dieser Wert für Amazon SWF immer). `AWS3`

  `AWSAccessKeyId`— Ihre AWS Zugangsschlüssel-ID.

  `Algorithm`— Der Algorithmus, der zur Erstellung des HMAC-SHA-Werts von verwendet wurde string-to-sign, z. B. oder. `HmacSHA256` `HmacSHA1`

  `Signature`— Base64 (Algorithmus ( StringToSign,)). SigningKey Details dazu finden Sie unter [Berechnung der HMAC-SHA-Signatur für Amazon SWF](HMACAuth-swf.md).

  `SignedHeaders`— (Optional) Muss, falls vorhanden, eine Liste aller HTTP-Header enthalten, die in der HttpHeaders kanonisierten Berechnung verwendet wurden. Die Listeneinträge müssen durch ein einzelnes Semikolon (;) (ASCII-Zeichen 59) getrennt werden. 
+  `x-amz-target`— Der Zieldienst der Anfrage und die Operation für die Daten im Format 

  ` com.amazonaws.swf.service.model.SimpleWorkflowService. + <action> `

   Beispiel: `com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain` 
+ `content-type`— Der Typ muss JSON und den Zeichensatz angeben, als `application/json; charset=UTF-8`

 Nachfolgend finden Sie einen Beispiel-Header für eine HTTP-Anforderung zum Erstellen einer Domäne. 

```
POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1
Host: swf.us-east-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
X-Amz-Date: Fri, 13 Jan 2012 18:42:12 GMT
X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain
Content-Encoding: amz-1.0
X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=tzjkF55lxAxPhzp/BRGFYQRQRq6CqrM254dTDE/EncI=
Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html
Content-Length: 91
Pragma: no-cache
Cache-Control: no-cache

{"name": "867530902",
 "description": "music",
 "workflowExecutionRetentionPeriodInDays": "60"}
```

Das folgende Beispiel enthält die entsprechende HTTP-Antwort. 

```
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: application/json
x-amzn-RequestId: 4ec4ac3f-3e16-11e1-9b11-7182192d0b57
```

## HTTP-Textinhalt
<a name="JSONschema"></a>

Der Textkörper einer HTTP-Anforderung enthält die Daten für den Vorgang, der im Header der HTTP-Anforderung festgelegt ist. Verwenden Sie das JSON-Datenformat zur gleichzeitigen Übermittlung von Datenwerten und -strukturen. Elemente können mit der Klammerschreibweise innerhalb anderer Elemente verschachtelt werden. Das Folgende zeigt beispielsweise eine Anforderung, alle Workflow-Ausführungen aufzulisten, die zwischen zwei angegebenen Zeitpunkten gestartet wurden. Dabei wird die Unix-Zeitnotation verwendet. 

```
{
 "domain": "867530901",
 "startTimeFilter":
 {
   "oldestDate": 1325376070,
	 "latestDate": 1356998399
 },
 "tagFilter":
 {
   "tag": "music purchase"
 }
}
```

## Beispiel für eine Amazon SWF JSON-Anfrage und -Antwort
<a name="JSONMajorExample"></a>

Das folgende Beispiel zeigt eine Anfrage an Amazon SWF nach einer Beschreibung der Domain, die wir zuvor erstellt haben. Dann wird die Amazon SWF SWF-Antwort angezeigt. 

### HTTP-POST-Anforderung
<a name="http-post-request"></a>

```
POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1
Host: swf.us-east-1.amazonaws.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json; charset=UTF-8
X-Requested-With: XMLHttpRequest
X-Amz-Date: Sun, 15 Jan 2012 03:13:33 GMT
X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.DescribeDomain
Content-Encoding: amz-1.0
X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=IFJtq3M366CHqMlTpyqYqd9z0ChCoKDC5SCJBsLifu4=
Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html
Content-Length: 21
Pragma: no-cache
Cache-Control: no-cache

{"name": "867530901"}
```

### Antwort von Amazon SWF
<a name="swf-response"></a>

```
HTTP/1.1 200 OK
Content-Length: 137
Content-Type: application/json
x-amzn-RequestId: e86a6779-3f26-11e1-9a27-0760db01a4a8

{"configuration":
  {"workflowExecutionRetentionPeriodInDays": "60"},
 "domainInfo":
  {"description": "music",
   "name": "867530901",
   "status": "REGISTERED"}
}
```

Beachten Sie, dass auf das Protokoll (`HTTP/1.1`) ein Statuscode (`200`) folgt. Der Codewert `200` gibt an, dass ein Vorgang erfolgreich war. 

Amazon SWF serialisiert keine Nullwerte. Wenn Ihr JSON-Parser so eingestellt ist, dass er Nullwerte für Anfragen serialisiert, ignoriert Amazon SWF sie. 

# Berechnung der HMAC-SHA-Signatur für Amazon SWF
<a name="HMACAuth-swf"></a>

Jede Anfrage an Amazon SWF muss authentifiziert werden. Sie signieren Ihre Anfragen AWS SDKs automatisch und verwalten Ihre tokenbasierte Authentifizierung. Wenn Sie jedoch eigene HTTP `POST`-Anforderungen schreiben möchten, müssen Sie einen `x-amzn-authorization`-Wert für den HTTP `POST Header`-Inhalt als Teil Ihrer Anforderungsauthentifizierung erstellen.

Weitere Informationen zum Formatieren von Headern finden Sie unter [Inhalt des HTTP-Headers](UsingJSON-swf.md#HTTPHeader). Informationen zur AWS SDK für Java Implementierung der Signierung von AWS Version 3 finden Sie in der [ AWSSigner.java-Klasse](https://github.com/aws/aws-sdk-java/blob/master/aws-java-sdk-core/src/main/java/com/amazonaws/auth/AWS3Signer.java).

## Erstellen einer Anforderungssignatur
<a name="AuthProcess"></a>

Bevor Sie eine HMAC-SHA-Anforderungssignatur erstellen, müssen Sie Ihre AWS -Anmeldeinformationen (Zugriffsschlüssel-ID und geheimer Schlüssel) abrufen.

**Wichtig**  
Sie können entweder SHA1 oder verwenden, um Ihre Anfragen SHA256 zu signieren. Stellen Sie jedoch sicher, dass Sie im gesamten Signaturprozess die gleiche Methode verwenden. Die jeweilige Methode muss mit dem Wert des `Algorithm`-Namens im HTTP-Header übereinstimmen. 

### So erstellen Sie die Anforderungssignatur
<a name="swf-create-request-signature-steps"></a>

1. Erstellen Sie eine kanonische Form der HTTP-Anforderungsheader. Die kanonische Form des HTTP-Headers umfasst Folgendes:
   + `host`
   + Ein beliebiges Header-Element, das mit `x-amz-` beginnt

   Weitere Informationen zu diesen Headern finden Sie unter [Inhalt des HTTP-Headers](UsingJSON-swf.md#HTTPHeader).

   1. Konvertieren Sie für jedes Header-Name/Wert-Paar den Header-Namen (nicht den Header-Wert) in Kleinbuchstaben.

   1. Erstellen Sie eine Zuordnung des Header-Namens zu durch Komma getrennten Header-Werten.

      ```
      x-amz-example: value1
      x-amz-example: value2  =>  x-amz-example:value1,value2
      ```

      Weitere Informationen finden Sie unter [Section 4.2 of RFC 2616](http://tools.ietf.org/html/rfc2616).

   1. Konvertieren Sie für jedes Header-Name/Wert-Paar das Name/Wert-Paar in eine Zeichenfolge im Format `headerName:headerValue`. Schneiden Sie Leerzeichen am Anfang und am Ende von `headerName` und `headerValue` ab, sodass keine Leerzeichen vor und nach dem Doppelpunkt stehen.

      ```
      x-amz-example1:value1,value2
      x-amz-example2:value3
      ```

   1. Fügen Sie nach jeder konvertierten Zeile, einschließlich der letzten, eine neue Zeile (`U+000A`) ein.

   1. Sortieren Sie die konvertierten Zeichenfolgen alphabetisch nach dem Headernamen.

1. Erstellen Sie einen string-to-sign Wert, der die folgenden Elemente enthält:
   + Zeile `1`: Die HTTP-Methode (`POST`), gefolgt von einem Zeilenumbruch.
   + Zeile `2`: Die Anforderungs-URI (`/`), gefolgt von einem Zeilenumbruch.
   + Zeile `3`: Eine leere Zeichenfolge, gefolgt von einem Zeilenumbruch.
**Anmerkung**  
Normalerweise wird die Abfragezeichenfolge hier angezeigt, Amazon SWF verwendet jedoch keine Abfragezeichenfolge.
   + Zeilen `4–n`: Die Zeichenfolge, die die kanonisierten Anforderungs-Header darstellt, die Sie in Schritt 1 berechnet haben, gefolgt von einem Zeilenumbruch. Mit diesem Zeilenumbruch wird eine leere Zeile zwischen den Headern und dem Text der HTTP-Anforderung eingefügt. Weitere Informationen finden Sie unter [RFC 2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html).
   + Der Anforderungstext, *nicht* gefolgt von einem Zeilenumbruch.

1. Berechnet den SHA256 oder SHA1 Digest des string-to-sign Werts. Verwenden Sie die gleiche SHA-Methode für den gesamten Prozess.

1. Berechnen und Base64-kodieren Sie den HMAC-SHA mithilfe eines SHA256 oder eines SHA1 Digest (je nach verwendeter Methode) des Werts, der sich aus dem vorherigen Schritt ergibt, und des temporären geheimen Zugriffsschlüssels aus dem Security Token Service mithilfe der AWS API-Aktion. `[GetSessionToken](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingSessionTokens.html)`
**Anmerkung**  
Amazon SWF erwartet ein Gleichheitszeichen (`=`) am Ende des Base64-codierten HMAC-SHA-Werts. Wenn Ihre Base64-Codierung kein angefügtes Gleichheitszeichen umfasst, fügen Sie ein solches Zeichen am Ende des Werts an.

   Weitere Informationen zur Verwendung temporärer Sicherheitsanmeldedaten mit Amazon SWF und anderen AWS Diensten finden Sie unter [AWS Services That Work with IAM](https://docs.aws.amazon.com/STS/latest/UsingSTS/UsingTokens.html) im *IAM-Benutzerhandbuch*.

1. Platzieren Sie den resultierenden Wert als Wert für den `Signature` Namen im `x-amzn-authorization` Header der HTTP-Anfrage an Amazon SWF.

1. Amazon SWF verifiziert die Anfrage und führt den angegebenen Vorgang aus.