

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.

# Hinzufügen und Anpassen von Elastic Beanstalk-Umgebungsressourcen
<a name="environment-resources"></a>

Sie können Ihre Umgebungsressourcen, die Teil Ihrer Elastic Beanstalk-Umgebung sind, anpassen. Beispielsweise möchten Sie vielleicht eine Amazon SQS SQS-Warteschlange und einen Alarm zur Warteschlangentiefe hinzufügen, oder Sie möchten vielleicht einen ElastiCache Amazon-Cluster hinzufügen. Indem Sie Ihrem Quell-Bundle eine Konfigurationsdatei beifügen, können Sie die Umgebung einfach gleichzeitig mit der Bereitstellung der Anwendungsversion anpassen.

Sie können den `Resources` Schlüssel in einer [Konfigurationsdatei](ebextensions.md) verwenden, um AWS Ressourcen in Ihrer Umgebung zu erstellen und anzupassen. In Konfigurationsdateien definierte Ressourcen werden der CloudFormation Vorlage hinzugefügt, die zum Starten Ihrer Umgebung verwendet wird. Alle CloudFormation [Ressourcentypen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) werden unterstützt.

**Anmerkung**  
Wenn Sie eine Ressource hinzufügen, die nicht von Elastic Beanstalk verwaltet wird, achten Sie darauf, eine Benutzerrichtlinie mit den entsprechenden Berechtigungen für Ihre AWS Identity and Access Management (IAM-) Benutzer hinzuzufügen. Die [verwalteten Benutzerrichtlinien](AWSHowTo.iam.managed-policies.md), die Elastic Beanstalk bietet, decken nur Berechtigungen für von Elastic Beanstalk verwaltete Ressourcen ab.

Beispielsweise fügt die folgende Konfigurationsdatei einen Auto Scaling-Lebenszyklus-Hook zur Standard-Auto Scaling-Gruppe hinzu, die von Elastic Beanstalk erstellt wurde:

**`~/my-app/.ebextensions/as-hook.config`**

```
Resources:
  hookrole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {
               "Version": "2012-10-17",		 	 	 
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "autoscaling.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            }
      Policies: [ {
               "PolicyName": "SNS",
               "PolicyDocument": {
                      "Version": "2012-10-17",		 	 	 
                      "Statement": [{
                          "Effect": "Allow",
                          "Resource": "*",
                          "Action": [
                              "sqs:SendMessage",
                              "sqs:GetQueueUrl",
                              "sns:Publish"
                          ]
                        }
                      ]
                  }
               } ]
  hooktopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint: "my-email@example.com"
          Protocol: email
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

In diesem Beispiel werden drei Ressourcen definiert, `hookrole`, `hooktopic` und `lifecyclehook`. Die ersten beiden Ressourcen sind eine IAM-Rolle, die Amazon EC2 Auto Scaling die Erlaubnis erteilt, Nachrichten auf Amazon SNS zu veröffentlichen, und ein SNS-Thema, das Nachrichten von der Auto Scaling Scaling-Gruppe an eine E-Mail-Adresse weiterleitet. Elastic Beanstalk erstellt diese Ressourcen mit den angegebenen Eigenschaften und Typen.

Die letzte Ressource, `lifecyclehook`, ist der Lebenszyklus-Hook selbst:

```
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
      LifecycleTransition: autoscaling:EC2_INSTANCE_TERMINATING
      NotificationTargetARN: { "Ref" : "hooktopic" }
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Die Lebenszyklus-Hook-Definition verwendet zwei [Funktionen](ebextensions-functions.md), um die Werte für die Hook-Eigenschaften zu füllen. `{ "Ref" : "AWSEBAutoScalingGroup" }` ruft den Namen der Auto Scaling-Gruppe ab, die von Elastic Beanstalk für die Umgebung erstellt wurde. `AWSEBAutoScalingGroup` ist einer der Standard-[Ressourcennamen](customize-containers-format-resources-eb.md), die von Elastic Beanstalk bereitgestellt wurden.

Für `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#d0e48356)` gibt `Ref` nur den Namen der Rolle, nicht die ARN, zurück. Wenn Sie den ARN für den `RoleARN`-Parameter abrufen möchten, verwenden Sie stattdessen eine andere intrinsische Funktion, `Fn::GetAtt`, mit der jedes Attribut aus einer Ressource abgerufen werden kann. `RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }` ruft das `Arn`-Attribut aus der `hookrole`-Ressource ab.

`{ "Ref" : "hooktopic" }` ruft den ARN des Amazon SNS-Themas ab, der zuvor in der Konfigurationsdatei erstellt wurde. Der von zurückgegebene Wert `Ref` variiert je nach Ressourcentyp und ist im [Abschnitt zum](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html#d0e62250) Ressourcentyp im CloudFormation Benutzerhandbuch zu finden. AWS::SNS::Topic 

# Ändern der Ressourcen, die Elastic Beanstalk für Ihre Umgebung erstellt
<a name="customize-containers-format-resources-eb"></a>

Die Ressourcen, die Elastic Beanstalk für Ihre Umgebung erstellt, haben Namen. Mithilfe dieser Namen können Sie über eine [Funktion](ebextensions-functions.md) Informationen zu den Ressourcen abrufen oder die Eigenschaften der Ressourcen ändern, um deren Verhalten anzupassen. In diesem Thema werden die AWS Ressourcen beschrieben, die Elastic Beanstalk in den verschiedenen Umgebungstypen verwendet.

**Anmerkung**  
Das vorherige Thema [Angepasste Ressourcen](environment-resources.md) bietet einige Anwendungsfälle und Beispiele für das Anpassen von Umgebungsressourcen. Weitere Beispiele für Konfigurationsdateien finden Sie auch im späteren Thema [Beispiele für benutzerdefinierte Ressourcen](customize-environment-resources-examples.md). 

Webserver-Umgebungen verfügen über die folgenden Ressourcen.

**Webserver-Umgebungen**
+ `AWSEBAutoScalingGroup`([AWS::AutoScaling::AutoScalingGruppe](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html)) — Die Auto Scaling Scaling-Gruppe, die mit Ihrer Umgebung verknüpft ist.
+ Eine der folgenden beiden Ressourcen.
  + `AWSEBAutoScalingLaunchConfiguration`([AWS::AutoScaling::LaunchConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html)) — Die Startkonfiguration, die der Auto Scaling Scaling-Gruppe Ihrer Umgebung zugeordnet ist.
  + `AWSEBEC2LaunchTemplate`([AWS::EC2::LaunchTemplate](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-launchtemplate.html)) — Die Amazon EC2 EC2-Startvorlage, die von der Auto Scaling Scaling-Gruppe Ihrer Umgebung verwendet wird.
**Anmerkung**  
Wenn in Ihrer Umgebung Funktionen verwendet werden, die Amazon EC2-Startvorlagen erfordern und Ihrer Benutzerrichtlinie die erforderlichen Berechtigungen fehlen, schlägt das Erstellen oder Aktualisieren der Umgebung möglicherweise fehl. [Verwenden Sie die **AdministratorAccessvon AWSElastic Beanstalk**[verwaltete Benutzerrichtlinie](AWSHowTo.iam.managed-policies.md) oder fügen Sie Ihrer benutzerdefinierten Richtlinie die erforderlichen Berechtigungen hinzu.](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)
+ `AWSEBEnvironmentName`([AWS::ElasticBeanstalk::Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-beanstalk-environment.html)) — Ihre Umgebung.
+ `AWSEBSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) — Die Sicherheitsgruppe, die Ihrer Auto Scaling Scaling-Gruppe zugeordnet ist.
+ `AWSEBRDSDatabase`([AWS: :RDS:: DBInstance](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html)) — Die mit Ihrer Umgebung verbundene Amazon RDS-DB-Instance (falls zutreffend).

In einer Umgebung mit Load Balancer können Sie auf zusätzliche Ressourcen für den Load Balancer zugreifen. Classic Load Balancer verfügen über eine Ressource für den Load Balancer und über eine weitere Ressource für die ihm zugeordnete Sicherheitsgruppe. Anwendungs- und Netzwerk-Load Balancer verfügen über zusätzliche Ressourcen für den Standard-Listener, die Listener-Regel und die Zielgruppe des Load Balancers.

**Umgebungen mit Load Balancing**
+ `AWSEBLoadBalancer`([AWS::ElasticLoadBalancing::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-elb.html)) — Der klassische Load Balancer Ihrer Umgebung.
+ `AWSEBV2LoadBalancer`([AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html)) — Die Anwendung oder der Netzwerk-Loadbalancer Ihrer Umgebung.
+ `AWSEBLoadBalancerSecurityGroup`([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) — Nur in einer benutzerdefinierten [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) der Name der Sicherheitsgruppe, die Elastic Beanstalk für den Load Balancer erstellt. In einer Standard-VPC oder EC2 Classic weist Elastic Load Balancing dem Load Balancer eine Standard-Sicherheitsgruppe zu.
+ `AWSEBV2LoadBalancerListener`([AWS::ElasticLoadBalancingV2::Listener](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html)) — Ein Listener, der es dem Load Balancer ermöglicht, nach Verbindungsanfragen zu suchen und diese an eine oder mehrere Zielgruppen weiterzuleiten.
+ `AWSEBV2LoadBalancerListenerRule`([AWS::ElasticLoadBalancingV2::ListenerRule](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html)) — Definiert, auf welche Anfragen ein Elastic Load Balancing Listener reagiert und welche Aktion er ausführt.
+ `AWSEBV2LoadBalancerTargetGroup`([AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html)) — Eine Elastic Load Balancing Balancing-Zielgruppe, die Anfragen an ein oder mehrere registrierte Ziele weiterleitet, z. B. Amazon EC2 EC2-Instances.

Worker-Umgebungen verfügen über Ressourcen für die SQS-Warteschlange, die eingehende Anfragen puffert, sowie eine Amazon DynamoDB-Tabelle, die von den Instances zur Leader-Wahl verwendet wird.

**Worker-Umgebungen**
+ `AWSEBWorkerQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) — Die Amazon SQS SQS-Warteschlange, aus der der Daemon Anfragen abruft, die verarbeitet werden müssen.
+ `AWSEBWorkerDeadLetterQueue`([AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)) — Die Amazon SQS SQS-Warteschlange, in der Nachrichten gespeichert werden, die nicht zugestellt werden können oder die vom Daemon nicht erfolgreich verarbeitet wurden.
+ `AWSEBWorkerCronLeaderRegistry`([AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)) — Die Amazon DynamoDB-Tabelle, bei der es sich um die interne Registrierung handelt, die vom Daemon für periodische Aufgaben verwendet wird.

# Andere CloudFormation Vorlagentasten
<a name="ebextensions-otherkeys"></a>

Wir haben bereits Schlüssel für Konfigurationsdateien CloudFormation wie `Resources``files`, und eingeführt`packages`. Elastic Beanstalk fügt der CloudFormation Vorlage, die Ihre Umgebung unterstützt, den Inhalt von Konfigurationsdateien hinzu, sodass Sie andere CloudFormation Abschnitte verwenden können, um erweiterte Aufgaben in Ihren Konfigurationsdateien auszuführen.

**Topics**
+ [Parameters](#ebextensions-otherkeys-parameters)
+ [Outputs](#ebextensions-otherkeys-outputs)
+ [Mappings](#ebextensions-otherkeys-mappings)

## Parameters
<a name="ebextensions-otherkeys-parameters"></a>

Parameter sind eine Alternative zu den eigenen [benutzerdefinierten Optionen](configuration-options-custom.md) von Elastic Beanstalk, die Sie zum Definieren von Werten verwenden können, die Sie an anderer Stelle in Ihren Konfigurationsdateien verwenden. Ebenso wie benutzerdefinierte Optionen können Sie Parameter verwenden, um vom Benutzer konfigurierbare Werte zentral zu erfassen. Im Gegensatz zu benutzerdefinierten Optionen können Sie die API von Elastic Beanstalk nicht verwenden, um Parameterwerte festzulegen, und die Anzahl der Parameter, die Sie in einer Vorlage definieren können, ist begrenzt durch. CloudFormation

Ein Grund, warum Sie Parameter verwenden möchten, besteht darin, dass Ihre Konfigurationsdateien gleichzeitig als CloudFormation Vorlagen dienen. Wenn Sie Parameter anstelle von benutzerdefinierten Optionen verwenden, können Sie die Konfigurationsdatei verwenden, um dieselbe Ressource in einem CloudFormation eigenen Stapel zu erstellen. Beispiel: Sie haben eine Konfigurationsdatei, die ein Amazon EFS-Dateisystem zu Testzwecken zur Umgebung hinzufügt. Dann verwenden Sie dieselbe Datei, um ein unabhängiges Dateisystem zu erstellen, das nicht in den Produktionslebenszyklus Ihrer Umgebung eingebunden ist.

Das folgende Beispiel zeigt die Verwendung von Parametern, um vom Benutzer konfigurierbare Werte zu Beginn einer Konfigurationsdatei zu erfassen.

**Example [L oadbalancer-accesslogs-existingbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config) — Parameter**  

```
Parameters:
  bucket:
    Type: String
    Description: "Name of the Amazon S3 bucket in which to store load balancer logs"
    Default: "amzn-s3-demo-bucket"
  bucketprefix:
    Type: String
    Description: "Optional prefix. Can't start or end with a /, or contain the word AWSLogs"
    Default: ""
```

## Outputs
<a name="ebextensions-otherkeys-outputs"></a>

Verwenden Sie einen `Outputs`-Block, um Informationen zu den erstellen Ressourcen nach CloudFormation zu exportieren. Anschließend können Sie die `Fn::ImportValue` Funktion verwenden, um den Wert in eine CloudFormation Vorlage außerhalb von Elastic Beanstalk zu übertragen.

Im folgenden Beispiel wird ein Amazon SNS SNS-Thema erstellt und dessen ARN CloudFormation mit dem Namen `NotificationTopicArn` exportiert.

**Example [sns-topic.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/sns-topic.config)**  

```
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic

Outputs:
  NotificationTopicArn:
    Description: Notification topic ARN
    Value: { "Ref" : "NotificationTopic" }
    Export:
      Name: NotificationTopicArn
```

In einer Konfigurationsdatei für eine andere Umgebung oder einer CloudFormation Vorlage außerhalb von Elastic Beanstalk können Sie die `Fn::ImportValue` Funktion verwenden, um den exportierten ARN abzurufen. In diesem Beispiel wird der exportierte Wert einer Umgebungseigenschaft namens `TOPIC_ARN` zugewiesen.

**Example env.config**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    TOPIC_ARN: '`{ "Fn::ImportValue" : "NotificationTopicArn" }`'
```

## Mappings
<a name="ebextensions-otherkeys-mappings"></a>

Sie können eine Zuweisung verwenden, um Schlüssel-Wert-Paare nach Namespace sortiert zu speichern. Mit Zuweisungen können Sie Werte, die Sie in Ihren Konfigurationsdateien verwenden, strukturieren oder einen Parameterwert abhängig von einem anderen Wert ändern. mit der folgenden Konfiguration wird beispielsweise der Wert eines Konto-ID-Parameters basierend auf der aktuellen Region festgelegt.

**Example [L oadbalancer-accesslogs-newbucket .config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config) — Zuordnungen**  

```
Mappings: 
  Region2ELBAccountId: 
    us-east-1: 
      AccountId: "111122223333"
    us-west-2: 
      AccountId: "444455556666"
    us-west-1: 
      AccountId: "123456789012"
    eu-west-1: 
      AccountId: "777788889999"
...
            Principal: 
              AWS: 
                ? "Fn::FindInMap"
                : 
                  - Region2ELBAccountId
                  - 
                    Ref: "AWS::Region"
                  - AccountId
```

# Funktionen
<a name="ebextensions-functions"></a>

Sie können Funktionen in den Konfigurationsdateien verwenden, um Werte der Ressourceneigenschaften mit Informationen aus anderen Ressourcen oder aus den Einstellungen der Konfigurationsoptionen von Elastic Beanstalk zu füllen. Elastic Beanstalk unterstützt CloudFormation Funktionen (`Ref`,`Fn::GetAtt`,`Fn::Join`) und eine Elastic Beanstalk-spezifische Funktion,. `Fn::GetOptionSetting`

**Topics**
+ [Punkt](#ebextensions-functions-ref)
+ [Fn:: GetAtt](#ebextensions-functions-getatt)
+ [Fn::Join](#ebextensions-functions-join)
+ [Fn:: GetOptionSetting](#ebextensions-functions-getoptionsetting)

## Punkt
<a name="ebextensions-functions-ref"></a>

Wird verwendet`Ref`, um die standardmäßige Zeichenkettendarstellung einer Ressource abzurufen. AWS Der von `Ref` zurückgegebene Wert hängt vom Ressourcentyp – und gelegentlich auch von weiteren Faktoren – ab. Beispielsweise gibt eine Sicherheitsgruppe ([AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)) entweder den Namen oder die ID der Sicherheitsgruppe zurück, je nachdem, ob sich die Sicherheitsgruppe in einer standardmäßigen [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC), einer EC2 klassischen oder einer benutzerdefinierten VPC befindet.

```
{ "Ref" : "resource name" }
```

**Anmerkung**  
Weitere Informationen zu den einzelnen Ressourcentypen einschließlich der Rückgabewerte von `Ref` finden Sie unter [AWS -Ressourcentypen – Referenz](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) im *CloudFormation -Benutzerhandbuch*.

Aus dem Beispiel [Auto Scaling-Lebenszyklus-Hook](environment-resources.md):

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      AutoScalingGroupName: { "Ref" : "AWSEBAutoScalingGroup" }
```

Sie können es auch verwenden`Ref`, um den Wert eines CloudFormation Parameters abzurufen, der an anderer Stelle in derselben Datei oder in einer anderen Konfigurationsdatei definiert wurde.

## Fn:: GetAtt
<a name="ebextensions-functions-getatt"></a>

Wird verwendet`Fn::GetAtt`, um den Wert eines Attributs auf einer AWS Ressource abzurufen.

```
{ "Fn::GetAtt" : [ "resource name", "attribute name"] }
```

Aus dem Beispiel [Auto Scaling-Lebenszyklus-Hook](environment-resources.md):

```
Resources:
  lifecyclehook:
    Type: AWS::AutoScaling::LifecycleHook
    Properties:
      RoleARN: { "Fn::GetAtt" : [ "hookrole", "Arn"] }
```

Weitere Informationen finden Sie unter [Fn:: GetAtt](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html).

## Fn::Join
<a name="ebextensions-functions-join"></a>

Mit `Fn::Join` werden Zeichenfolgen mit einem Trennzeichen zusammengefasst. Die Zeichenfolgen können hartcodiert sein oder die Ausgabe von `Fn::GetAtt` oder `Ref` verwenden.

```
{ "Fn::Join" : [ "delimiter", [ "string1", "string2" ] ] }
```

Weitere Informationen finden Sie unter [Fn::Join](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html).

## Fn:: GetOptionSetting
<a name="ebextensions-functions-getoptionsetting"></a>

Mit `Fn::GetOptionSetting` wird der Einstellungswert einer [Konfigurationsoption](command-options.md) abgerufen, die für die Umgebung gilt. 

```
"Fn::GetOptionSetting":
  Namespace: "namespace"
  OptionName: "option name"
  DefaultValue: "default value"
```

Aus dem Beispiel [storing private keys](https-storingprivatekeys.md):

```
Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        S3Auth:
          type: "s3"
          buckets: ["elasticbeanstalk-us-west-2-123456789012"]
          roleName: 
            "Fn::GetOptionSetting": 
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

# Beispiele für benutzerdefinierte Ressourcen
<a name="customize-environment-resources-examples"></a>

Nachstehend finden Sie eine Liste mit Beispielen für Konfigurationsdateien, die Sie verwenden können, um Ihre Elastic Beanstalk-Umgebungen anzupassen:
+ [DynamoDB und CloudWatch SNS](https://elasticbeanstalk.s3.amazonaws.com/extensions/DynamoDB-with-CloudWatch-Alarms.config)
+ [Elastic Load Balancing und CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/ELB-Alarms.config)
+ [ElastiCache](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config)
+ [RDS und CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/RDS-Alarms.config)
+ [SQS, SNS und CloudWatch](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config)

Unterthemen dieser Seite enthalten einige erweiterte Beispiele für das Hinzufügen und Konfigurieren benutzerdefinierter Ressourcen in einer Elastic Beanstalk-Umgebung.

**Topics**
+ [Beispiel: ElastiCache](customize-environment-resources-elasticache.md)
+ [Beispiel: SQS CloudWatch, und SNS](customize-environment-resources-sqs.md)
+ [Beispiel: DynamoDB CloudWatch, und SNS](customize-environment-resources-dynamodb.md)

# Beispiel: ElastiCache
<a name="customize-environment-resources-elasticache"></a>

Die folgenden Beispiele fügen den Plattformen EC2-Classic und EC2-VPC (sowohl Standard- als auch benutzerdefinierte [Amazon Virtual Private Cloud (Amazon](https://docs.aws.amazon.com/vpc/latest/userguide/) VPC)) einen ElastiCache Amazon-Cluster hinzu. Weitere Informationen zu diesen Plattformen und dazu, wie Sie feststellen können, welche Plattformen EC2 für Ihre Region und Ihr Konto unterstützt, finden Sie unter. AWS [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) Sehen Sie dann im Abschnitt in diesem Thema nach, der für Ihre Plattform gilt.
+ [EC2-Classic-Plattformen](#customize-environment-resources-elasticache-classic)
+ [EC2-VPC (Standard)](#customize-environment-resources-elasticache-defaultvpc)
+ [EC2-VPC (Benutzerdefiniert)](#customize-environment-resources-elasticache-targetedvpc)

## EC2-Classic-Plattformen
<a name="customize-environment-resources-elasticache-classic"></a>

Dieses Beispiel fügt einer Umgebung mit Instances, die auf der EC2-Classic-Plattform gestartet wurden, einen ElastiCache Amazon-Cluster hinzu. Alle Eigenschaften, die in diesem Beispiel aufgeführt sind, sind die mindestens erforderlichen Eigenschaften, die für jeden Ressourcentyp eingerichtet werden müssen. [Sie können das Beispiel unter ElastiCache Beispiel herunterladen.](https://elasticbeanstalk.s3.amazonaws.com/extensions/ElastiCache.config) 

**Anmerkung**  
In diesem Beispiel werden AWS Ressourcen erstellt, für die Ihnen möglicherweise Gebühren berechnet werden. Weitere Informationen zur AWS Preisgestaltung finden Sie unter[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Einige Dienste sind Teil des AWS kostenlosen Nutzungskontingents. Als Neukunde können Sie diese Services kostenlos testen. Weitere Informationen finden Sie unter [https://aws.amazon.com/free/](https://aws.amazon.com/free/).

In diesem Beispiel gehen Sie wie folgt vor:

1. Erstellen Sie ein `[.ebextensions](ebextensions.md)`-Verzeichnis im Verzeichnis der obersten Ebene Ihres Quell-Bundles. 

1. Erstellen Sie zwei Konfigurationsdateien mit der Erweiterung `.config` und speichern Sie sie in Ihrem Verzeichnis `.ebextensions`. Eine Konfigurationsdatei definiert die Ressourcen und die andere die Optionen.

1. Stellen Sie Ihre Anwendung in Elastic Beanstalk bereit.

   Für YAML sind konsistente Einrückungen erforderlich. Wählen Sie die entsprechende Einrückungsebene aus, wenn Sie Inhalte in einer Beispielkonfigurationsdatei ersetzen, und stellen Sie sicher, dass Ihr Texteditor Leerzeichen statt Tabulatorzeichen zum Einrücken verwendet.

Erstellen Sie eine Konfigurationsdatei (z. B. `elasticache.config`), in der die Ressourcen definiert werden. In diesem Beispiel erstellen wir den ElastiCache Cluster, indem wir den Namen der ElastiCache Clusterressource (`MyElastiCache`) angeben, ihren Typ deklarieren und dann die Eigenschaften für den Cluster konfigurieren. Das Beispiel verweist auf den Namen der ElastiCache Sicherheitsgruppenressource, die in dieser Konfigurationsdatei erstellt und definiert wird. Als Nächstes erstellen wir eine ElastiCache Sicherheitsgruppe. Wir definieren den Namen für diese Ressource, deklarieren ihren Typ und fügen eine Beschreibung für die Sicherheitsgruppe hinzu. Schließlich haben wir die Eingangsregeln für die ElastiCache Sicherheitsgruppe so festgelegt, dass der Zugriff nur von Instances innerhalb der ElastiCache Sicherheitsgruppe (`MyCacheSecurityGroup`) und der Elastic Beanstalk-Sicherheitsgruppe () aus zulässig ist. `AWSEBSecurityGroup` Der Parametername `AWSEBSecurityGroup` ist ein fester Ressourcennamen von Elastic Beanstalk. Sie `AWSEBSecurityGroup` müssen Ihrer ElastiCache Sicherheitsgruppe Eingangsregeln hinzufügen, damit Ihre Elastic Beanstalk Beanstalk-Anwendung eine Verbindung zu den Instances in Ihrem Cluster herstellen kann. ElastiCache 

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.
          
Resources:
  MyElastiCache:
    Type: AWS::ElastiCache::CacheCluster
    Properties:
      CacheNodeType: 
         Fn::GetOptionSetting:
             OptionName : CacheNodeType
             DefaultValue: cache.m1.small
      NumCacheNodes: 
           Fn::GetOptionSetting:
             OptionName : NumCacheNodes
             DefaultValue: 1
      Engine: 
           Fn::GetOptionSetting:
             OptionName : Engine
             DefaultValue: memcached
      CacheSecurityGroupNames:
        - Ref: MyCacheSecurityGroup
  MyCacheSecurityGroup:
    Type: AWS::ElastiCache::SecurityGroup
    Properties:
      Description: "Lock cache down to webserver access only"
  MyCacheSecurityGroupIngress:
    Type: AWS::ElastiCache::SecurityGroupIngress
    Properties:
      CacheSecurityGroupName: 
        Ref: MyCacheSecurityGroup
      EC2SecurityGroupName:
        Ref: AWSEBSecurityGroup
```

Weitere Informationen zu den Ressourcen, die in dieser Beispielkonfigurationsdatei verwendet wurden, finden Sie unter folgenden Referenzen: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::ElastiCache::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group.html)
+ [AWS::ElastiCache: SecurityGroupIngress](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-security-group-ingress.html)

Erstellen Sie eine separate Konfigurationsdatei mit dem Namen `options.config` und definieren Sie benutzerdefinierte Optionseinstellungen. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     CacheNodeType : cache.m1.small
     NumCacheNodes : 1
     Engine : memcached
```

Diese Zeilen weisen Elastic Beanstalk an, die Werte für die Eigenschaften, und Engine aus den CacheNodeType Werten **CacheNodeType NumCacheNodes,, und Engine** in einer Konfigurationsdatei (options.config in unserem Beispiel) abzurufen ** NumCacheNodes,** die einen option\$1settings-Abschnitt mit einem **aws:elasticbeanstalk:customoption-Abschnitt** enthält, der ein Name-Wert-Paar enthält, das den tatsächlich zu verwendenden Wert enthält. Im obigen Beispiel werden folglich die Werte "cache.m1.small", "1" and "memcached" verwendet. Mehr über `Fn::GetOptionSetting` erfahren Sie unter [Funktionen](ebextensions-functions.md).

## EC2-VPC (Standard)
<a name="customize-environment-resources-elasticache-defaultvpc"></a>

Dieses Beispiel fügt einer Umgebung mit Instances, die auf der EC2-VPC-Plattform gestartet wurden, einen ElastiCache Amazon-Cluster hinzu. Dabei gelten vor allem die Informationen in diesem Abschnitt gilt für ein Szenario, in dem EC2 Instances in der Standard-VPC startet. Alle Eigenschaften in diesem Beispiel sind die mindestens erforderlichen Eigenschaften, die für jeden Ressourcentyp eingerichtet werden müssen. Weitere Informationen zur Standardeinstellung VPCs finden Sie unter [Ihre Standard-VPC und Subnetze](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html).

**Anmerkung**  
In diesem Beispiel werden AWS Ressourcen erstellt, für die Ihnen möglicherweise Gebühren berechnet werden. Weitere Informationen zur AWS Preisgestaltung finden Sie unter[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Einige Dienste sind Teil des AWS kostenlosen Nutzungskontingents. Als Neukunde können Sie diese Services kostenlos testen. Weitere Informationen finden Sie unter [https://aws.amazon.com/free/](https://aws.amazon.com/free/).

In diesem Beispiel gehen Sie wie folgt vor:

1. Erstellen Sie ein `[.ebextensions](ebextensions.md)`-Verzeichnis im Verzeichnis der obersten Ebene Ihres Quell-Bundles. 

1. Erstellen Sie zwei Konfigurationsdateien mit der Erweiterung `.config` und speichern Sie sie in Ihrem Verzeichnis `.ebextensions`. Eine Konfigurationsdatei definiert die Ressourcen und die andere die Optionen.

1. Stellen Sie Ihre Anwendung in Elastic Beanstalk bereit.

   Für YAML sind konsistente Einrückungen erforderlich. Wählen Sie die entsprechende Einrückungsebene aus, wenn Sie Inhalte in einer Beispielkonfigurationsdatei ersetzen, und stellen Sie sicher, dass Ihr Texteditor Leerzeichen statt Tabulatorzeichen zum Einrücken verwendet.

Benennen Sie nun die Ressourcenkonfigurationsdatei `elasticache.config`. Um den ElastiCache Cluster zu erstellen, gibt dieses Beispiel den Namen der ElastiCache Clusterressource (`MyElastiCache`) an, deklariert ihren Typ und konfiguriert dann die Eigenschaften für den Cluster. Im Beispiel wird auf die ID der Sicherheitsgruppenressource verwiesen, die wir in dieser Konfigurationsdatei erstellt und definiert haben.

Als Nächstes erstellen Sie eine EC2-Sicherheitsgruppe. Wir definieren den Namen für diese Ressource, deklarieren ihren Typ, fügen eine Beschreibung hinzu und legen Ingress-Regeln für die Sicherheitsgruppe fest, um Zugriff nur von Instances innerhalb der Elastic Beanstalk-Sicherheitsgruppe (`AWSEBSecurityGroup`) zu erlauben. (Der Parametername,`AWSEBSecurityGroup`, ist ein fester Ressourcenname, der von Elastic Beanstalk bereitgestellt wird. Sie `AWSEBSecurityGroup` müssen Ihrer ElastiCache Sicherheitsgruppe Eingangsregeln hinzufügen, damit Ihre Elastic Beanstalk Beanstalk-Anwendung eine Verbindung zu den Instances in Ihrem ElastiCache Cluster herstellen kann.)

Die Ingress-Regeln für die EC2-Sicherheitsgruppe definiert auch das IP-Protokoll und die Port-Nummern, auf denen Cache-Knoten Verbindung akzeptieren können. Für Redis ist die Standard-Portnummer `6379`.

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupName:
            Ref: "AWSEBSecurityGroup"
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      VpcSecurityGroupIds:
        -
          Fn::GetAtt:
            - MyCacheSecurityGroup
            - GroupId

Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Weitere Informationen zu den Ressourcen, die in dieser Beispielkonfigurationsdatei verwendet wurden, finden Sie unter folgenden Referenzen: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)

Geben Sie als Nächstes der Optionen-Konfigurationsdatei den Namen `options.config` und definieren Sie benutzerdefinierte Optionseinstellungen. 

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
```

Diese Zeilen informieren Elastic Beanstalk, die Werte für die Eigenschaften `CacheNodeType`, `NumCacheNodes`, `Engine` und `CachePort` aus den Werten `CacheNodeType`, `NumCacheNodes`, `Engine` und `CachePort` in einer Konfigurationsdatei (in diesem Beispiel `options.config`) abzurufen. Diese Datei enthält einen `aws:elasticbeanstalk:customoption`-Abschnitt (unter `option_settings`) mit Namen-Wert-Paaren mit den tatsächlichen zu verwendenden Werten. Im vorherigen Beispiel würden `cache.t2.micro`, `1`, `redis` und `6379` für diese Werte verwendet. Mehr über `Fn::GetOptionSetting` erfahren Sie unter [Funktionen](ebextensions-functions.md).

## EC2-VPC (Benutzerdefiniert)
<a name="customize-environment-resources-elasticache-targetedvpc"></a>

Wenn Sie eine benutzerdefinierte VPC auf der EC2-VPC-Plattform erstellen und diese als die VPC angeben, in der EC2 Instances startet, unterscheidet sich der Prozess des Hinzufügens eines ElastiCache Amazon-Clusters zu Ihrer Umgebung von dem einer Standard-VPC. Der Hauptunterschied besteht darin, dass Sie eine Subnetzgruppe für den Cluster erstellen müssen. ElastiCache Alle Eigenschaften in diesem Beispiel sind die mindestens erforderlichen Eigenschaften, die für jeden Ressourcentyp eingerichtet werden müssen.

**Anmerkung**  
In diesem Beispiel werden AWS Ressourcen erstellt, für die Ihnen möglicherweise Gebühren berechnet werden. Weitere Informationen zur AWS Preisgestaltung finden Sie unter[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Einige Dienste sind Teil des AWS kostenlosen Nutzungskontingents. Als Neukunde können Sie diese Services kostenlos testen. Weitere Informationen finden Sie unter [https://aws.amazon.com/free/](https://aws.amazon.com/free/).

In diesem Beispiel gehen Sie wie folgt vor:

1. Erstellen Sie ein `[.ebextensions](ebextensions.md)`-Verzeichnis im Verzeichnis der obersten Ebene Ihres Quell-Bundles. 

1. Erstellen Sie zwei Konfigurationsdateien mit der Erweiterung `.config` und speichern Sie sie in Ihrem Verzeichnis `.ebextensions`. Eine Konfigurationsdatei definiert die Ressourcen und die andere die Optionen.

1. Stellen Sie Ihre Anwendung in Elastic Beanstalk bereit.

   Für YAML sind konsistente Einrückungen erforderlich. Wählen Sie die entsprechende Einrückungsebene aus, wenn Sie Inhalte in einer Beispielkonfigurationsdatei ersetzen, und stellen Sie sicher, dass Ihr Texteditor Leerzeichen statt Tabulatorzeichen zum Einrücken verwendet.

Benennen Sie nun die Ressourcenkonfigurationsdatei `elasticache.config`. Um den ElastiCache Cluster zu erstellen, gibt dieses Beispiel den Namen der ElastiCache Clusterressource (`MyElastiCache`) an, deklariert ihren Typ und konfiguriert dann die Eigenschaften für den Cluster. Die Eigenschaften im Beispiel verweisen auf den Namen der Subnetzgruppe für den ElastiCache Cluster sowie auf die ID der Sicherheitsgruppenressource, die wir in dieser Konfigurationsdatei erstellen und definieren.

Als Nächstes erstellen Sie eine EC2-Sicherheitsgruppe. Wir definieren den Namen für diese Ressource, deklarieren ihren Typ, fügen eine Beschreibung und die VPC-ID hinzu und legen Ingress-Regeln für die Sicherheitsgruppe fest, um Zugriff nur von Instances innerhalb der Elastic Beanstalk-Sicherheitsgruppe (`AWSEBSecurityGroup`) zu erlauben. (Der Parametername,`AWSEBSecurityGroup`, ist ein fester Ressourcenname, der von Elastic Beanstalk bereitgestellt wird. Sie `AWSEBSecurityGroup` müssen Ihrer ElastiCache Sicherheitsgruppe Eingangsregeln hinzufügen, damit Ihre Elastic Beanstalk Beanstalk-Anwendung eine Verbindung zu den Instances in Ihrem ElastiCache Cluster herstellen kann.)

Die Ingress-Regeln für die EC2-Sicherheitsgruppe definiert auch das IP-Protokoll und die Port-Nummern, auf denen Cache-Knoten Verbindung akzeptieren können. Für Redis ist die Standard-Portnummer `6379`. Schließlich erstellt dieses Beispiel eine Subnetzgruppe für den Cluster. ElastiCache Wir definieren den Namen für diese Ressource, deklarieren ihren Typ und fügen eine Beschreibung und ID des Subnetzes in der Subnetzgruppe hinzu.

**Anmerkung**  
Wir empfehlen, private Subnetze für den ElastiCache Cluster zu verwenden. Weitere Informationen zu einer VPC mit einem privaten Subnetz finden Sie unter [https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html).

```
#This sample requires you to create a separate configuration file that defines the custom option settings for CacheCluster properties.

Resources:
  MyElastiCache:
    Type: "AWS::ElastiCache::CacheCluster"
    Properties:
      CacheNodeType:
        Fn::GetOptionSetting:
          OptionName : "CacheNodeType"
          DefaultValue : "cache.t2.micro"
      NumCacheNodes:
        Fn::GetOptionSetting:
          OptionName : "NumCacheNodes"
          DefaultValue : "1"
      Engine:
        Fn::GetOptionSetting:
          OptionName : "Engine"
          DefaultValue : "redis"
      CacheSubnetGroupName:
        Ref: "MyCacheSubnets"
      VpcSecurityGroupIds:
        - Ref: "MyCacheSecurityGroup"
  MyCacheSecurityGroup:
    Type: "AWS::EC2::SecurityGroup"
    Properties:
      GroupDescription: "Lock cache down to webserver access only"
      VpcId:
        Fn::GetOptionSetting:
          OptionName : "VpcId"
      SecurityGroupIngress :
        - IpProtocol : "tcp"
          FromPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          ToPort :
            Fn::GetOptionSetting:
              OptionName : "CachePort"
              DefaultValue: "6379"
          SourceSecurityGroupId:
            Ref: "AWSEBSecurityGroup"
  MyCacheSubnets:
    Type: "AWS::ElastiCache::SubnetGroup"
    Properties:
      Description: "Subnets for ElastiCache"
      SubnetIds:
        Fn::GetOptionSetting:
          OptionName : "CacheSubnets"
Outputs:
  ElastiCache:
    Description : "ID of ElastiCache Cache Cluster with Redis Engine"
    Value :
      Ref : "MyElastiCache"
```

Weitere Informationen zu den Ressourcen, die in dieser Beispielkonfigurationsdatei verwendet wurden, finden Sie unter folgenden Referenzen: 
+ [AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)
+ [AWS::EC2::SecurityGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html)
+ [AWS::ElastiCache::SubnetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-subnetgroup.html)

Geben Sie als Nächstes der Optionen-Konfigurationsdatei den Namen `options.config` und definieren Sie benutzerdefinierte Optionseinstellungen.

**Anmerkung**  
Im folgenden Beispiel ersetzen Sie die Beispiel-`CacheSubnets`- und -`VpcId`-Werte durch Ihre eigenen Subnetze und die VPC.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
    CacheNodeType : cache.t2.micro
    NumCacheNodes : 1
    Engine : redis
    CachePort : 6379
    CacheSubnets:
      - subnet-1a1a1a1a
      - subnet-2b2b2b2b
      - subnet-3c3c3c3c
    VpcId: vpc-4d4d4d4d
```

Diese Zeilen informieren Elastic Beanstalk, die Werte für die Eigenschaften `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets` und `VpcId` aus den Werten `CacheNodeType`, `NumCacheNodes`, `Engine`, `CachePort`, `CacheSubnets` und `VpcId` in einer Konfigurationsdatei (in diesem Beispiel `options.config`) abzurufen. Diese Datei enthält einen `aws:elasticbeanstalk:customoption`-Abschnitt (unter `option_settings`) mit Namen-Wert-Paaren mit den Beispielwerten. Im vorherigen Beispiel würden `cache.t2.micro`, `1`, `redis`, `6379`, `subnet-1a1a1a1a`, `subnet-2b2b2b2b`, `subnet-3c3c3c3c` und `vpc-4d4d4d4d` für diese Werte verwendet. Mehr über `Fn::GetOptionSetting` erfahren Sie unter [Funktionen](ebextensions-functions.md).

# Beispiel: SQS CloudWatch, und SNS
<a name="customize-environment-resources-sqs"></a>

In diesem Beispiel wird der Umgebung eine Amazon SQS-Warteschlange sowie ein Alarm für die Warteschlange hinzugefügt. In diesem Beispiel werden die mindestens erforderlichen Eigenschaften verwendet, die für jede Ressource eingerichtet werden müssen. Sie können das Beispiel unter [SQS](https://elasticbeanstalk.s3.amazonaws.com/extensions/SNS.config), SNS und herunterladen. CloudWatch 

**Anmerkung**  
In diesem Beispiel werden AWS Ressourcen erstellt, für die Ihnen möglicherweise Gebühren berechnet werden. Weitere Informationen zur AWS Preisgestaltung finden Sie unter[https://aws.amazon.com/pricing/](https://aws.amazon.com/pricing/). Einige Dienste sind Teil des AWS kostenlosen Nutzungskontingents. Als Neukunde können Sie diese Services kostenlos testen. Weitere Informationen finden Sie unter [https://aws.amazon.com/free/](https://aws.amazon.com/free/).

In diesem Beispiel gehen Sie wie folgt vor:

1. Erstellen Sie ein `[.ebextensions](ebextensions.md)`-Verzeichnis im Verzeichnis der obersten Ebene Ihres Quell-Bundles. 

1. Erstellen Sie zwei Konfigurationsdateien mit der Erweiterung `.config` und speichern Sie sie in Ihrem Verzeichnis `.ebextensions`. Eine Konfigurationsdatei definiert die Ressourcen und die andere die Optionen.

1. Stellen Sie Ihre Anwendung in Elastic Beanstalk bereit.

   Für YAML sind konsistente Einrückungen erforderlich. Wählen Sie die entsprechende Einrückungsebene aus, wenn Sie Inhalte in einer Beispielkonfigurationsdatei ersetzen, und stellen Sie sicher, dass Ihr Texteditor Leerzeichen statt Tabulatorzeichen zum Einrücken verwendet.

Erstellen Sie eine Konfigurationsdatei (z. B. sqs.config), in der die Ressourcen definiert werden. In diesem Beispiel wird eine SQS-Warteschlange erstellt und die `VisbilityTimeout`-Eigenschaft wird in der `MySQSQueue`-Ressource definiert. Anschließend wird ein SNS-`Topic` erstellt und angegeben, dass die E-Mail im Falle eines ausgelösten Alarms an `someone@example.com` gesendet wird. Schließlich geben wir einen CloudWatch Alarm aus, wenn die Warteschlange mehr als 10 Nachrichten enthält. In der Eigenschaft `Dimensions` werden der Name der Dimension und der Wert, der die Maßeinheit der Dimension darstellt, angegeben. Hier wird `Fn::GetAtt` für die Rückgabe des Werts `QueueName` von `MySQSQueue` verwendet.

```
#This sample requires you to create a separate configuration file to define the custom options for the SNS topic and SQS queue.
Resources:
  MySQSQueue:
    Type: AWS::SQS::Queue
    Properties: 
      VisibilityTimeout:
        Fn::GetOptionSetting:
          OptionName: VisibilityTimeout
          DefaultValue: 30
  AlarmTopic:
    Type: AWS::SNS::Topic
    Properties: 
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: AlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email
  QueueDepthAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: "Alarm if queue depth grows beyond 10 messages"
      Namespace: "AWS/SQS"
      MetricName: ApproximateNumberOfMessagesVisible
      Dimensions:
        - Name: QueueName
          Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"] }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 10
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: AlarmTopic
      InsufficientDataActions:
        - Ref: AlarmTopic

Outputs :
  QueueURL: 
    Description : "URL of newly created SQS Queue"
    Value : { Ref : "MySQSQueue" }
  QueueARN :
    Description : "ARN of newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "Arn"]}
  QueueName :
    Description : "Name newly created SQS Queue"
    Value : { "Fn::GetAtt" : [ "MySQSQueue", "QueueName"]}
```

Weitere Informationen zu den Ressourcen, die in dieser Beispielkonfigurationsdatei verwendet wurden, finden Sie unter folgenden Referenzen: 
+ [AWS::SQS::Queue](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)

Erstellen Sie eine separate Konfigurationsdatei mit dem Namen `options.config` und definieren Sie benutzerdefinierte Optionseinstellungen.

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     VisibilityTimeout : 30
     AlarmEmail : "nobody@example.com"
```

Diese Zeilen weisen Elastic Beanstalk an, die Werte für die Eigenschaften und Subscription Endpoint aus den VisibilityTimeout Werten **VisibilityTimeout und Subscription Endpoint** in einer Konfigurationsdatei (options.config in unserem Beispiel) **abzurufen, die einen Abschnitt option\$1settings mit einem **aws:elasticbeanstalk:customoption-Abschnitt**** enthält, der ein Name-Wert-Paar enthält, das den tatsächlich zu verwendenden Wert enthält. Im obigen Beispiel werden folglich die Werte "30" und "nobody@amazon.com" verwendet. Mehr über `Fn::GetOptionSetting` erfahren Sie unter [Funktionen](ebextensions-functions.md).

# Beispiel: DynamoDB CloudWatch, und SNS
<a name="customize-environment-resources-dynamodb"></a>

Diese Konfigurationsdatei richtet die DynamoDB-Tabelle als Sitzungshandler für eine PHP-basierte Anwendung ein, die das AWS SDK for PHP 2 verwendet. Wenn Sie dieses Beispiel verwenden möchten, müssen Sie ein IAM-Instance-Profil haben, das zu den Instances in Ihrer Umgebung hinzugefügt und für den Zugriff auf die DynamoDB-Tabelle verwendet wird.

 Sie können das in diesem Schritt verwendete Beispiel unter [DynamoDB Session Support-Beispiel](https://elasticbeanstalk.s3.amazonaws.com/extensions/PHP-DynamoDB-Session-Support.zip) herunterladen. Das Beispiel enthält die folgenden Dateien:
+ Die Beispielanwendung, `index.php`
+ Eine Konfigurationsdatei,`dynamodb.config`, um eine DynamoDB-Tabelle und andere AWS Ressourcen zu erstellen und zu konfigurieren und Software auf den EC2-Instances zu installieren, die die Anwendung in einer Elastic Beanstalk Beanstalk-Umgebung hosten
+ Die Konfigurationsdatei `options.config`, die die Standardwerte in `dynamodb.config` mit spezifischen Einstellungen für diese bestimmte Installation überschreibt

**`index.php`**

```
<?php

// Include the SDK using the Composer autoloader
require '../vendor/autoload.php';

use Aws\DynamoDb\DynamoDbClient;

// Grab the session table name and region from the configuration file
list($tableName, $region) = file(__DIR__ . '/../sessiontable');
$tableName = rtrim($tableName);
$region = rtrim($region);

// Create a DynamoDB client and register the table as the session handler
$dynamodb = DynamoDbClient::factory(array('region' => $region));
$handler = $dynamodb->registerSessionHandler(array('table_name' => $tableName, 'hash_key' => 'username'));

// Grab the instance ID so we can display the EC2 instance that services the request
$instanceId = file_get_contents("http://169.254.169.254/latest/meta-data/instance-id");
?>
<h1>Elastic Beanstalk PHP Sessions Sample</h1>
<p>This sample application shows the integration of the Elastic Beanstalk PHP
container and the session support for DynamoDB from the AWS SDK for PHP 2.
Using DynamoDB session support, the application can be scaled out across
multiple web servers. For more details, see the
<a href="https://aws.amazon.com/php/">PHP Developer Center</a>.</p>

<form id="SimpleForm" name="SimpleForm" method="post" action="index.php">
<?php
echo 'Request serviced from instance ' . $instanceId . '<br/>';
echo '<br/>';

if (isset($_POST['continue'])) {
  session_start();
  $_SESSION['visits'] = $_SESSION['visits'] + 1;
  echo 'Welcome back ' . $_SESSION['username'] . '<br/>';
  echo 'This is visit number ' . $_SESSION['visits'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} elseif (isset($_POST['killsession'])) {
  session_start();
  echo 'Goodbye ' . $_SESSION['username'] . '<br/>';
  session_destroy();
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
} elseif (isset($_POST['newsession'])) {
  session_start();
  $_SESSION['username'] = $_POST['username'];
  $_SESSION['visits'] = 1;
  echo 'Welcome to a new session ' . $_SESSION['username'] . '<br/>';
  session_write_close();
  echo '<br/>';
  echo '<input type="Submit" value="Refresh" name="continue" id="continue"/>';
  echo '<input type="Submit" value="Delete Session" name="killsession" id="killsession"/>';
} else {
  echo 'To get started, enter a username.<br/>';
  echo '<br/>';
  echo 'Username: <input type="text" name="username" id="username" size="30"/><br/>';
  echo '<input type="Submit" value="New Session" name="newsession" id="newsession"/>';
}
?>
</form>
```

**`.ebextensions/dynamodb.config`**

```
Resources:
  SessionTable:
    Type: AWS::DynamoDB::Table
    Properties:
      KeySchema: 
        HashKeyElement:
          AttributeName:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyName
              DefaultValue: "username"
          AttributeType:
            Fn::GetOptionSetting:
              OptionName : SessionHashKeyType
              DefaultValue: "S"
      ProvisionedThroughput:
        ReadCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnits
            DefaultValue: 1
        WriteCapacityUnits:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnits
            DefaultValue: 1

  SessionWriteCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " write capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedWriteCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionWriteCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionReadCapacityUnitsLimit:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, " read capacity limit on the session table." ]]}
      Namespace: "AWS/DynamoDB"
      MetricName: ConsumedReadCapacityUnits
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 12
      Threshold:
          Fn::GetOptionSetting:
            OptionName : SessionReadCapacityUnitsAlarmThreshold
            DefaultValue: 240
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionThrottledRequestsAlarm:
    Type: AWS::CloudWatch::Alarm
    Properties:
      AlarmDescription: { "Fn::Join" : ["", [{ "Ref" : "AWSEBEnvironmentName" }, ": requests are being throttled." ]]}
      Namespace: AWS/DynamoDB
      MetricName: ThrottledRequests
      Dimensions:
        - Name: TableName
          Value: { "Ref" : "SessionTable" }
      Statistic: Sum
      Period: 300
      EvaluationPeriods: 1
      Threshold: 
        Fn::GetOptionSetting:
          OptionName: SessionThrottledRequestsThreshold
          DefaultValue: 1
      ComparisonOperator: GreaterThanThreshold
      AlarmActions:
        - Ref: SessionAlarmTopic
      InsufficientDataActions:
        - Ref: SessionAlarmTopic

  SessionAlarmTopic:
    Type: AWS::SNS::Topic
    Properties:
      Subscription:
        - Endpoint:
            Fn::GetOptionSetting:
              OptionName: SessionAlarmEmail
              DefaultValue: "nobody@amazon.com"
          Protocol: email

files:
  "/var/app/sessiontable":
    mode: "000444"
    content: |
      `{"Ref" : "SessionTable"}`
      `{"Ref" : "AWS::Region"}`

  "/var/app/composer.json":
    mode: "000744"
    content:
      {
        "require": {
           "aws/aws-sdk-php": "*"
        }
      }

container_commands:
 "1-install-composer":
   command: "cd /var/app; curl -s http://getcomposer.org/installer | php"
 "2-install-dependencies":
   command: "cd /var/app; php composer.phar install"
 "3-cleanup-composer":
   command: "rm -Rf /var/app/composer.*"
```

In der Beispielkonfigurationsdatei erstellen wir zunächst die DynamoDB-Tabelle und konfigurieren die Primärschlüssel-Struktur für die Tabelle und die Kapazitätseinheiten, um ausreichend Ressourcen zuzuweisen, um den angeforderten Durchsatz zu bieten. Als Nächstes erstellen wir Alarme für und. CloudWatch `WriteCapacity` `ReadCapacity` Wir erstellen ein SNS-Thema, das eine E-Mail an "nobody@amazon.com" sendet, wenn die Alarmschwellenwerte überschritten werden. 

Nachdem wir unsere AWS Ressourcen für unsere Umgebung erstellt und konfiguriert haben, müssen wir die EC2-Instances anpassen. Wir verwenden den `files` Schlüssel, um die Details der DynamoDB-Tabelle an die EC2-Instances in unserer Umgebung zu übergeben und der `composer.json` Datei für das AWS SDK for PHP 2 ein „require“ hinzuzufügen. Schließlich führen wir Container-Befehle aus, um den Composer und die erforderlichen Abhängigkeiten zu installieren und das Installationsprogramm zu entfernen.

**`.ebextensions/options.config`**

```
option_settings:
  "aws:elasticbeanstalk:customoption":
     SessionHashKeyName                      : username
     SessionHashKeyType                      : S
     SessionReadCapacityUnits                : 1
     SessionReadCapacityUnitsAlarmThreshold  : 240
     SessionWriteCapacityUnits               : 1 
     SessionWriteCapacityUnitsAlarmThreshold : 240
     SessionThrottledRequestsThreshold       : 1
     SessionAlarmEmail                       : me@example.com
```

Ersetzen Sie den SessionAlarmEmail Wert durch die E-Mail, an die Alarmbenachrichtigungen gesendet werden sollen. Die `options.config`-Datei enthält die Werte, die für einige der in `dynamodb.config` definierten Variablen verwendet werden. Beispielsweise enthält `dynamodb.config` die folgenden Zeilen:

```
Subscription:
  - Endpoint:
      Fn::GetOptionSetting:
        OptionName: SessionAlarmEmail
        DefaultValue: "nobody@amazon.com"
```

Diese Zeilen, die Elastic Beanstalk anweisen, den Wert für die **Endpoint-Eigenschaft** aus dem **SessionAlarmEmail**Wert in einer Konfigurationsdatei (`options.config`in unserer Beispielanwendung) abzurufen, die einen option\$1settings-Abschnitt mit einem **aws:elasticbeanstalk:customoption-Abschnitt enthält, der ein Name-Wert-Paar enthält, das den tatsächlich zu verwendenden** Wert enthält. Im obigen Beispiel würde das `nobody@amazon.com` bedeuten, dass der Wert zugewiesen würde. **SessionAlarmEmail**

Weitere Informationen zu den in diesem Beispiel verwendeten CloudFormation Ressourcen finden Sie in den folgenden Referenzen:
+ [AWS::DynamoDB::Table](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)
+ [AWS::CloudWatch::Alarm](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html)
+ [AWS::SNS::Topic](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-topic.html)