

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.

# Codebeispiele mit Anleitungen für die AWS SDK für PHP
<a name="examples_index"></a>

Dieser Abschnitt enthält Codebeispiele, die allgemeine AWS Szenarien demonstrieren, in denen der verwendet wird AWS SDK für PHP.

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

**Topics**
+ [Anmeldeinformationen](#examplecredentials)
+ [CloudFront Amazon-Beispiele](cf-examples.md)
+ [Amazon CloudSearch](service_cloudsearch-custom-requests.md)
+ [CloudWatch Amazon-Beispiele](cw-examples.md)
+ [EC2 Amazon-Beispiele](ec2-examples.md)
+ [OpenSearch Amazon-Dienst](service_es-data-plane.md)
+ [AWS Identity and Access Management Beispiele](iam-examples.md)
+ [AWS Key Management Service](kms-examples.md)
+ [Beispiele für Kinesis](kinesis-examples.md)
+ [AWS Elemental MediaConvert](emc-examples.md)
+ [Amazon S3 S3-Beispiele](s3-examples.md)
+ [AWS Secrets Manager](secretsmanager-examples-manage-secret.md)
+ [Amazon-SES-Beispiele](ses-examples.md)
+ [Beispiele für Amazon SNS](sns-examples.md)
+ [Beispiele für Amazon SQS](sqs-examples.md)
+ [Amazon EventBridge](eventbridge-examples.md)

# CloudFront Amazon-Beispiele mit der AWS SDK für PHP Version 3
<a name="cf-examples"></a>

Amazon CloudFront ist ein AWS Webservice, der die Bereitstellung statischer und dynamischer Webinhalte von Ihrem eigenen Webserver oder einem AWS Server wie Amazon S3 beschleunigt. CloudFront stellt Inhalte über ein weltweites Netzwerk von Rechenzentren bereit, die als Edge-Standorte bezeichnet werden. Wenn ein Benutzer Inhalte anfordert, mit denen Sie sie verteilen CloudFront, wird er an den Edge-Standort weitergeleitet, der die niedrigste Latenz bietet. Falls sich der Inhalt dort noch nicht im Cache befindet, ruft CloudFront eine Kopie vom Ursprungs-Server ab, stellt sie bereit, und speichert sie dann für zukünftige Anfragen im Cache.

Weitere Informationen CloudFront dazu finden Sie im [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

Der gesamte Beispielcode für die AWS SDK für PHP Version 3 ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

# Verwaltung von CloudFront Amazon-Distributionen mithilfe der CloudFront API und der AWS SDK für PHP Version 3
<a name="cloudfront-example-distribution"></a>

Amazon CloudFront speichert Inhalte an weltweiten Edge-Standorten im Cache, um die Verteilung statischer und dynamischer Dateien zu beschleunigen, die Sie auf Ihrem eigenen Server oder auf einem Amazon-Dienst wie Amazon S3 und Amazon EC2 speichern. Wenn Benutzer Inhalte von Ihrer Website anfordern, werden sie CloudFront vom nächstgelegenen Edge-Standort aus bereitgestellt, sofern die Datei dort zwischengespeichert ist. Andernfalls wird eine Kopie der Datei CloudFront abgerufen, bereitgestellt und dann für die nächste Anfrage zwischengespeichert. Das Speichern von Inhalten im Cache eines Edge-Standorts reduziert die Latenz von ähnlichen Benutzeranfragen in dieser Region.

Für jede CloudFront Verteilung, die Sie erstellen, geben Sie an, wo sich der Inhalt befindet und wie er verteilt werden soll, wenn Benutzer Anfragen stellen. Dieses Thema konzentriert sich auf Verteilungen von statischen und dynamischen Dateien wie HTML-, CSS-, JSON- und Bilddateien. Informationen zur Verwendung CloudFront mit Video-on-Demand finden Sie unter [On-Demand-Video und Live-Streaming mit CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/on-demand-streaming-video.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie eine Distribution mit [CreateDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createdistribution).
+ Holen Sie sich eine Distribution mit [GetDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getdistribution).
+ Listet Distributionen auf mit [ListDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listdistributions).
+ Aktualisieren Sie Distributionen mit. [UpdateDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#updatedistribution)
+ Deaktivieren Sie Distributionen mit. [DisableDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#disabledistribution)
+ Löschen Sie Distributionen mit. [DeleteDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#deletedistribution)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon CloudFront finden Sie im [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Erstellen Sie eine CloudFront Distribution
<a name="create-a-cf-distribution"></a>

Erstellen Sie eine Distribution aus einem Amazon S3 S3-Bucket. Im folgenden Beispiel werden optionale Parameter auskommentiert, aber Standardwerte werden angezeigt. Zum Hinzufügen von Anpassungen zu Ihrer Verteilung kommentieren Sie sowohl den Wert als auch den Parameter in `$distribution` aus.

Verwenden Sie den [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)Vorgang, um eine CloudFront Verteilung zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function createS3Distribution($cloudFrontClient, $distribution)
{
    try {
        $result = $cloudFrontClient->createDistribution([
            'DistributionConfig' => $distribution
        ]);

        $message = '';

        if (isset($result['Distribution']['Id'])) {
            $message = 'Distribution created with the ID of ' .
                $result['Distribution']['Id'];
        }

        $message .= ' and an effective URI of ' .
            $result['@metadata']['effectiveUri'] . '.';

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e['message'];
    }
}

function createsTheS3Distribution()
{
    $originName = 'my-unique-origin-name';
    $s3BucketURL = 'amzn-s3-demo-bucket.s3.amazonaws.com';
    $callerReference = 'my-unique-caller-reference';
    $comment = 'my-comment-about-this-distribution';
    $defaultCacheBehavior = [
        'AllowedMethods' => [
            'CachedMethods' => [
                'Items' => ['HEAD', 'GET'],
                'Quantity' => 2
            ],
            'Items' => ['HEAD', 'GET'],
            'Quantity' => 2
        ],
        'Compress' => false,
        'DefaultTTL' => 0,
        'FieldLevelEncryptionId' => '',
        'ForwardedValues' => [
            'Cookies' => [
                'Forward' => 'none'
            ],
            'Headers' => [
                'Quantity' => 0
            ],
            'QueryString' => false,
            'QueryStringCacheKeys' => [
                'Quantity' => 0
            ]
        ],
        'LambdaFunctionAssociations' => ['Quantity' => 0],
        'MaxTTL' => 0,
        'MinTTL' => 0,
        'SmoothStreaming' => false,
        'TargetOriginId' => $originName,
        'TrustedSigners' => [
            'Enabled' => false,
            'Quantity' => 0
        ],
        'ViewerProtocolPolicy' => 'allow-all'
    ];
    $enabled = false;
    $origin = [
        'Items' => [
            [
                'DomainName' => $s3BucketURL,
                'Id' => $originName,
                'OriginPath' => '',
                'CustomHeaders' => ['Quantity' => 0],
                'S3OriginConfig' => ['OriginAccessIdentity' => '']
            ]
        ],
        'Quantity' => 1
    ];
    $distribution = [
        'CallerReference' => $callerReference,
        'Comment' => $comment,
        'DefaultCacheBehavior' => $defaultCacheBehavior,
        'Enabled' => $enabled,
        'Origins' => $origin
    ];

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo createS3Distribution($cloudFrontClient, $distribution);
}

// Uncomment the following line to run this code in an AWS account.
// createsTheS3Distribution();
```

## Rufen Sie eine CloudFront Verteilung ab
<a name="retrieve-a-cf-distribution"></a>

Verwenden Sie den [GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html)Vorgang, um den Status und die Details einer bestimmten CloudFront Verteilung abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function getDistribution($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId
        ]);

        $message = '';

        if (isset($result['Distribution']['Status'])) {
            $message = 'The status of the distribution with the ID of ' .
                $result['Distribution']['Id'] . ' is currently ' .
                $result['Distribution']['Status'];
        }

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= ', and the effective URI is ' .
                $result['@metadata']['effectiveUri'] . '.';
        } else {
            $message = 'Error: Could not get the specified distribution. ' .
                'The distribution\'s status is not available.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getsADistribution()
{
    $distributionId = 'E1BTGP2EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo getDistribution($cloudFrontClient, $distributionId);
}

// Uncomment the following line to run this code in an AWS account.
// getsADistribution();
```

## CloudFront Verteilungen auflisten
<a name="list-cf-distributions"></a>

Rufen Sie mithilfe dieses Vorgangs eine Liste der vorhandenen CloudFront Distributionen in der angegebenen AWS Region von Ihrem Girokonto ab. [ListDistributions](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributions.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function listDistributions($cloudFrontClient)
{
    try {
        $result = $cloudFrontClient->listDistributions([]);
        return $result;
    } catch (AwsException $e) {
        exit('Error: ' . $e->getAwsErrorMessage());
    }
}

function listTheDistributions()
{
    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-2'
    ]);

    $distributions = listDistributions($cloudFrontClient);

    if (count($distributions) == 0) {
        echo 'Could not find any distributions.';
    } else {
        foreach ($distributions['DistributionList']['Items'] as $distribution) {
            echo 'The distribution with the ID of ' . $distribution['Id'] .
                ' has the status of ' . $distribution['Status'] . '.' . "\n";
        }
    }
}

// Uncomment the following line to run this code in an AWS account.
// listTheDistributions();
```

## Aktualisieren Sie eine Distribution CloudFront
<a name="update-a-cf-distribution"></a>

Das Aktualisieren einer CloudFront Distribution ähnelt dem Erstellen einer Distribution. Bei der Aktualisierung einer Verteilung sind jedoch mehr Felder erforderlich und alle Werte müssen berücksichtigt werden. Zur Vornahme von Änderungen an einer vorhandenen Verteilung empfehlen wir, zuerst die vorhandene Verteilung abzurufen und die zu aktualisierenden Werte im `$distribution`-Array zu ändern.

Verwenden Sie den [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)Vorgang, um eine angegebene CloudFront Distribution zu aktualisieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function updateDistribution(
    $cloudFrontClient,
    $distributionId,
    $distributionConfig,
    $eTag
) {
    try {
        $result = $cloudFrontClient->updateDistribution([
            'DistributionConfig' => $distributionConfig,
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);

        return 'The distribution with the following effective URI has ' .
            'been updated: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionConfig($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['Distribution']['DistributionConfig'])) {
            return [
                'DistributionConfig' => $result['Distribution']['DistributionConfig'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution configuration details.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function updateADistribution()
{
    // $distributionId = 'E1BTGP2EXAMPLE';
    $distributionId = 'E1X3BKQ569KEMH';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To change a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    }

    // To change a distribution, you must also first get information about
    // the distribution's current configuration. Then you must use that
    // information to build a new configuration.
    $currentConfig = getDistributionConfig($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $currentConfig)) {
        exit($currentConfig['Error']);
    }

    // To change a distribution's configuration, you can set the
    // distribution's related configuration value as part of a change request,
    // for example:
    // 'Enabled' => true
    // Some configuration values are required to be specified as part of a change
    // request, even if you don't plan to change their values. For ones you
    // don't want to change but are required to be specified, you can just reuse
    // their current values, as follows.
    $distributionConfig = [
        'CallerReference' => $currentConfig['DistributionConfig']["CallerReference"],
        'Comment' => $currentConfig['DistributionConfig']["Comment"],
        'DefaultCacheBehavior' => $currentConfig['DistributionConfig']["DefaultCacheBehavior"],
        'DefaultRootObject' => $currentConfig['DistributionConfig']["DefaultRootObject"],
        'Enabled' => $currentConfig['DistributionConfig']["Enabled"],
        'Origins' => $currentConfig['DistributionConfig']["Origins"],
        'Aliases' => $currentConfig['DistributionConfig']["Aliases"],
        'CustomErrorResponses' => $currentConfig['DistributionConfig']["CustomErrorResponses"],
        'HttpVersion' => $currentConfig['DistributionConfig']["HttpVersion"],
        'CacheBehaviors' => $currentConfig['DistributionConfig']["CacheBehaviors"],
        'Logging' => $currentConfig['DistributionConfig']["Logging"],
        'PriceClass' => $currentConfig['DistributionConfig']["PriceClass"],
        'Restrictions' => $currentConfig['DistributionConfig']["Restrictions"],
        'ViewerCertificate' => $currentConfig['DistributionConfig']["ViewerCertificate"],
        'WebACLId' => $currentConfig['DistributionConfig']["WebACLId"]
    ];

    echo updateDistribution(
        $cloudFrontClient,
        $distributionId,
        $distributionConfig,
        $eTag['ETag']
    );
}

// Uncomment the following line to run this code in an AWS account.
// updateADistribution();
```

## Deaktiviert eine CloudFront Distribution
<a name="disable-a-cf-distribution"></a>

Zum Deaktivieren oder Entfernen einer Verteilung ändern Sie ihren Status von „Bereitgestellt“ in „Deaktiviert“.

Verwenden Sie den [DisableDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DisableDistribution.html)Vorgang, um die angegebene CloudFront Distribution zu deaktivieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function disableDistribution(
    $cloudFrontClient,
    $distributionId,
    $distributionConfig,
    $eTag
) {
    try {
        $result = $cloudFrontClient->updateDistribution([
            'DistributionConfig' => $distributionConfig,
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);
        return 'The distribution with the following effective URI has ' .
            'been disabled: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionConfig($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['Distribution']['DistributionConfig'])) {
            return [
                'DistributionConfig' => $result['Distribution']['DistributionConfig'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution configuration details.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function disableADistribution()
{
    $distributionId = 'E1BTGP2EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To disable a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    }

    // To delete a distribution, you must also first get information about
    // the distribution's current configuration. Then you must use that
    // information to build a new configuration, including setting the new
    // configuration to "disabled".
    $currentConfig = getDistributionConfig($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $currentConfig)) {
        exit($currentConfig['Error']);
    }

    $distributionConfig = [
        'CacheBehaviors' => $currentConfig['DistributionConfig']["CacheBehaviors"],
        'CallerReference' => $currentConfig['DistributionConfig']["CallerReference"],
        'Comment' => $currentConfig['DistributionConfig']["Comment"],
        'DefaultCacheBehavior' => $currentConfig['DistributionConfig']["DefaultCacheBehavior"],
        'DefaultRootObject' => $currentConfig['DistributionConfig']["DefaultRootObject"],
        'Enabled' => false,
        'Origins' => $currentConfig['DistributionConfig']["Origins"],
        'Aliases' => $currentConfig['DistributionConfig']["Aliases"],
        'CustomErrorResponses' => $currentConfig['DistributionConfig']["CustomErrorResponses"],
        'HttpVersion' => $currentConfig['DistributionConfig']["HttpVersion"],
        'Logging' => $currentConfig['DistributionConfig']["Logging"],
        'PriceClass' => $currentConfig['DistributionConfig']["PriceClass"],
        'Restrictions' => $currentConfig['DistributionConfig']["Restrictions"],
        'ViewerCertificate' => $currentConfig['DistributionConfig']["ViewerCertificate"],
        'WebACLId' => $currentConfig['DistributionConfig']["WebACLId"]
    ];

    echo disableDistribution(
        $cloudFrontClient,
        $distributionId,
        $distributionConfig,
        $eTag['ETag']
    );
}

// Uncomment the following line to run this code in an AWS account.
// disableADistribution();
```

## Löscht eine CloudFront Distribution
<a name="delete-a-cf-distribution"></a>

Sobald eine Verteilung den Status „Deaktiviert“ aufweist, können Sie sie löschen.

Verwenden Sie den [DeleteDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteDistribution.html)Vorgang, um eine angegebene CloudFront Distribution zu entfernen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function deleteDistribution($cloudFrontClient, $distributionId, $eTag)
{
    try {
        $result = $cloudFrontClient->deleteDistribution([
            'Id' => $distributionId,
            'IfMatch' => $eTag
        ]);
        return 'The distribution at the following effective URI has ' .
            'been deleted: ' . $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getDistributionETag($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->getDistribution([
            'Id' => $distributionId,
        ]);

        if (isset($result['ETag'])) {
            return [
                'ETag' => $result['ETag'],
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        } else {
            return [
                'Error' => 'Error: Cannot find distribution ETag header value.',
                'effectiveUri' => $result['@metadata']['effectiveUri']
            ];
        }
    } catch (AwsException $e) {
        return [
            'Error' => 'Error: ' . $e->getAwsErrorMessage()
        ];
    }
}

function deleteADistribution()
{
    $distributionId = 'E17G7YNEXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    // To delete a distribution, you must first get the distribution's
    // ETag header value.
    $eTag = getDistributionETag($cloudFrontClient, $distributionId);

    if (array_key_exists('Error', $eTag)) {
        exit($eTag['Error']);
    } else {
        echo deleteDistribution(
            $cloudFrontClient,
            $distributionId,
            $eTag['ETag']
        );
    }
}

// Uncomment the following line to run this code in an AWS account.
// deleteADistribution();
```

# Verwaltung von CloudFront Amazon-Invalidierungen mithilfe der CloudFront API und der Version 3 AWS SDK für PHP
<a name="cloudfront-example-invalidation"></a>

Amazon CloudFront speichert Kopien statischer und dynamischer Dateien an weltweiten Edge-Standorten im Cache. Erstellen Sie zum Entfernen oder Aktualisieren einer Datei auf allen Edge-Standorten eine Aufhebung für alle Dateien bzw. für eine Gruppe von Dateien.

Die ersten 1.000 Aufhebungen jedes Kalendermonats sind kostenlos. Weitere Informationen zum Entfernen von Inhalten von einem CloudFront Edge-Standort finden Sie unter Dateien für [ungültig erklären](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie eine Invalidierung der Verteilung mit. [CreateInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createinvalidation)
+ Rufen Sie eine Distributions-Invalidierung ab mit. [GetInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getinvalidation)
+ Listet Distributionen auf mit. [ListInvalidations](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listinvalidations)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon CloudFront finden Sie im [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Erstellen Sie eine Invalidierung der Distribution
<a name="create-a-distribution-invalidation"></a>

Erstellen Sie eine Invalidierung der CloudFront Distribution, indem Sie den Pfad für die Dateien angeben, die Sie entfernen müssen. Dieses Beispiel hebt die Gültigkeit aller Dateien in der Verteilung auf, aber Sie können bestimmte Dateien unter `Items` identifizieren.

Verwenden Sie den Vorgang, um eine Invalidierung der CloudFront [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html)Verteilung zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function createInvalidation(
    $cloudFrontClient,
    $distributionId,
    $callerReference,
    $paths,
    $quantity
) {
    try {
        $result = $cloudFrontClient->createInvalidation([
            'DistributionId' => $distributionId,
            'InvalidationBatch' => [
                'CallerReference' => $callerReference,
                'Paths' => [
                    'Items' => $paths,
                    'Quantity' => $quantity,
                ],
            ]
        ]);

        $message = '';

        if (isset($result['Location'])) {
            $message = 'The invalidation location is: ' . $result['Location'];
        }

        $message .= ' and the effective URI is ' . $result['@metadata']['effectiveUri'] . '.';

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function createTheInvalidation()
{
    $distributionId = 'E17G7YNEXAMPLE';
    $callerReference = 'my-unique-value';
    $paths = ['/*'];
    $quantity = 1;

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo createInvalidation(
        $cloudFrontClient,
        $distributionId,
        $callerReference,
        $paths,
        $quantity
    );
}

// Uncomment the following line to run this code in an AWS account.
// createTheInvalidation();
```

## Holen Sie sich eine Distributions-Invalidierung
<a name="get-a-distribution-invalidation"></a>

Verwenden Sie den Vorgang, um den Status und die Details einer CloudFront Verteilung für ungültig zu erklären. [GetInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetInvalidation.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function getInvalidation($cloudFrontClient, $distributionId, $invalidationId)
{
    try {
        $result = $cloudFrontClient->getInvalidation([
            'DistributionId' => $distributionId,
            'Id' => $invalidationId,
        ]);

        $message = '';

        if (isset($result['Invalidation']['Status'])) {
            $message = 'The status for the invalidation with the ID of ' .
                $result['Invalidation']['Id'] . ' is ' .
                $result['Invalidation']['Status'];
        }

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= ', and the effective URI is ' .
                $result['@metadata']['effectiveUri'] . '.';
        } else {
            $message = 'Error: Could not get information about ' .
                'the invalidation. The invalidation\'s status ' .
                'was not available.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getsAnInvalidation()
{
    $distributionId = 'E1BTGP2EXAMPLE';
    $invalidationId = 'I1CDEZZEXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo getInvalidation($cloudFrontClient, $distributionId, $invalidationId);
}

// Uncomment the following line to run this code in an AWS account.
// getsAnInvalidation();
```

## Ungültigerklärungen von Verteilungen auflisten
<a name="list-distribution-invalidations"></a>

Verwenden Sie den Vorgang, um alle aktuellen CloudFront Verteilungsungültigkeiten aufzulisten. [ListInvalidations](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListInvalidations.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function listInvalidations($cloudFrontClient, $distributionId)
{
    try {
        $result = $cloudFrontClient->listInvalidations([
            'DistributionId' => $distributionId
        ]);
        return $result;
    } catch (AwsException $e) {
        exit('Error: ' . $e->getAwsErrorMessage());
    }
}

function listTheInvalidations()
{
    $distributionId = 'E1WICG1EXAMPLE';

    $cloudFrontClient = new Aws\CloudFront\CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $invalidations = listInvalidations(
        $cloudFrontClient,
        $distributionId
    );

    if (isset($invalidations['InvalidationList'])) {
        if ($invalidations['InvalidationList']['Quantity'] > 0) {
            foreach ($invalidations['InvalidationList']['Items'] as $invalidation) {
                echo 'The invalidation with the ID of ' . $invalidation['Id'] .
                    ' has the status of ' . $invalidation['Status'] . '.' . "\n";
            }
        } else {
            echo 'Could not find any invalidations for the specified distribution.';
        }
    } else {
        echo 'Error: Could not get invalidation information. Could not get ' .
            'information about the specified distribution.';
    }
}

// Uncomment the following line to run this code in an AWS account.
// listTheInvalidations();
```

# Amazon CloudFront URLs mit AWS SDK für PHP Version 3 signieren
<a name="cloudfront-example-signed-url"></a>

Signiert URLs ermöglichen es Ihnen, Benutzern Zugriff auf Ihre privaten Inhalte zu gewähren. Eine signierte URL enthält zusätzliche Informationen (z. B. Ablaufzeit), mit denen Sie den Zugriff auf Ihre Inhalte besser kontrollieren können. Diese zusätzlichen Informationen sind in einer Richtlinienanweisung enthalten, die entweder auf einer vordefinierten oder einer benutzerdefinierten Richtlinie basieren. Informationen darüber, wie Sie private Distributionen einrichten und warum Sie unterschreiben müssen URLs, finden Sie unter [Serving Private Content through Amazon CloudFront im Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) CloudFront Developer Guide.
+ Erstellen Sie mit [getSignedUrl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedUrl) eine signierte CloudFront Amazon-URL.
+ Erstellen Sie ein signiertes CloudFront Amazon-Cookie mit [getSignedCookie](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedCookie).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon CloudFront finden Sie im [Amazon CloudFront Developer Guide](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Signieren CloudFront URLs für private Distributionen
<a name="signing-cf-urls-for-private-distributions"></a>

Sie können eine URL mit dem CloudFront Client im SDK signieren. Zuerst müssen Sie ein Objekt `CloudFrontClient` erstellen. Sie können eine CloudFront URL für eine Videoressource entweder mithilfe einer vorgefertigten oder einer benutzerdefinierten Richtlinie signieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function signPrivateDistribution(
    $cloudFrontClient,
    $resourceKey,
    $expires,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedUrl([
            'url' => $resourceKey,
            'expires' => $expires,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function signAPrivateDistribution()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo signPrivateDistribution(
        $cloudFrontClient,
        $resourceKey,
        $expires,
        $privateKey,
        $keyPairId
    );
}

// Uncomment the following line to run this code in an AWS account.
// signAPrivateDistribution();
```

## Verwenden Sie beim Erstellen eine benutzerdefinierte Richtlinie CloudFront URLs
<a name="use-a-custom-policy-when-creating-cf-urls"></a>

Um eine benutzerdefinierte Richtlinie zu verwenden, geben Sie den Schlüssel `policy` anstelle von `expires` an.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function signPrivateDistributionPolicy(
    $cloudFrontClient,
    $resourceKey,
    $customPolicy,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedUrl([
            'url' => $resourceKey,
            'policy' => $customPolicy,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function signAPrivateDistributionPolicy()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $customPolicy = <<<POLICY
{
    "Statement": [
        {
            "Resource": "$resourceKey",
            "Condition": {
                "IpAddress": {"AWS:SourceIp": "{$_SERVER['REMOTE_ADDR']}/32"},
                "DateLessThan": {"AWS:EpochTime": $expires}
            }
        }
    ]
}
POLICY;
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    echo signPrivateDistributionPolicy(
        $cloudFrontClient,
        $resourceKey,
        $customPolicy,
        $privateKey,
        $keyPairId
    );
}

// Uncomment the following line to run this code in an AWS account.
// signAPrivateDistributionPolicy();
```

## Verwenden Sie eine CloudFront signierte URL
<a name="use-a-cf-signed-url"></a>

Die Form der signierten URL unterscheidet sich in Abhängigkeit davon, ob die URL, die Sie signieren, das Schema „HTTP“ oder „RTMP“ verwendet. Im Fall von „HTTP“ wird die vollständige, absolute URL zurückgegeben. Für „RTMP“ wird nur die relative URL zurückgegeben. Dies liegt daran, dass einige Player den Host und den Pfad als separate Parameter benötigen.

Das folgende Beispiel zeigt, wie Sie die signierte URL verwenden können, um eine Webseite zu erstellen, auf der ein Video mit angezeigt wird [JWPlayer](http://www.longtailvideo.com/jw-player/). Dieselbe Technik würde auch für andere Player gelten [FlowPlayer](http://flowplayer.org/), erfordert aber einen anderen clientseitigen Code.

```
<html>
<head>
    <title>|CFlong| Streaming Example</title>
    <script type="text/javascript" src="https://example.com/jwplayer.js"></script>
</head>
<body>
    <div id="video">The canned policy video will be here.</div>
    <script type="text/javascript">
        jwplayer('video').setup({
            file: "<?= $streamHostUrl ?>/cfx/st/<?= $signedUrlCannedPolicy ?>",
            width: "720",
            height: "480"
        });
    </script>
</body>
</html>
```

## Signieren von CloudFront Cookies für private Distributionen
<a name="signing-cf-cookies-for-private-distributions"></a>

Als Alternative zu signierten URLs Cookies können Sie Kunden auch über signierte Cookies Zugriff auf eine private Distribution gewähren. Signierte Cookies ermöglichen Ihnen den Zugriff auf mehrere Dateien mit beschränkten Rechten, z. B. alle Dateien für ein Video im HLS-Format oder alle Dateien im Bereich der Abonnenten einer Website. Weitere Informationen darüber, warum Sie signierte Cookies anstelle von signierten Cookies verwenden möchten URLs (oder umgekehrt), finden Sie unter [Wählen zwischen signierten URLs und signierten Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html) im Amazon CloudFront Developer Guide.

Das Erstellen eines signierten Cookies ähnelt dem Erstellen einer signierten URL. Der einzige Unterschied ist die aufgerufene Methode (`getSignedCookie`statt `getSignedUrl`).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function signCookie(
    $cloudFrontClient,
    $resourceKey,
    $expires,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedCookie([
            'url' => $resourceKey,
            'expires' => $expires,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return [ 'Error' => $e->getAwsErrorMessage() ];
    }
}

function signACookie()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $result = signCookie(
        $cloudFrontClient,
        $resourceKey,
        $expires,
        $privateKey,
        $keyPairId
    );

    /* If successful, returns something like:
    CloudFront-Expires = 1589926678
    CloudFront-Signature = Lv1DyC2q...2HPXaQ__
    CloudFront-Key-Pair-Id = AAPKAJIKZATYYYEXAMPLE
    */
    foreach ($result as $key => $value) {
        echo $key . ' = ' . $value . "\n";
    }
}

// Uncomment the following line to run this code in an AWS account.
// signACookie();
```

## Verwenden Sie beim Erstellen von CloudFront Cookies eine benutzerdefinierte Richtlinie
<a name="use-a-custom-policy-when-creating-cf-cookies"></a>

Wie bei `getSignedUrl` können Sie anstelle eines Parameters `'policy'` einen Parameter `expires` und einen Parameter `url` verwenden, um einen Cookie mit einer benutzerdefinierten Richtlinie zu unterschreiben. Eine benutzerdefinierte Richtlinie kann Platzhalter im Ressourcenschlüssel enthalten. Dadurch können Sie ein einzelnes signiertes Cookie für mehrere Dateien erstellen.

 `getSignedCookie` gibt ein Array von Schlüssel-Wert-Paaren zurück, die alle als Cookies festgelegt werden müssen, um den Zugriff auf eine private Distribution zu ermöglichen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function signCookiePolicy(
    $cloudFrontClient,
    $customPolicy,
    $privateKey,
    $keyPairId
) {
    try {
        $result = $cloudFrontClient->getSignedCookie([
            'policy' => $customPolicy,
            'private_key' => $privateKey,
            'key_pair_id' => $keyPairId
        ]);

        return $result;
    } catch (AwsException $e) {
        return [ 'Error' => $e->getAwsErrorMessage() ];
    }
}

function signACookiePolicy()
{
    $resourceKey = 'https://d13l49jEXAMPLE.cloudfront.net/my-file.txt';
    $expires = time() + 300; // 5 minutes (5 * 60 seconds) from now.
    $customPolicy = <<<POLICY
{
    "Statement": [
        {
            "Resource": "{$resourceKey}",
            "Condition": {
                "IpAddress": {"AWS:SourceIp": "{$_SERVER['REMOTE_ADDR']}/32"},
                "DateLessThan": {"AWS:EpochTime": {$expires}}
            }
        }
    ]
}
POLICY;
    $privateKey = dirname(__DIR__) . '/cloudfront/my-private-key.pem';
    $keyPairId = 'AAPKAJIKZATYYYEXAMPLE';

    $cloudFrontClient = new CloudFrontClient([
        'profile' => 'default',
        'version' => '2018-06-18',
        'region' => 'us-east-1'
    ]);

    $result = signCookiePolicy(
        $cloudFrontClient,
        $customPolicy,
        $privateKey,
        $keyPairId
    );

    /* If successful, returns something like:
    CloudFront-Policy = eyJTdGF0...fX19XX0_
    CloudFront-Signature = RowqEQWZ...N8vetw__
    CloudFront-Key-Pair-Id = AAPKAJIKZATYYYEXAMPLE
    */
    foreach ($result as $key => $value) {
        echo $key . ' = ' . $value . "\n";
    }
}

// Uncomment the following line to run this code in an AWS account.
// signACookiePolicy();
```

## Sende CloudFront Cookies an den Guzzle-Client
<a name="send-cf-cookies-to-guzzle-client"></a>

Sie können diese Cookies auch an eine `GuzzleHttp\Cookie\CookieJar` zur Verwendung mit einem Guzzle-Client übergeben.

```
use GuzzleHttp\Client;
use GuzzleHttp\Cookie\CookieJar;

$distribution = "example-distribution.cloudfront.net";
$client = new \GuzzleHttp\Client([
    'base_uri' => "https://$distribution",
    'cookies' => CookieJar::fromArray($signedCookieCustomPolicy, $distribution),
]);

$client->get('video.mp4');
```

Weitere Informationen finden Sie unter [Verwenden signierter Cookies](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html) im Amazon CloudFront Developer Guide.

# Signieren von benutzerdefinierten CloudSearch Amazon-Domainanfragen mit AWS SDK für PHP Version 3
<a name="service_cloudsearch-custom-requests"></a>

 CloudSearch Amazon-Domainanfragen können über das hinaus angepasst werden, was von der unterstützt wird AWS SDK für PHP. [In Fällen, in denen Sie benutzerdefinierte Anfragen an Domains stellen müssen, die durch IAM-Authentifizierung geschützt sind, können Sie die Anmeldeinformationsanbieter und Unterzeichner des SDK verwenden, um jede PSR-7-Anfrage zu signieren.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html)

Wenn Sie beispielsweise das Handbuch [Erste Schritte mit Cloud Search](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started.html) verwenden und eine IAM-geschützte Domäne für [Schritt 3](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started-search.html) verwenden wollen, müssen Sie Ihre Anforderung wie folgt signieren und ausführen.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ [Signieren Sie eine Anfrage mit dem Signaturprotokoll mithilfe von SignatureV4 AWS .](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## CloudSearch Amazon-Domainanfrage signieren
<a name="sign-cslong-domain-request"></a>

 **Importe** 

```
require './vendor/autoload.php';

use Aws\Credentials\CredentialProvider;
use Aws\Signature\SignatureV4;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
```

 **Beispiel-Code** 

```
function searchDomain(
    $client,
    $domainName,
    $domainId,
    $domainRegion,
    $searchString
) {
    $domainPrefix = 'search-';
    $cloudSearchDomain = 'cloudsearch.amazonaws.com';
    $cloudSearchVersion = '2013-01-01';
    $searchPrefix = 'search?';

    // Specify the search to send.
    $request = new Request(
        'GET',
        "https://$domainPrefix$domainName-$domainId.$domainRegion." .
            "$cloudSearchDomain/$cloudSearchVersion/" .
            "$searchPrefix$searchString"
    );

    // Get default AWS account access credentials.
    $credentials = call_user_func(CredentialProvider::defaultProvider())->wait();

    // Sign the search request with the credentials.
    $signer = new SignatureV4('cloudsearch', $domainRegion);
    $request = $signer->signRequest($request, $credentials);

    // Send the signed search request.
    $response = $client->send($request);

    // Report the search results, if any.
    $results = json_decode($response->getBody());

    $message = '';

    if ($results->hits->found > 0) {
        $message .= 'Search results:' . "\n";

        foreach ($results->hits->hit as $hit) {
            $message .= $hit->fields->title . "\n";
        }
    } else {
        $message .= 'No search results.';
    }

    return $message;
}

function searchADomain()
{
    $domainName = 'my-search-domain';
    $domainId = '7kbitd6nyiglhdtmssxEXAMPLE';
    $domainRegion = 'us-east-1';
    $searchString = 'q=star+wars&return=title';
    $client = new Client();

    echo searchDomain(
        $client,
        $domainName,
        $domainId,
        $domainRegion,
        $searchString
    );
}

// Uncomment the following line to run this code in an AWS account.
// searchADomain();
```

# CloudWatch Amazon-Beispiele mit der AWS SDK für PHP Version 3
<a name="cw-examples"></a>

Amazon CloudWatch (CloudWatch) ist ein Webservice, der Ihre Amazon Web Services Services-Ressourcen und die Anwendungen, auf denen Sie laufen, AWS in Echtzeit überwacht. Sie können CloudWatch damit Metriken sammeln und verfolgen. Dabei handelt es sich um Variablen, die Sie für Ihre Ressourcen und Anwendungen messen können. CloudWatch Alarme senden Benachrichtigungen oder nehmen auf der Grundlage von von Ihnen festgelegter Regeln automatisch Änderungen an den Ressourcen vor, die Sie überwachen.

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

**Topics**
+ [Anmeldeinformationen](#examplecredentials)
+ [Mit CloudWatch Amazon-Alarmen arbeiten](cw-examples-work-with-alarms.md)
+ [Metriken abrufen von CloudWatch](cw-examples-getting-metrics.md)
+ [Veröffentlichen benutzerdefinierter Metriken in Amazon CloudWatch](cw-examples-publishing-custom-metrics.md)
+ [Ereignisse an CloudWatch Amazon-Veranstaltungen senden](cw-examples-sending-events.md)
+ [Alarmaktionen mit CloudWatch Amazon-Alarmen verwenden](cw-examples-using-alarm-actions.md)

# Arbeiten mit CloudWatch Amazon-Alarmen mit AWS SDK für PHP Version 3
<a name="cw-examples-work-with-alarms"></a>

Ein CloudWatch Amazon-Alarm überwacht eine einzelne Metrik über einen von Ihnen angegebenen Zeitraum. Der Alarm führt eine oder mehrere Aktionen durch, basierend auf dem Wert der Metrik im Vergleich zu einem bestimmten Schwellenwert in einer Reihe von Zeiträumen.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Beschreiben Sie einen Alarm mit [DescribeAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarms).
+ Erstellen Sie einen Alarm mit [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).
+ Löschen Sie einen Alarm mit [DeleteAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#deletealarms).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Alarme beschreiben
<a name="describe-alarms"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function describeAlarms($cloudWatchClient)
{
    try {
        $result = $cloudWatchClient->describeAlarms();

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'Alarms at the effective URI of ' .
                $result['@metadata']['effectiveUri'] . "\n\n";

            if (isset($result['CompositeAlarms'])) {
                $message .= "Composite alarms:\n";

                foreach ($result['CompositeAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= "No composite alarms found.\n";
            }

            if (isset($result['MetricAlarms'])) {
                $message .= "Metric alarms:\n";

                foreach ($result['MetricAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= 'No metric alarms found.';
            }
        } else {
            $message .= 'No alarms found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function describeTheAlarms()
{
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo describeAlarms($cloudWatchClient);
}

// Uncomment the following line to run this code in an AWS account.
// describeTheAlarms();
```

## Alarm erstellen
<a name="create-an-alarm"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function putMetricAlarm(
    $cloudWatchClient,
    $cloudWatchRegion,
    $alarmName,
    $namespace,
    $metricName,
    $dimensions,
    $statistic,
    $period,
    $comparison,
    $threshold,
    $evaluationPeriods
) {
    try {
        $result = $cloudWatchClient->putMetricAlarm([
            'AlarmName' => $alarmName,
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'Statistic' => $statistic,
            'Period' => $period,
            'ComparisonOperator' => $comparison,
            'Threshold' => $threshold,
            'EvaluationPeriods' => $evaluationPeriods
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully created or updated specified alarm.';
            } else {
                return 'Could not create or update specified alarm.';
            }
        } else {
            return 'Could not create or update specified alarm.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricAlarm()
{
    $alarmName = 'my-ec2-resources';
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $statistic = 'Average';
    $period = 300;
    $comparison = 'GreaterThanThreshold';
    $threshold = 1;
    $evaluationPeriods = 1;

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricAlarm(
        $cloudWatchClient,
        $cloudWatchRegion,
        $alarmName,
        $namespace,
        $metricName,
        $dimensions,
        $statistic,
        $period,
        $comparison,
        $threshold,
        $evaluationPeriods
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricAlarm();
```

## Löschen von Alarmen
<a name="delete-alarms"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function deleteAlarms($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->deleteAlarms([
            'AlarmNames' => $alarmNames
        ]);

        return 'The specified alarms at the following effective URI have ' .
            'been deleted or do not currently exist: ' .
            $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function deleteTheAlarms()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo deleteAlarms($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// deleteTheAlarms();
```

# Metriken von Amazon CloudWatch mit AWS SDK für PHP Version 3 abrufen
<a name="cw-examples-getting-metrics"></a>

Metriken sind Daten über die Leistung Ihrer Systeme. Sie können die detaillierte Überwachung einiger Ressourcen, z. B. Ihrer EC2 Amazon-Instances, oder Ihrer eigenen Anwendungsmetriken aktivieren.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Metriken auflisten mit [ListMetrics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#listmetrics).
+ Rufen Sie Alarme für eine Metrik ab mit [DescribeAlarmsForMetric](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarmsformetric).
+ Rufen Sie Statistiken für eine angegebene Metrik ab mit [GetMetricStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#getmetricstatistics).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Auflisten von Metriken
<a name="list-metrics"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function listMetrics($cloudWatchClient)
{
    try {
        $result = $cloudWatchClient->listMetrics();

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'For the effective URI at ' .
                $result['@metadata']['effectiveUri'] . ":\n\n";

            if (
                (isset($result['Metrics'])) and
                (count($result['Metrics']) > 0)
            ) {
                $message .= "Metrics found:\n\n";

                foreach ($result['Metrics'] as $metric) {
                    $message .= 'For metric ' . $metric['MetricName'] .
                        ' in namespace ' . $metric['Namespace'] . ":\n";

                    if (
                        (isset($metric['Dimensions'])) and
                        (count($metric['Dimensions']) > 0)
                    ) {
                        $message .= "Dimensions:\n";

                        foreach ($metric['Dimensions'] as $dimension) {
                            $message .= 'Name: ' . $dimension['Name'] .
                                ', Value: ' . $dimension['Value'] . "\n";
                        }

                        $message .= "\n";
                    } else {
                        $message .= "No dimensions.\n\n";
                    }
                }
            } else {
                $message .= 'No metrics found.';
            }
        } else {
            $message .= 'No metrics found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function listTheMetrics()
{
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo listMetrics($cloudWatchClient);
}

// Uncomment the following line to run this code in an AWS account.
// listTheMetrics();
```

## Rufen Sie Alarme für eine Metrik ab
<a name="retrieve-alarms-for-a-metric"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function describeAlarmsForMetric(
    $cloudWatchClient,
    $metricName,
    $namespace,
    $dimensions
) {
    try {
        $result = $cloudWatchClient->describeAlarmsForMetric([
            'MetricName' => $metricName,
            'Namespace' => $namespace,
            'Dimensions' => $dimensions
        ]);

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] . ":\n\n";

            if (
                (isset($result['MetricAlarms'])) and
                (count($result['MetricAlarms']) > 0)
            ) {
                $message .= 'Matching alarms for ' . $metricName . ":\n\n";

                foreach ($result['MetricAlarms'] as $alarm) {
                    $message .= $alarm['AlarmName'] . "\n";
                }
            } else {
                $message .= 'No matching alarms found for ' . $metricName . '.';
            }
        } else {
            $message .= 'No matching alarms found for ' . $metricName . '.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function describeTheAlarmsForMetric()
{
    $metricName = 'BucketSizeBytes';
    $namespace = 'AWS/S3';
    $dimensions = [
        [
            'Name' => 'StorageType',
            'Value' => 'StandardStorage'
        ],
        [
            'Name' => 'BucketName',
            'Value' => 'amzn-s3-demo-bucket'
        ]
    ];

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo describeAlarmsForMetric(
        $cloudWatchClient,
        $metricName,
        $namespace,
        $dimensions
    );
}

// Uncomment the following line to run this code in an AWS account.
// describeTheAlarmsForMetric();
```

## Abrufen von Metrikstatistiken
<a name="get-metric-statistics"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function getMetricStatistics(
    $cloudWatchClient,
    $namespace,
    $metricName,
    $dimensions,
    $startTime,
    $endTime,
    $period,
    $statistics,
    $unit
) {
    try {
        $result = $cloudWatchClient->getMetricStatistics([
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'StartTime' => $startTime,
            'EndTime' => $endTime,
            'Period' => $period,
            'Statistics' => $statistics,
            'Unit' => $unit
        ]);

        $message = '';

        if (isset($result['@metadata']['effectiveUri'])) {
            $message .= 'For the effective URI at ' .
                $result['@metadata']['effectiveUri'] . "\n\n";

            if (
                (isset($result['Datapoints'])) and
                (count($result['Datapoints']) > 0)
            ) {
                $message .= "Datapoints found:\n\n";

                foreach ($result['Datapoints'] as $datapoint) {
                    foreach ($datapoint as $key => $value) {
                        $message .= $key . ' = ' . $value . "\n";
                    }

                    $message .= "\n";
                }
            } else {
                $message .= 'No datapoints found.';
            }
        } else {
            $message .= 'No datapoints found.';
        }

        return $message;
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function getTheMetricStatistics()
{
    // Average number of Amazon EC2 vCPUs every 5 minutes within
    // the past 3 hours.
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $startTime = strtotime('-3 hours');
    $endTime = strtotime('now');
    $period = 300; // Seconds. (5 minutes = 300 seconds.)
    $statistics = ['Average'];
    $unit = 'None';

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo getMetricStatistics(
        $cloudWatchClient,
        $namespace,
        $metricName,
        $dimensions,
        $startTime,
        $endTime,
        $period,
        $statistics,
        $unit
    );

    // Another example: average number of bytes of standard storage in the
    // specified Amazon S3 bucket each day for the past 3 days.

    /*
    $namespace = 'AWS/S3';
    $metricName = 'BucketSizeBytes';
    $dimensions = [
        [
            'Name' => 'StorageType',
            'Value'=> 'StandardStorage'
        ],
        [
            'Name' => 'BucketName',
            'Value' => 'amzn-s3-demo-bucket'
        ]
    ];
    $startTime = strtotime('-3 days');
    $endTime = strtotime('now');
    $period = 86400; // Seconds. (1 day = 86400 seconds.)
    $statistics = array('Average');
    $unit = 'Bytes';

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo getMetricStatistics($cloudWatchClient, $namespace, $metricName,
    $dimensions, $startTime, $endTime, $period, $statistics, $unit);
    */
}

// Uncomment the following line to run this code in an AWS account.
// getTheMetricStatistics();
```

# Veröffentlichen von benutzerdefinierten Metriken in Amazon CloudWatch mit AWS SDK für PHP Version 3
<a name="cw-examples-publishing-custom-metrics"></a>

Metriken sind Daten über die Leistung Ihrer Systeme. Ein Alarm überwacht eine Metrik über einen bestimmten, von Ihnen festgelegten Zeitraum. Er führt eine oder mehrere Aktionen durch, die vom Wert der Metrik im Vergleich zu einem Schwellenwert in einer Reihe von Zeiträumen abhängt.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Veröffentlichen Sie metrische Daten mit [PutMetricData](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricdata).
+ Erstellen Sie einen Alarm mit [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Veröffentlichen Sie metrische Daten
<a name="publish-metric-data"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function putMetricData(
    $cloudWatchClient,
    $cloudWatchRegion,
    $namespace,
    $metricData
) {
    try {
        $result = $cloudWatchClient->putMetricData([
            'Namespace' => $namespace,
            'MetricData' => $metricData
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully published datapoint(s).';
            } else {
                return 'Could not publish datapoint(s).';
            }
        } else {
            return 'Error: Could not publish datapoint(s).';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricData()
{
    $namespace = 'MyNamespace';
    $metricData = [
        [
            'MetricName' => 'MyMetric',
            'Timestamp' => 1589228818, // 11 May 2020, 20:26:58 UTC.
            'Dimensions' => [
                [
                    'Name' => 'MyDimension1',
                    'Value' => 'MyValue1'

                ],
                [
                    'Name' => 'MyDimension2',
                    'Value' => 'MyValue2'
                ]
            ],
            'Unit' => 'Count',
            'Value' => 1
        ]
    ];

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricData(
        $cloudWatchClient,
        $cloudWatchRegion,
        $namespace,
        $metricData
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricData();
```

## Alarm erstellen
<a name="create-an-alarm"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function putMetricAlarm(
    $cloudWatchClient,
    $cloudWatchRegion,
    $alarmName,
    $namespace,
    $metricName,
    $dimensions,
    $statistic,
    $period,
    $comparison,
    $threshold,
    $evaluationPeriods
) {
    try {
        $result = $cloudWatchClient->putMetricAlarm([
            'AlarmName' => $alarmName,
            'Namespace' => $namespace,
            'MetricName' => $metricName,
            'Dimensions' => $dimensions,
            'Statistic' => $statistic,
            'Period' => $period,
            'ComparisonOperator' => $comparison,
            'Threshold' => $threshold,
            'EvaluationPeriods' => $evaluationPeriods
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            if (
                $result['@metadata']['effectiveUri'] ==
                'https://monitoring.' . $cloudWatchRegion . '.amazonaws.com'
            ) {
                return 'Successfully created or updated specified alarm.';
            } else {
                return 'Could not create or update specified alarm.';
            }
        } else {
            return 'Could not create or update specified alarm.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function putTheMetricAlarm()
{
    $alarmName = 'my-ec2-resources';
    $namespace = 'AWS/Usage';
    $metricName = 'ResourceCount';
    $dimensions = [
        [
            'Name' => 'Type',
            'Value' => 'Resource'
        ],
        [
            'Name' => 'Resource',
            'Value' => 'vCPU'
        ],
        [
            'Name' => 'Service',
            'Value' => 'EC2'
        ],
        [
            'Name' => 'Class',
            'Value' => 'Standard/OnDemand'
        ]
    ];
    $statistic = 'Average';
    $period = 300;
    $comparison = 'GreaterThanThreshold';
    $threshold = 1;
    $evaluationPeriods = 1;

    $cloudWatchRegion = 'us-east-1';
    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => $cloudWatchRegion,
        'version' => '2010-08-01'
    ]);

    echo putMetricAlarm(
        $cloudWatchClient,
        $cloudWatchRegion,
        $alarmName,
        $namespace,
        $metricName,
        $dimensions,
        $statistic,
        $period,
        $comparison,
        $threshold,
        $evaluationPeriods
    );
}

// Uncomment the following line to run this code in an AWS account.
// putTheMetricAlarm();
```

# Senden von Ereignissen an Amazon CloudWatch Events mit AWS SDK für PHP Version 3
<a name="cw-examples-sending-events"></a>

CloudWatch Events liefert nahezu in Echtzeit einen Stream von Systemereignissen, die Änderungen an den Ressourcen von Amazon Web Services (AWS) für verschiedene Ziele beschreiben. Mit einfachen Regeln können Sie Ereignisse zuordnen und sie zu einer oder mehreren Zielfunktionen oder Streams umleiten.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie eine Regel mit [PutRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putrule).
+ Fügen Sie einer Regel Ziele hinzu mit [PutTargets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#puttargets).
+ Senden Sie benutzerdefinierte Ereignisse an CloudWatch Ereignisse mithilfe von [PutEvents](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putevents).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen einer Regel
<a name="create-a-rule"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putRule([
        'Name' => 'DEMO_EVENT', // REQUIRED
        'RoleArn' => 'IAM_ROLE_ARN',
        'ScheduleExpression' => 'rate(5 minutes)',
        'State' => 'ENABLED',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Fügen Sie Ziele zu einer Regel hinzu
<a name="add-targets-to-a-rule"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putTargets([
        'Rule' => 'DEMO_EVENT', // REQUIRED
        'Targets' => [ // REQUIRED
            [
                'Arn' => 'LAMBDA_FUNCTION_ARN', // REQUIRED
                'Id' => 'myCloudWatchEventsTarget' // REQUIRED
            ],
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Benutzerdefinierte Ereignisse senden
<a name="send-custom-events"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new Aws\cloudwatchevents\cloudwatcheventsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2015-10-07'
]);

try {
    $result = $client->putEvents([
        'Entries' => [ // REQUIRED
            [
                'Detail' => '<string>',
                'DetailType' => '<string>',
                'Resources' => ['<string>'],
                'Source' => '<string>',
                'Time' => time()
            ],
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwenden von Alarmaktionen mit CloudWatch Amazon-Alarmen mit AWS SDK für PHP Version 3
<a name="cw-examples-using-alarm-actions"></a>

Verwenden Sie Alarmaktionen, um Alarme zu erstellen, die Ihre EC2 Amazon-Instances automatisch stoppen, beenden, neu starten oder wiederherstellen. Sie können die Aktionen zum Anhalten oder Beenden nutzen, wenn eine Instance nicht mehr ausgeführt werden muss. Sie können die Aktionen zum Neustarten oder Wiederherstellen verwenden, um diese Instances automatisch neu zu starten.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Aktivieren Sie Aktionen für bestimmte Alarme mithilfe von [EnableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#enablealarmactions).
+ Deaktivieren Sie Aktionen für bestimmte Alarme mit [DisableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#disablealarmactions).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Aktivieren von Alarmaktionen
<a name="enable-alarm-actions"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function enableAlarmActions($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->enableAlarmActions([
            'AlarmNames' => $alarmNames
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            return 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] .
                ', actions for any matching alarms have been enabled.';
        } else {
            return'Actions for some matching alarms ' .
                'might not have been enabled.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function enableTheAlarmActions()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo enableAlarmActions($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// enableTheAlarmActions();
```

## Deaktivieren von Alarmaktionen
<a name="disable-alarm-actions"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\CloudWatch\CloudWatchClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
function disableAlarmActions($cloudWatchClient, $alarmNames)
{
    try {
        $result = $cloudWatchClient->disableAlarmActions([
            'AlarmNames' => $alarmNames
        ]);

        if (isset($result['@metadata']['effectiveUri'])) {
            return 'At the effective URI of ' .
                $result['@metadata']['effectiveUri'] .
                ', actions for any matching alarms have been disabled.';
        } else {
            return 'Actions for some matching alarms ' .
                'might not have been disabled.';
        }
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function disableTheAlarmActions()
{
    $alarmNames = array('my-alarm');

    $cloudWatchClient = new CloudWatchClient([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2010-08-01'
    ]);

    echo disableAlarmActions($cloudWatchClient, $alarmNames);
}

// Uncomment the following line to run this code in an AWS account.
// disableTheAlarmActions();
```

# EC2 Amazon-Beispiele mit der AWS SDK für PHP Version 3
<a name="ec2-examples"></a>

Amazon Elastic Compute Cloud (Amazon EC2) ist ein Webservice, der virtuelles Server-Hosting in der Cloud bietet. Er wurde entwickelt, um Entwicklern Cloud-Computing im Web-Scale-Maßstab zu erleichtern, indem er eine skalierbare Rechenkapazität bietet.

[Der gesamte Beispielcode für AWS SDK für PHP ist hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

**Topics**
+ [Anmeldeinformationen](#examplecredentials)
+ [Verwaltung von EC2 Amazon-Instances](ec2-examples-managing-instances.md)
+ [Verwendung von Elastic IP-Adressen](ec2-examples-using-elastic-ip-addresses.md)
+ [Regionen und Verfügbarkeitszonen verwenden](ec2-examples-using-regions-and-zones.md)
+ [Mit Schlüsselpaaren arbeiten](ec2-examples-working-with-key-pairs.md)
+ [Arbeiten mit Sicherheitsgruppen](ec2-examples-using-security-groups.md)

# Verwaltung von EC2 Amazon-Instances mit AWS SDK für PHP Version 3
<a name="ec2-examples-managing-instances"></a>

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Beschreiben Sie EC2 Amazon-Instances mithilfe von [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Aktivieren Sie die detaillierte Überwachung für eine laufende Instance mithilfe von [MonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#monitorinstances).
+ Deaktivieren Sie die Überwachung für eine laufende Instanz mit [UnmonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#unmonitorinstances).
+ Starten Sie ein Amazon EBS-backed AMI, das Sie zuvor nicht mehr verwenden. [StartInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#startinstances)
+ Stoppen Sie die Verwendung einer Amazon EBS-gestützten Instance. [StopInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#stopinstances)
+ Fordern Sie einen Neustart einer oder mehrerer Instances an mit. [RebootInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#rebootinstances)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Beschreiben von Instances
<a name="describe-instances"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Ec2\Ec2Client;
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);
$result = $ec2Client->describeInstances();
echo "Instances: \n";
foreach ($result['Reservations'] as $reservation) {
    foreach ($reservation['Instances'] as $instance) {
        echo "InstanceId: {$instance['InstanceId']} - {$instance['State']['Name']} \n";
    }
}
```

## Aktivieren und deaktivieren Sie die Überwachung
<a name="enable-and-disable-monitoring"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$monitorInstance = 'ON';

if ($monitorInstance == 'ON') {
    $result = $ec2Client->monitorInstances([
        'InstanceIds' => $instanceIds
    ]);
} else {
    $result = $ec2Client->unmonitorInstances([
        'InstanceIds' => $instanceIds
    ]);
}

var_dump($result);
```

## Starten und beenden Sie eine Instanz
<a name="start-and-stop-an-instance"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$action = 'START';

$instanceIds = ['InstanceID1', 'InstanceID2'];

if ($action == 'START') {
    $result = $ec2Client->startInstances([
        'InstanceIds' => $instanceIds,
    ]);
} else {
    $result = $ec2Client->stopInstances([
        'InstanceIds' => $instanceIds,
    ]);
}

var_dump($result);
```

## Neustarten einer Instance
<a name="reboot-an-instance"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceIds = ['InstanceID1', 'InstanceID2'];

$result = $ec2Client->rebootInstances([
    'InstanceIds' => $instanceIds
]);

var_dump($result);
```

# Verwenden von Elastic IP-Adressen mit Amazon EC2 mit AWS SDK für PHP Version 3
<a name="ec2-examples-using-elastic-ip-addresses"></a>

Eine Elastic IP-Adresse ist eine statische IP-Adresse, die für dynamisches Cloud Computing konzipiert ist. Eine Elastic IP-Adresse ist mit Ihrer AWS-Konto verknüpft. Es ist eine öffentliche IP-Adresse, die aus dem Internet erreichbar ist. Wenn Ihre Instance keine öffentliche IP-Adresse hat, können Sie eine Elastic IP-Adresse mit der Instance verwenden, damit diese mit dem Internet kommunizieren kann.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Beschreiben Sie eine oder mehrere Ihrer Instances mithilfe von [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Erwerben Sie eine Elastic IP-Adresse mit [AllocateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#allocateaddress).
+ Ordnen Sie eine Elastic IP-Adresse einer Instance zu, indem Sie [AssociateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#associateaddress).
+ Geben Sie eine Elastic IP-Adresse frei mit [ReleaseAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#releaseaddress).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Beschreiben Sie eine Instanz
<a name="describe-an-instance"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Ec2\Ec2Client;
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);
$result = $ec2Client->describeInstances();
echo "Instances: \n";
foreach ($result['Reservations'] as $reservation) {
    foreach ($reservation['Instances'] as $instance) {
        echo "InstanceId: {$instance['InstanceId']} - {$instance['State']['Name']} \n";
    }
}
```

## Ordnen Sie eine Adresse zu und ordnen Sie sie zu
<a name="allocate-and-associate-an-address"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$instanceId = 'InstanceID';

$allocation = $ec2Client->allocateAddress(array(
    'DryRun' => false,
    'Domain' => 'vpc',
));

$result = $ec2Client->associateAddress(array(
    'DryRun' => false,
    'InstanceId' => $instanceId,
    'AllocationId' => $allocation->get('AllocationId')
));

var_dump($result);
```

## Geben Sie eine Adresse frei
<a name="release-an-address"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$associationID = 'AssociationID';

$allocationID = 'AllocationID';

$result = $ec2Client->disassociateAddress([
    'AssociationId' => $associationID,
]);

$result = $ec2Client->releaseAddress([
    'AllocationId' => $allocationID,
]);

var_dump($result);
```

# Verwenden von Regionen und Verfügbarkeitszonen für Amazon EC2 mit AWS SDK für PHP Version 3
<a name="ec2-examples-using-regions-and-zones"></a>

Amazon EC2 wird an mehreren Standorten weltweit gehostet. Diese Standorte bestehen aus AWS Regionen und Verfügbarkeitszonen. Jede Region ist ein separates geografisches Gebiet mit mehreren isolierten Standorten, die als Availability Zones bezeichnet werden. Amazon EC2 bietet die Möglichkeit, Instanzen und Daten an mehreren Standorten zu platzieren.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Beschreiben Sie die Availability Zones, die Ihnen zur Verfügung stehen [DescribeAvailabilityZones](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeavailabilityzones).
+ Beschreiben Sie die AWS Regionen, die Ihnen derzeit zur Verfügung stehen [DescribeRegions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeregions).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Beschreiben von Availability Zones
<a name="describe-availability-zones"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeAvailabilityZones();

var_dump($result);
```

## Beschreiben von Regionen
<a name="describe-regions"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeRegions();

var_dump($result);
```

# Arbeiten mit EC2 Amazon-Schlüsselpaaren mit AWS SDK für PHP Version 3
<a name="ec2-examples-working-with-key-pairs"></a>

Amazon EC2 verwendet Public-Key-Kryptografie, um Anmeldeinformationen zu verschlüsseln und zu entschlüsseln. Bei der Kryptografie für öffentliche Schlüssel werden Daten mithilfe eines öffentlichen Schlüssels verschlüsselt. Anschließend verwendet der Empfänger den privaten Schlüssel zum Entschlüsseln der Daten. Der öffentliche und der private Schlüssel werden als Schlüsselpaar bezeichnet.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie ein 2048-Bit-RSA-Schlüsselpaar mit. [CreateKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createkeypair)
+ Löscht ein angegebenes key pair mit [DeleteKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletekeypair).
+ Beschreiben Sie eines oder mehrere Ihrer Schlüsselpaare mithilfe von [DescribeKeyPairs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describekeypairs).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen eines Schlüsselpaares
<a name="create-a-key-pair"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$keyPairName = 'my-keypair';

$result = $ec2Client->createKeyPair(array(
    'KeyName' => $keyPairName
));

// Save the private key
$saveKeyLocation = getenv('HOME') . "/.ssh/{$keyPairName}.pem";
file_put_contents($saveKeyLocation, $result['keyMaterial']);

// Update the key's permissions so it can be used with SSH
chmod($saveKeyLocation, 0600);
```

## Löschen eines Schlüsselpaars
<a name="delete-a-key-pair"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$keyPairName = 'my-keypair';

$result = $ec2Client->deleteKeyPair(array(
    'KeyName' => $keyPairName
));

var_dump($result);
```

## Beschreiben von Schlüsselpaaren
<a name="describe-key-pairs"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeKeyPairs();

var_dump($result);
```

# Arbeiten mit Sicherheitsgruppen in Amazon EC2 mit AWS SDK für PHP Version 3
<a name="ec2-examples-using-security-groups"></a>

Eine EC2 Amazon-Sicherheitsgruppe fungiert als virtuelle Firewall, die den Datenverkehr für eine oder mehrere Instances steuert. Sie fügen jeder Sicherheitsgruppe Regeln hinzu, um den Datenaustausch mit den verknüpften Instances zu gestatten. Sie können die Regeln für eine Sicherheitsgruppe jederzeit ändern. Die neuen Regeln gelten automatisch für alle Instances, die der Sicherheitsgruppe zugewiesen sind.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Beschreiben Sie eine oder mehrere Ihrer Sicherheitsgruppen mithilfe von [DescribeSecurityGroups](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describesecuritygroups).
+ Fügen Sie einer Sicherheitsgruppe eine Eingangsregel hinzu mit [AuthorizeSecurityGroupIngress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#authorizesecuritygroupingress).
+ Erstellen Sie eine Sicherheitsgruppe mit [CreateSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createsecuritygroup).
+ Löschen Sie eine Sicherheitsgruppe mit [DeleteSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletesecuritygroup).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Beschreiben von Sicherheitsgruppen
<a name="describe-security-groups"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->describeSecurityGroups();

var_dump($result);
```

## Fügen Sie eine Eingangsregel hinzu
<a name="add-an-ingress-rule"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$result = $ec2Client->authorizeSecurityGroupIngress(array(
    'GroupName' => 'string',
    'SourceSecurityGroupName' => 'string'
));

var_dump($result);
```

## Eine Sicherheitsgruppe erstellen
<a name="create-a-security-group"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

// Create the security group
$securityGroupName = 'my-security-group';
$result = $ec2Client->createSecurityGroup(array(
    'GroupId' => $securityGroupName,

));

// Get the security group ID (optional)
$securityGroupId = $result->get('GroupId');

echo "Security Group ID: " . $securityGroupId . '\n';
```

## Löschen einer Sicherheitsgruppe
<a name="delete-a-security-group"></a>

 **Importe** 

```
require 'vendor/autoload.php';
```

 **Beispiel-Code** 

```
$ec2Client = new Aws\Ec2\Ec2Client([
    'region' => 'us-west-2',
    'version' => '2016-11-15',
    'profile' => 'default'
]);

$securityGroupId = 'my-security-group-id';

$result = $ec2Client->deleteSecurityGroup([
    'GroupId' => $securityGroupId
]);

var_dump($result);
```

# Signieren einer Amazon OpenSearch Service-Suchanfrage mit AWS SDK für PHP Version 3
<a name="service_es-data-plane"></a>

Amazon OpenSearch Service ist ein verwalteter Service, der die Bereitstellung, den Betrieb und die Skalierung von Amazon OpenSearch Service, einer beliebten Open-Source-Such- und Analyse-Engine, vereinfacht. OpenSearch Service bietet direkten Zugriff auf die Amazon OpenSearch Service API. Das bedeutet, dass Entwickler die Tools verwenden können, mit denen sie vertraut sind, sowie robuste Sicherheitsoptionen. Viele Amazon OpenSearch Service-Clients unterstützen das Signieren von Anfragen. Wenn Sie jedoch einen Client verwenden, der dies nicht tut, können Sie beliebige PSR-7-Anfragen mit den integrierten Anmeldeinformationsanbietern und Unterzeichnern von signieren. AWS SDK für PHP

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ [Signieren Sie eine Anfrage mit dem Signaturprotokoll mithilfe von AWS SignatureV4.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Eine OpenSearch Serviceanfrage signieren
<a name="signing-an-es-request"></a>

OpenSearch Der Dienst verwendet [Signature Version 4.](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) Das bedeutet, dass Sie Anfragen anhand des Signaturnamens des Dienstes (`es`in diesem Fall) und der AWS Region Ihrer OpenSearch Service-Domain signieren müssen. Eine vollständige Liste der vom OpenSearch Service unterstützten Regionen finden Sie [auf der Seite AWS Regionen und Endpunkte](https://docs.aws.amazon.com/general/latest/gr/rande.html) im Allgemeine Amazon Web Services-Referenz. In diesem Beispiel signieren wir jedoch Anfragen für eine OpenSearch Service-Domain in der `us-west-2` Region.

Sie müssen Anmeldeinformationen angeben, was Sie entweder mit der Standardanbieterkette des SDK oder mit einer beliebigen Form von Anmeldeinformationen tun können, [die unter Anmeldeinformationen für AWS SDK für PHP Version 3](guide_credentials.md) beschrieben sind. Sie benötigen außerdem eine [PSR-7-Anfrage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html) (im folgenden Code als `$psr7Request` bezeichnet).

```
// Pull credentials from the default provider chain
$provider = Aws\Credentials\CredentialProvider::defaultProvider();
$credentials = call_user_func($provider)->wait();

// Create a signer with the service's signing name and Region
$signer = new Aws\Signature\SignatureV4('es', 'us-west-2');

// Sign your request
$signedRequest = $signer->signRequest($psr7Request, $credentials);
```

# AWS Identity and Access Management Beispiele mit der AWS SDK für PHP Version 3
<a name="iam-examples"></a>

AWS Identity and Access Management (IAM) ist ein Webservice, der es Kunden von Amazon Web Services ermöglicht, Benutzer und Benutzerberechtigungen in AWS zu verwalten. Der Service richtet sich an Unternehmen mit mehreren Benutzern oder Systemen in der Cloud, die AWS Produkte verwenden. Mit IAM können Sie Benutzer, Sicherheitsanmeldeinformationen wie Zugriffsschlüssel und Berechtigungen, mit denen gesteuert wird, auf welche AWS Ressourcen Benutzer zugreifen können, zentral verwalten.

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

**Topics**
+ [Anmeldeinformationen](#examplecredentials)
+ [Verwaltung von IAM-Zugriffsschlüsseln](iam-examples-managing-access-keys.md)
+ [Verwalten von IAM-Benutzern](iam-examples-managing-users.md)
+ [Verwendung von IAM-Kontoaliasen](iam-examples-using-account-aliases.md)
+ [Arbeiten mit IAM-Richtlinien](iam-examples-working-with-policies.md)
+ [Arbeiten mit IAM-Serverzertifikaten](iam-examples-working-with-certs.md)

# Verwaltung von IAM-Zugriffsschlüsseln mit AWS SDK für PHP Version 3
<a name="iam-examples-managing-access-keys"></a>

Benutzer benötigen ihre eigenen Zugriffstasten, um programmatische Aufrufe tätigen zu können AWS. Um diesen Bedarf zu decken, können Sie Zugriffsschlüssel (Zugriffsschlüssel IDs und geheime Zugriffsschlüssel) für IAM-Benutzer erstellen, ändern, anzeigen oder rotieren. Wenn Sie einen Zugriffsschlüssel erstellen, lautet der Status standardmäßig Aktiv. Dies bedeutet, dass der Benutzer den Zugriffsschlüssel für API-Aufrufe verwenden kann.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen geheimen Zugriffsschlüssel und die entsprechende Zugriffsschlüssel-ID mithilfe von [CreateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccesskey).
+ Gibt Informationen über den Zugriffsschlüssel zurück, der einem IAM-Benutzer IDs zugeordnet ist, der [ListAccessKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccesskeys)
+ Rufen Sie Informationen darüber ab, wann ein Zugriffsschlüssel zuletzt verwendet wurde mit [GetAccessKeyLastUsed](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getaccesskeylastused).
+ Ändern Sie den Status eines Zugriffsschlüssels von Aktiv in Inaktiv oder umgekehrt, indem Sie [UpdateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateaccesskey).
+ Löschen Sie ein Zugriffsschlüsselpaar, das einem IAM-Benutzer zugeordnet ist, mithilfe von [DeleteAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccesskey).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen eines Zugriffsschlüssels
<a name="create-an-access-key"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createAccessKey([
        'UserName' => 'IAM_USER_NAME',
    ]);
    $keyID = $result['AccessKey']['AccessKeyId'];
    $createDate = $result['AccessKey']['CreateDate'];
    $userName = $result['AccessKey']['UserName'];
    $status = $result['AccessKey']['Status'];
    // $secretKey = $result['AccessKey']['SecretAccessKey']
    echo "<p>AccessKey " . $keyID . " created on " . $createDate . "</p>";
    echo "<p>Username: " . $userName . "</p>";
    echo "<p>Status: " . $status . "</p>";
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Auflisten von Zugriffsschlüsseln
<a name="list-access-keys"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listAccessKeys();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Ruft Informationen über die letzte Verwendung eines Zugriffsschlüssels ab
<a name="get-information-about-an-access-key-s-last-use"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getAccessKeyLastUsed([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aktualisieren eines Zugriffsschlüssels
<a name="update-an-access-key"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateAccessKey([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
        'Status' => 'Inactive', // REQUIRED
        'UserName' => 'IAM_USER_NAME',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen eines Zugriffsschlüssels
<a name="delete-an-access-key"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteAccessKey([
        'AccessKeyId' => 'ACCESS_KEY_ID', // REQUIRED
        'UserName' => 'IAM_USER_NAME',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwaltung von IAM-Benutzern mit AWS SDK für PHP Version 3
<a name="iam-examples-managing-users"></a>

Ein IAM-Benutzer ist eine Entität, die Sie erstellen, AWS um die Person oder den Dienst darzustellen, mit AWS dem er interagiert. Ein Benutzer AWS besteht aus einem Namen und Anmeldeinformationen.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen neuen IAM-Benutzer mit [CreateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createuser).
+ Listet IAM-Benutzer auf, die. [ListUsers](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listusers)
+ Aktualisieren Sie einen IAM-Benutzer mit. [UpdateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateuser)
+ Rufen Sie Informationen über einen IAM-Benutzer ab, indem Sie. [GetUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getuser)
+ Löschen Sie einen IAM-Benutzer mit. [DeleteUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuser)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen eines IAM-Benutzers
<a name="create-an-iam-user"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createUser(array(
        // UserName is required
        'UserName' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## IAM-Benutzer auflisten
<a name="list-iam-users"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listUsers();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aktualisieren Sie einen IAM-Benutzer
<a name="update-an-iam-user"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateUser([
        // UserName is required
        'UserName' => 'string1',
        'NewUserName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Holen Sie sich Informationen über einen IAM-Benutzer
<a name="get-information-about-an-iam-user"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getUser([
        'UserName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen Sie einen IAM-Benutzer
<a name="delete-an-iam-user"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteUser([
        // UserName is required
        'UserName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwenden von IAM-Kontoaliasen mit Version 3 AWS SDK für PHP
<a name="iam-examples-using-account-aliases"></a>

Wenn Sie möchten, dass die URL für Ihre Anmeldeseite Ihren Firmennamen oder eine andere benutzerfreundliche Kennung anstelle Ihrer AWS-Konto ID enthält, können Sie einen Alias für Ihre AWS-Konto ID erstellen. Wenn Sie einen AWS-Konto Alias erstellen, ändert sich die URL Ihrer Anmeldeseite, sodass der Alias enthalten ist.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Alias mit [CreateAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccountalias).
+ Listet den Alias auf, der der AWS-Konto Verwendung zugeordnet ist [ListAccountAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccountaliases).
+ Löschen Sie einen Alias mit [DeleteAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccountalias).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen eines Alias
<a name="create-an-alias"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->createAccountAlias(array(
        // AccountAlias is required
        'AccountAlias' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Auflisten von Konto-Aliasnamen
<a name="list-account-aliases"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listAccountAliases();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen Sie einen Alias
<a name="delete-an-alias"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteAccountAlias([
        // AccountAlias is required
        'AccountAlias' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Arbeiten mit IAM-Richtlinien mit AWS SDK für PHP Version 3
<a name="iam-examples-working-with-policies"></a>

Sie erteilen einem Benutzer Berechtigungen, indem Sie eine Richtlinie erstellen. Eine Richtlinie ist ein Dokument, in dem die Aktionen aufgeführt sind, die ein Benutzer ausführen kann, sowie die Ressourcen, auf die sich diese Aktionen auswirken können. Standardmäßig werden alle Aktionen oder Ressourcen, die nicht explizit erlaubt sind, verweigert. Richtlinien können erstellt und an Benutzer, Benutzergruppen, von Benutzern übernommene Rollen und Ressourcen angehängt werden.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie eine verwaltete Richtlinie mit [CreatePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createpolicy).
+ Fügen Sie einer Rolle eine Richtlinie hinzu mithilfe von [AttachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachrolepolicy).
+ Hängen Sie eine Richtlinie an einen Benutzer an, indem Sie [AttachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachuserpolicy).
+ Hängen Sie eine Richtlinie an eine Gruppe an mithilfe von [AttachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachgrouppolicy).
+ Entfernen Sie eine Rollenrichtlinie mithilfe von [DetachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachrolepolicy).
+ Entfernen Sie eine Benutzerrichtlinie mit [DetachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachuserpolicy).
+ Entfernen Sie eine Gruppenrichtlinie mit [DetachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachgrouppolicy).
+ Löschen Sie eine verwaltete Richtlinie mit [DeletePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletepolicy).
+ Löschen Sie eine Rollenrichtlinie mit [DeleteRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleterolepolicy).
+ Löschen Sie eine Benutzerrichtlinie mit [DeleteUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuserpolicy).
+ Löschen Sie eine Gruppenrichtlinie mit [DeleteGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletegrouppolicy).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen einer Richtlinie
<a name="create-a-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$myManagedPolicy = '{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "RESOURCE_ARN"
        },
        {
            "Effect": "Allow",
            "Action": [
            "dynamodb:DeleteItem",
            "dynamodb:GetItem",
            "dynamodb:PutItem",
            "dynamodb:Scan",
            "dynamodb:UpdateItem"
        ],
            "Resource": "RESOURCE_ARN"
        }
    ]
}';

try {
    $result = $client->createPolicy(array(
        // PolicyName is required
        'PolicyName' => 'myDynamoDBPolicy',
        // PolicyDocument is required
        'PolicyDocument' => $myManagedPolicy
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Anfügen einer Richtlinie an eine Rolle
<a name="attach-a-policy-to-a-role"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$roleName = 'ROLE_NAME';

$policyName = 'AmazonDynamoDBFullAccess';

$policyArn = 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess';

try {
    $attachedRolePolicies = $client->getIterator('ListAttachedRolePolicies', ([
        'RoleName' => $roleName,
    ]));
    if (count($attachedRolePolicies) > 0) {
        foreach ($attachedRolePolicies as $attachedRolePolicy) {
            if ($attachedRolePolicy['PolicyName'] == $policyName) {
                echo $policyName . " is already attached to this role. \n";
                exit();
            }
        }
    }
    $result = $client->attachRolePolicy(array(
        // RoleName is required
        'RoleName' => $roleName,
        // PolicyArn is required
        'PolicyArn' => $policyArn
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Anfügen einer Richtlinie an einen Benutzer
<a name="attach-a-policy-to-a-user"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

$userName = 'USER_NAME';

$policyName = 'AmazonDynamoDBFullAccess';

$policyArn = 'arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess';

try {
    $attachedUserPolicies = $client->getIterator('ListAttachedUserPolicies', ([
        'UserName' => $userName,
    ]));
    if (count($attachedUserPolicies) > 0) {
        foreach ($attachedUserPolicies as $attachedUserPolicy) {
            if ($attachedUserPolicy['PolicyName'] == $policyName) {
                echo $policyName . " is already attached to this role. \n";
                exit();
            }
        }
    }
    $result = $client->attachUserPolicy(array(
        // UserName is required
        'UserName' => $userName,
        // PolicyArn is required
        'PolicyArn' => $policyArn,
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Hängen Sie eine Richtlinie an eine Gruppe an
<a name="attach-a-policy-to-a-group"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->attachGroupPolicy(array(
        // GroupName is required
        'GroupName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Trennen Sie eine Benutzerrichtlinie
<a name="detach-a-user-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->detachUserPolicy([
        // UserName is required
        'UserName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Trennen Sie eine Gruppenrichtlinie
<a name="detach-a-group-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->detachGroupPolicy([
        // GroupName is required
        'GroupName' => 'string',
        // PolicyArn is required
        'PolicyArn' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen Sie eine Richtlinie
<a name="delete-a-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deletePolicy(array(
        // PolicyArn is required
        'PolicyArn' => 'string'
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen Sie eine Rollenrichtlinie
<a name="delete-a-role-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteRolePolicy([
        // RoleName is required
        'RoleName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen Sie eine Benutzerrichtlinie
<a name="delete-a-user-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteUserPolicy([
        // UserName is required
        'UserName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen einer Gruppenrichtlinie
<a name="delete-a-group-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteGroupPolicy(array(
        // GroupName is required
        'GroupName' => 'string',
        // PolicyName is required
        'PolicyName' => 'string',
    ));
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Arbeiten mit IAM-Serverzertifikaten mit AWS SDK für PHP Version 3
<a name="iam-examples-working-with-certs"></a>

Um HTTPS-Verbindungen zu Ihrer Website oder Anwendung zu aktivieren AWS, benötigen Sie ein SSL/TLS Serverzertifikat. Um ein Zertifikat zu verwenden, das Sie von einem externen Anbieter für Ihre Website oder Anwendung bezogen haben AWS, müssen Sie das Zertifikat in AWS Certificate Manager IAM hochladen oder in IAM importieren.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Listet die in IAM gespeicherten Zertifikate auf unter [ListServerCertificates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listservercertificates)
+ Rufen Sie Informationen zu einem Zertifikat ab mit [GetServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getservercertificate).
+ Aktualisieren Sie ein Zertifikat mit [UpdateServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateservercertificate).
+ Löschen Sie ein Zertifikat mit [DeleteServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteservercertificate).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Auflisten von Serverzertifikaten
<a name="list-server-certificates"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->listServerCertificates();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Rufen Sie ein Serverzertifikat ab
<a name="retrieve-a-server-certificate"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->getServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Aktualisieren eines Serverzertifikats
<a name="update-a-server-certificate"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->updateServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
        'NewServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen eines Serverzertifikats
<a name="delete-a-server-certificate"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
```

 **Beispiel-Code** 

```
$client = new IamClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2010-05-08'
]);

try {
    $result = $client->deleteServerCertificate([
        // ServerCertificateName is required
        'ServerCertificateName' => 'string',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# AWS Key Management Service Beispiele mit der AWS SDK für PHP Version 3
<a name="kms-examples"></a>

AWS Key Management Service (AWS KMS) ist ein verwalteter Dienst, der es Ihnen leicht macht, die zur Verschlüsselung Ihrer Daten verwendeten Verschlüsselungsschlüssel zu erstellen und zu kontrollieren. Weitere Informationen zu AWS KMS finden Sie in der [Amazon KMS-Dokumentation](https://aws.amazon.com/documentation/kms/). Ganz gleich, ob Sie sichere PHP-Anwendungen schreiben oder Daten an andere AWS Dienste senden, es AWS KMS hilft Ihnen, die Kontrolle darüber zu behalten, wer Ihre Schlüssel verwenden und Zugriff auf Ihre verschlüsselten Daten erhalten kann.

Der gesamte Beispielcode für die AWS SDK für PHP Version 3 ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Arbeiten mit Schlüsseln](kms-example-keys.md)
+ [Verschlüsseln und Entschlüsseln von Datenschlüsseln](kms-example-encrypt.md)
+ [Arbeiten mit Schlüsselrichtlinien](kms-example-key-policy.md)
+ [Arbeiten mit Erteilungen](kms-example-grants.md)
+ [Arbeiten mit Aliasen](kms-example-alias.md)

# Arbeiten mit Schlüsseln mithilfe der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-keys"></a>

Die primären Ressourcen in AWS Key Management Service () sind.AWS KMS[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) Sie können einen KMS-Schlüssel verwenden, um Ihre Daten zu verschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Kunden-KMS-Schlüssel mit [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey).
+ Generieren Sie einen Datenschlüssel mit [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey).
+ Zeigen Sie einen KMS-Schlüssel an mit [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey).
+ Schlüssel IDs und Schlüssel-ARNS von KMS-Schlüsseln abrufen mithilfe [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys)von.
+ Aktivieren Sie KMS-Schlüssel mit [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey).
+ Deaktivieren Sie KMS-Schlüssel mit [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen Sie einen KMS-Schlüssel
<a name="create-a-cmk"></a>

Verwenden Sie den [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)Vorgang, um einen [KMS-Schlüssel](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

//Creates a customer master key (CMK) in the caller's AWS account.
$desc = "Key for protecting critical data";

try {
    $result = $KmsClient->createKey([
        'Description' => $desc,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Erzeugen eines Datenschlüssels
<a name="generate-a-data-key"></a>

Verwenden Sie den [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)Vorgang, um einen Datenverschlüsselungsschlüssel zu generieren. Diese Operation gibt eine Klartextkopie und eine verschlüsselte Kopie des von ihr erstellten Datenschlüssels zurück. Geben Sie den an, AWS KMS key unter dem der Datenschlüssel generiert werden soll.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$keySpec = 'AES_256';

try {
    $result = $KmsClient->generateDataKey([
        'KeyId' => $keyId,
        'KeySpec' => $keySpec,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen KMS-Schlüssel anzeigen
<a name="view-a-cmk"></a>

Verwenden Sie den [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)Vorgang, um detaillierte Informationen zu einem KMS-Schlüssel zu erhalten, einschließlich des Amazon-Ressourcennamens (ARN) und des [Schlüsselstatus](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) des KMS-Schlüssels.

 Mit `DescribeKey` können keine Aliasnamen abgerufen werden. Verwenden Sie den [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)Vorgang, um Aliase abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->describeKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ruft die Schlüssel-ID und den Schlüssel ARNs eines KMS-Schlüssels ab
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

Verwenden Sie den [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)Vorgang, um die ID und den ARN des KMS-Schlüssels abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listKeys([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktivieren Sie einen KMS-Schlüssel
<a name="enable-a-cmk"></a>

Verwenden Sie den [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)Vorgang, um einen deaktivierten KMS-Schlüssel zu aktivieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->enableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Deaktivieren Sie einen KMS-Schlüssel
<a name="disable-a-cmk"></a>

Verwenden Sie den [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)Vorgang, um einen KMS-Schlüssel zu deaktivieren. Das Deaktivieren eines KMS-Schlüssels verhindert, dass er verwendet wird.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';

try {
    $result = $KmsClient->disableKey([
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Verschlüsselung und Entschlüsselung von AWS KMS Datenschlüsseln mit der Version 3 AWS SDK für PHP
<a name="kms-example-encrypt"></a>

Datenschlüssel sind Verschlüsselungsschlüssel, mit denen Sie Daten verschlüsseln können. Dazu gehören große Datenmengen und andere Datenverschlüsselungsschlüssel.

Sie können AWS Key Management Service an's (AWS KMS) verwenden, [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)um Datenschlüssel zu generieren, zu verschlüsseln und zu entschlüsseln.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Verschlüsseln Sie einen Datenschlüssel mit [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ Entschlüsseln Sie einen Datenschlüssel mit [Decrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt).
+ Verschlüsseln Sie einen Datenschlüssel erneut mit einem neuen KMS-Schlüssel mithilfe von. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Encrypt
<a name="encrypt"></a>

Die Operation [Encrypt (Verschlüsseln)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) ist für die Verschlüsselung von Datenschlüsseln konzipiert, wird aber nicht häufig verwendet. Die [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)Operationen [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)und geben verschlüsselte Datenschlüssel zurück. Sie können die `Encypt` Methode verwenden, wenn Sie verschlüsselte Daten in eine neue AWS Region verschieben und deren Datenschlüssel mithilfe eines KMS-Schlüssels in der neuen Region verschlüsseln möchten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$message = pack('c*', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0);

try {
    $result = $KmsClient->encrypt([
        'KeyId' => $keyId,
        'Plaintext' => $message,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Decrypt
<a name="decrypt"></a>

Zur Entschlüsselung eines Datenschlüssels verwenden Sie die Produktion [Decrypt.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$ciphertext = 'Place your cipher text blob here';

try {
    $result = $KmsClient->decrypt([
        'CiphertextBlob' => $ciphertext,
    ]);
    $plaintext = $result['Plaintext'];
    var_dump($plaintext);
} catch (AwsException $e) {
    // Output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Neuverschlüsseln
<a name="reencrypt"></a>

Verwenden Sie den Vorgang, um einen verschlüsselten Datenschlüssel zu entschlüsseln und den Datenschlüssel dann sofort unter einem anderen KMS-Schlüssel erneut zu verschlüsseln. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Die Operationen werden ausschließlich serverseitig innerhalb von ausgeführt AWS KMS, sodass Ihr Klartext niemals außerhalb von angezeigt wird. AWS KMS

Der Wert`ciphertextBlob`, den Sie angeben, muss der Wert des `CiphertextBlob` Felds aus einer [GenerateDataKey[GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), oder [Encrypt-Antwort](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$ciphertextBlob = 'Place your cipher text blob here';

try {
    $result = $KmsClient->reEncrypt([
        'CiphertextBlob' => $ciphertextBlob,
        'DestinationKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Mit der AWS SDK für PHP Version 3 mit AWS KMS wichtigen Richtlinien arbeiten
<a name="kms-example-key-policy"></a>

Wenn Sie einen erstellen [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), legen Sie fest, wer diesen KMS-Schlüssel verwenden und verwalten kann. Diese Berechtigungen werden in einem Dokument namens Schlüsselrichtlinie festgehalten. Sie können die Schlüsselrichtlinie verwenden, um jederzeit Berechtigungen für einen vom Kunden verwalteten KMS-Schlüssel hinzuzufügen, zu entfernen oder zu ändern, aber Sie können die Schlüsselrichtlinie für einen AWS verwalteten KMS-Schlüssel nicht bearbeiten. Weitere Informationen finden Sie unter [Authentifizierung und Zugriffskontrolle für AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Listet die Namen der wichtigsten Richtlinien auf, die verwendet [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies)werden.
+ Holen Sie sich eine wichtige Richtlinie mit [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Legen Sie eine wichtige Richtlinie fest mit [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Alle wichtigen Richtlinien auflisten
<a name="list-all-key-policies"></a>

Verwenden Sie den `ListKeyPolicies` Vorgang, um die Namen der wichtigsten Richtlinien für einen KMS-Schlüssel abzurufen. 

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listKeyPolicies([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie eine wichtige Richtlinie ab
<a name="retrieve-a-key-policy"></a>

Verwenden Sie den `GetKeyPolicy` Vorgang, um die Schlüsselrichtlinie für einen KMS-Schlüssel abzurufen.

 `GetKeyPolicy` erfordert einen Richtliniennamen. Sofern Sie beim Erstellen des KMS-Schlüssels keine Schlüsselrichtlinie erstellt haben, ist der einzig gültige Richtlinienname der Standardwert. Weitere Informationen zur [Standardschlüsselrichtlinie](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) finden Sie im *AWS Key Management Service Entwicklerhandbuch*.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->getKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Legen Sie eine wichtige Richtlinie fest
<a name="set-a-key-policy"></a>

Verwenden Sie den `PutKeyPolicy` Vorgang, um eine Schlüsselrichtlinie für einen KMS-Schlüssel einzurichten oder zu ändern.

 `PutKeyPolicy` erfordert einen Richtliniennamen. Sofern Sie beim Erstellen des KMS-Schlüssels keine Schlüsselrichtlinie erstellt haben, ist der einzig gültige Richtlinienname der Standardwert. Weitere Informationen zur [Standardschlüsselrichtlinie](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) finden Sie im *AWS Key Management Service Entwicklerhandbuch*.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$policyName = "default";

try {
    $result = $KmsClient->putKeyPolicy([
        'KeyId' => $keyId,
        'PolicyName' => $policyName,
        'Policy' => '{ 
            "Version":"2012-10-17",		 	 	  
            "Id": "custom-policy-2016-12-07", 
            "Statement": [ 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal": 
                   { "AWS": "arn:aws:iam::111122223333:user/root" }, 
                "Action": [ "kms:*" ], 
                "Resource": "*" }, 
                { "Sid": "Enable IAM User Permissions", 
                "Effect": "Allow", 
                "Principal":                 
                   { "AWS": "arn:aws:iam::111122223333:user/ExampleUser" }, 
                "Action": [
                    "kms:Encrypt*",
                    "kms:GenerateDataKey*",
                    "kms:Decrypt*",
                    "kms:DescribeKey*",
                    "kms:ReEncrypt*"
                ], 
                "Resource": "*" }                 
            ]            
        } '
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Arbeiten mit Zuschüssen mithilfe der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-grants"></a>

Eine Erteilung ist ein weiterer Mechanismus für die Bereitstellung von Berechtigungen. Es ist eine Alternative zur wichtigsten Richtlinie. Sie können Zuschüsse verwenden, um langfristigen Zugriff zu gewähren, sodass AWS Schulleiter Ihr AWS Key Management Service (AWS KMS) vom Kunden [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)verwaltetes () nutzen können. Weitere Informationen finden Sie unter [Grants AWS KMS im AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) *Developer* Guide.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Grant für einen KMS-Schlüssel mithilfe von [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant).
+ Einen Zuschuss für einen KMS-Schlüssel anzeigen mit [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants).
+ Einen Zuschuss für einen KMS-Schlüssel zurückziehen mit [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant).
+ Widerrufen Sie eine Erteilung für einen KMS-Schlüssel mithilfe von [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen einer Erteilung
<a name="create-a-grant"></a>

Verwenden Sie die [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)Operation AWS KMS key, um einen Zuschuss für einen zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$granteePrincipal = "arn:aws:iam::111122223333:user/Alice";
$operation = ['Encrypt', 'Decrypt']; // A list of operations that the grant allows.

try {
    $result = $KmsClient->createGrant([
        'GranteePrincipal' => $granteePrincipal,
        'KeyId' => $keyId,
        'Operations' => $operation
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Anzeigen einer Gewährung
<a name="view-a-grant"></a>

Um detaillierte Informationen zu den Zuschüssen für eine zu erhalten AWS KMS key, verwenden Sie die [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)Operation.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$limit = 10;

try {
    $result = $KmsClient->listGrants([
        'KeyId' => $keyId,
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Zuschuss zurückziehen
<a name="retire-a-grant"></a>

Um einen Zuschuss für einen zurückzuziehen AWS KMS key, verwenden Sie den [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)Vorgang. Heben Sie nicht mehr benötigte Erteilungen auf.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$grantToken = 'Place your grant token here';

try {
    $result = $KmsClient->retireGrant([
        'GrantToken' => $grantToken,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

//Can also identify grant to retire by a combination of the grant ID
//and the Amazon Resource Name (ARN) of the customer master key (CMK)
$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = 'Unique identifier of the grant returned during CreateGrant operation';

try {
    $result = $KmsClient->retireGrant([
        'GrantId' => $grantToken,
        'KeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Widerrufen Sie einen Zuschuss
<a name="revoke-a-grant"></a>

Um einen Zuschuss für einen zu widerrufen AWS KMS key, verwenden Sie den [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)Vorgang. Sie können eine Erteilung widerrufen, um ausdrücklich Produktionen abzulehnen, die diese Erteilung unbedingt benötigen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$grantId = "grant1";

try {
    $result = $KmsClient->revokeGrant([
        'KeyId' => $keyId,
        'GrantId' => $grantId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Arbeiten mit Aliasen unter Verwendung der AWS KMS API und der AWS SDK für PHP Version 3
<a name="kms-example-alias"></a>

AWS Key Management Service (AWS KMS) bietet einen optionalen Anzeigenamen für einen [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)aufgerufenen Alias.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Alias mit [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createalias).
+ Einen Alias anzeigen mit [ListAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listaliases).
+ Aktualisieren Sie einen Alias mit [UpdateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#updatealias).
+ Löschen Sie einen Alias mit [DeleteAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#deletealias).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von AWS Key Management Service (AWS KMS) finden Sie im [AWS KMS Entwicklerhandbuch](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Erstellen eines Alias
<a name="create-an-alias"></a>

Verwenden Sie den [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)Vorgang, um einen Alias für einen KMS-Schlüssel zu erstellen. Der Alias muss für das Konto und die AWS Region eindeutig sein. Wenn Sie einen Alias für einen KMS-Schlüssel erstellen, der bereits über einen Alias verfügt, `CreateAlias` wird ein weiterer Alias für denselben KMS-Schlüssel erstellt. Der vorhandene Alias wird nicht ersetzt.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->createAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Alias anzeigen
<a name="view-an-alias"></a>

Verwenden Sie die Operation, um alle Aliase im AWS-Konto und AWS-Region des Anrufers aufzulisten. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$limit = 10;

try {
    $result = $KmsClient->listAliases([
        'Limit' => $limit,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktualisieren Sie einen Alias
<a name="update-an-alias"></a>

Verwenden Sie den [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)Vorgang, um einen vorhandenen Alias einem anderen KMS-Schlüssel zuzuordnen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$keyId = 'arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab';
$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->updateAlias([
        'AliasName' => $aliasName,
        'TargetKeyId' => $keyId,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Einen Alias löschen
<a name="delete-an-alias"></a>

Verwenden Sie den [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)Vorgang, um einen Alias zu löschen. Das Löschen eines Alias hat keine Auswirkungen auf den zugrunde liegenden KMS-Schlüssel.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$KmsClient = new Aws\Kms\KmsClient([
    'profile' => 'default',
    'version' => '2014-11-01',
    'region' => 'us-east-2'
]);

$aliasName = "alias/projectKey1";

try {
    $result = $KmsClient->deleteAlias([
        'AliasName' => $aliasName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Amazon Kinesis Kinesis-Beispiele mit AWS SDK für PHP Version 3
<a name="kinesis-examples"></a>

Amazon Kinesis ist ein AWS Service, der Daten in Echtzeit sammelt, verarbeitet und analysiert. Konfigurieren Sie Ihre Datenstreams mit Amazon Kinesis Data Streams oder verwenden Sie Amazon Data Firehose, um Daten an Amazon S3, OpenSearch Service, Amazon Redshift oder Splunk zu senden.

Weitere Informationen zu Kinesis finden Sie in der [Amazon Kinesis Kinesis-Dokumentation](https://docs.aws.amazon.com/kinesis/index.html).

Der gesamte Beispielcode für AWS SDK für PHP Version 3 ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Kinesis-Datenströme](kinesis-example-data-stream.md)
+ [Kinesis-Splitter](kinesis-example-shard.md)
+ [Kinesis Data Firehose Firehose-Lieferstreams](kinesis-firehose-example-delivery-stream.md)

# Erstellen von Datenströmen mit der Kinesis Data Streams API und der AWS SDK für PHP Version 3
<a name="kinesis-example-data-stream"></a>

Mit Amazon Kinesis Data Streams können Sie Echtzeitdaten senden. Erstellen Sie mit Kinesis Data Streams einen Datenproduzenten, der jedes Mal, wenn Sie Daten hinzufügen, Daten an das konfigurierte Ziel liefert.

Weitere Informationen finden Sie unter [Creating and Managing Streams](https://docs.aws.amazon.com/kinesis/latest/dev/working-with-streams.html.html) im Amazon Kinesis Developer Guide.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Datenstream mit [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#createstream).
+ Erfahren Sie mehr über einen einzelnen Datenstrom mithilfe von [DescribeStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#describestream).
+ Listet bestehende Datenströme auf mit [ListStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#liststreams).
+ Senden Sie Daten an einen vorhandenen Datenstrom mit [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#putrecord).
+ Löschen Sie einen Datenstrom mit [DeleteStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#deletestream).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung des Amazon Kinesis Developer Guide finden Sie im [Amazon Kinesis Data Streams Developer](https://docs.aws.amazon.com/kinesis/latest/dev/) Guide.

## Erstellen Sie einen Datenstream mithilfe eines Kinesis-Datenstroms
<a name="create-a-data-stream-using-a-ak-data-stream"></a>

Richten Sie mithilfe des folgenden Codebeispiels einen Kinesis-Datenstream ein, an den Sie Informationen senden können, die von Kinesis verarbeitet werden sollen. Weitere Informationen zum [Erstellen und Aktualisieren von Datenströmen](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) finden Sie im Amazon Kinesis Developer Guide.

Verwenden Sie die [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)Operation, um einen Kinesis-Datenstream zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$shardCount = 2;
$name = "my_stream_name";

try {
    $result = $kinesisClient->createStream([
        'ShardCount' => $shardCount,
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie einen Datenstrom ab
<a name="retrieve-a-data-stream"></a>

Rufen Sie mithilfe des folgenden Codebeispiels Details über einen vorhandenen Daten-Stream ab. Standardmäßig werden dadurch Informationen über die ersten 10 Shards zurückgegeben, die mit dem angegebenen Kinesis-Datenstrom verbunden sind. Denken Sie daran, `StreamStatus` anhand der Antwort zu überprüfen, bevor Sie Daten in einen Kinesis-Datenstrom schreiben.

Verwenden Sie den [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)Vorgang, um Details zu einem bestimmten Kinesis-Datenstrom abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->describeStream([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Listet vorhandene Datenströme auf, die mit Kinesis verbunden sind
<a name="list-existing-data-streams-that-are-connected-to-ak"></a>

Listet die ersten 10 Datenströme aus Ihrem Datenstrom AWS-Konto in der ausgewählten AWS Region auf. Verwenden Sie den zurückgegebenen Code ``HasMoreStreams`, um zu bestimmen, ob Ihrem Konto weitere Streams zugeordnet sind.

Verwenden Sie den [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)Vorgang, um Ihre Kinesis-Datenströme aufzulisten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

try {
    $result = $kinesisClient->listStreams();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Senden Sie Daten an einen vorhandenen Datenstrom
<a name="send-data-to-an-existing-data-stream"></a>

Sobald Sie einen Daten-Stream erstellt haben, verwenden Sie das folgende Beispiel zum Senden von Daten. Bevor Sie Daten an den Stream senden, überprüfen Sie mithilfe von `DescribeStream`, ob `StreamStatus` für die Daten aktiv ist.

Verwenden Sie die [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html)Operation, um einen einzelnen Datensatz in einen Kinesis-Datenstrom zu schreiben. Verwenden Sie den [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)Vorgang, um bis zu 500 Datensätze in einen Kinesis-Datenstrom zu schreiben.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-1'
]);

$name = "my_stream_name";
$content = '{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}';
$groupID = "input to a hash function that maps the partition key (and associated data) to a specific shard";

try {
    $result = $kinesisClient->PutRecord([
        'Data' => $content,
        'StreamName' => $name,
        'PartitionKey' => $groupID
    ]);
    print("<p>ShardID = " . $result["ShardId"] . "</p>");
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie einen Datenstrom
<a name="delete-a-data-stream"></a>

In diesem Beispiel wird gezeigt, wie Sie einen Daten-Stream löschen. Durch das Löschen eines Datenstroms werden auch alle Daten gelöscht, die Sie an den Daten-Stream gesendet haben. Aktive Kinesis-Datenstreams wechseln in den Status DELETING, bis das Löschen des Streams abgeschlossen ist. Im Status WIRD GELÖSCHT verarbeitet der Stream weiterhin Daten.

Verwenden Sie den [DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)Vorgang, um einen Kinesis-Datenstrom zu löschen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->deleteStream([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Datensplitter mithilfe der Kinesis Data Streams API und der AWS SDK für PHP Version 3 verwalten
<a name="kinesis-example-shard"></a>

Mit Amazon Kinesis Data Streams können Sie Echtzeitdaten an einen Endpunkt senden. Die Rate des Datenflusses ist von der Anzahl Shards in Ihrem Stream abhängig.

Sie können 1.000 Datensätze pro Sekunde in einen einzelnen Shard schreiben. Jeder Shard verfügt außerdem über ein Upload-Limit von 1 MiB pro Sekunde. Die Nutzung wird berechnet und pro Shard abgerechnet. Mithilfe dieser Beispiele können Sie also die Datenkapazität und Kosten Ihres Streams verwalten.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Shards in einem Stream auflisten mit. [ListShards](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#listshards)
+ Fügen Sie die Anzahl der Shards in einem Stream hinzu oder reduzieren Sie die Anzahl der Shards mithilfe von. [UpdateShardCount](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#updateshardcount)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon Kinesis Data Streams finden Sie im [Amazon Kinesis Data Streams Developer Guide](https://docs.aws.amazon.com/streams/latest/dev/).

## Datenstream-Shards auflisten
<a name="list-data-stream-shards"></a>

Listen Sie die Details von bis zu 100 Shards in einem bestimmten Stream auf.

Verwenden Sie die Operation, um die Shards in einem Kinesis-Datenstrom aufzulisten. [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $kinesisClient->ListShards([
        'StreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Fügen Sie weitere Datenstrom-Shards hinzu
<a name="add-more-data-stream-shards"></a>

Wenn Sie mehr Daten-Stream-Shards benötigen, können Sie die aktuelle Anzahl Shards erhöhen. Es wird empfohlen, bei einer Erhöhung die Shard-Anzahl zu verdoppeln. Dadurch wird eine Kopie der einzelnen Shards erstellt, die derzeit verfügbar sind, um Ihre Kapazität zu erhöhen. Sie können die Anzahl Ihrer Shards nur zweimal innerhalb von 24 Stunden verdoppeln.

Denken Sie daran, dass die Abrechnung für die Nutzung von Kinesis Data Streams pro Shard berechnet wird. Wenn die Nachfrage sinkt, empfehlen wir Ihnen, die Anzahl Ihrer Shards um die Hälfte zu reduzieren. Wenn Sie Shards entfernen, können Sie die Shard-Menge nur auf die Hälfte Ihrer aktuellen Shard-Anzahl herabsetzen.

Verwenden Sie die Operation, um die Shard-Anzahl eines Kinesis-Datenstroms zu aktualisieren. [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$kinesisClient = new Aws\Kinesis\KinesisClient([
    'profile' => 'default',
    'version' => '2013-12-02',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$totalshards = 4;

try {
    $result = $kinesisClient->UpdateShardCount([
        'ScalingType' => 'UNIFORM_SCALING',
        'StreamName' => $name,
        'TargetShardCount' => $totalshards
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Erstellen von Lieferdatenströmen mithilfe der Firehose-API und der AWS SDK für PHP Version 3
<a name="kinesis-firehose-example-delivery-stream"></a>

Mit Amazon Data Firehose können Sie Echtzeitdaten an andere AWS Dienste wie Amazon Kinesis Data Streams, Amazon S3, Amazon OpenSearch Service (OpenSearch Service) und Amazon Redshift oder an Splunk senden. Erstellen Sie ein Datenproduzent mit Bereitstellungsstreams, um bei jedem Hinzufügen von Daten Daten an das konfigurierte Ziel zu senden.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Lieferstream mit. [CreateDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#createdeliverystream)
+ Erfahren Sie mehr über einen einzelnen Lieferstream mithilfe von [DescribeDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#describedeliverystream).
+ Listen Sie Ihre Lieferstreams auf mit [ListDeliveryStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#listdeliverystreams).
+ Senden Sie Daten an einen Lieferstream mit [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#putrecord).
+ Löschen Sie einen Lieferstream mit [DeleteDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#deletedeliverystream).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon Data Firehose finden Sie im [Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/streams/latest/dev/) Developer Guide.

## Erstellen Sie einen Lieferstream mithilfe eines Kinesis-Datenstroms
<a name="create-a-delivery-stream-using-a-ak-data-stream"></a>

Verwenden Sie den [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)Vorgang, um einen Lieferstream einzurichten, der Daten in einen vorhandenen Kinesis-Datenstrom einfügt.

Auf diese Weise können Entwickler bestehende Kinesis-Dienste auf Firehose migrieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$stream_type = "KinesisStreamAsSource";
$kinesis_stream = "arn:aws:kinesis:us-east-2:0123456789:stream/my_stream_name";
$role = "arn:aws:iam::0123456789:policy/Role";

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'KinesisStreamSourceConfiguration' => [
            'KinesisStreamARN' => $kinesis_stream,
            'RoleARN' => $role,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Erstellen Sie einen Lieferstream mithilfe eines Amazon S3 S3-Buckets
<a name="create-a-delivery-stream-using-an-s3-bucket"></a>

Verwenden Sie den [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)Vorgang, um einen Lieferstream einzurichten, der Daten in einen vorhandenen Amazon S3 S3-Bucket überträgt.

Stellen Sie die Zielparameter bereit, wie unter [Zielparameter](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html) beschrieben. Stellen Sie dann sicher, dass Sie Firehose Zugriff auf Ihren Amazon S3-Bucket [gewähren, wie unter Kinesis Data Firehose Access to an Amazon](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3.html) S3 Destination gewähren beschrieben.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_S3_stream_name";
$stream_type = "DirectPut";
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'S3DestinationConfiguration' => [
            'BucketARN' => $s3bucket,
            'CloudWatchLoggingOptions' => [
                'Enabled' => false,
            ],
            'RoleARN' => $s3Role
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Erstellen Sie mithilfe von Service einen Lieferstream OpenSearch
<a name="create-a-delivery-stream-using-es"></a>

Verwenden Sie den [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)Vorgang, um einen Firehose-Lieferstream einzurichten, der Daten in einen OpenSearch Service-Cluster einfügt.

Stellen Sie die Zielparameter bereit, wie unter [Zielparameter](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html) beschrieben. Stellen Sie sicher, dass Sie Firehose Zugriff auf Ihren OpenSearch Service-Cluster [gewähren, wie unter Kinesis Data Firehose Access to an Amazon](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es.html) ES Destination gewähren beschrieben.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_ES_stream_name";
$stream_type = "DirectPut";
$esDomainARN = 'arn:aws:es:us-east-2:0123456789:domain/Name';
$esRole = 'arn:aws:iam::0123456789:policy/Role';
$esIndex = 'root';
$esType = 'PHP_SDK';
$s3bucket = 'arn:aws:s3:::bucket_name';
$s3Role = 'arn:aws:iam::0123456789:policy/Role';

try {
    $result = $firehoseClient->createDeliveryStream([
        'DeliveryStreamName' => $name,
        'DeliveryStreamType' => $stream_type,
        'ElasticsearchDestinationConfiguration' => [
            'DomainARN' => $esDomainARN,
            'IndexName' => $esIndex,
            'RoleARN' => $esRole,
            'S3Configuration' => [
                'BucketARN' => $s3bucket,
                'CloudWatchLoggingOptions' => [
                    'Enabled' => false,
                ],
                'RoleARN' => $s3Role,
            ],
            'TypeName' => $esType,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie einen Lieferstream ab
<a name="retrieve-a-delivery-stream"></a>

Verwenden Sie den [DescribeDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DescribeDeliveryStream.html)Vorgang, um die Details zu einem Firehose Firehose-Lieferstream abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->describeDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Listet bestehende Lieferstreams auf, die mit Kinesis Data Streams verbunden sind
<a name="list-existing-delivery-streams-connected-to-aks"></a>

Verwenden Sie den Vorgang, um alle vorhandenen Firehose-Lieferdatenströme aufzulisten, die Daten an Kinesis Data Streams senden. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'KinesisStreamAsSource',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Listet vorhandene Lieferströme auf, die Daten an andere Dienste senden AWS
<a name="list-existing-delivery-streams-sending-data-to-other-aws-services"></a>

Verwenden Sie den Vorgang, um alle vorhandenen Firehose-Lieferdatenströme aufzulisten, die Daten an Amazon S3, OpenSearch Service oder Amazon Redshift oder an Splunk senden. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

try {
    $result = $firehoseClient->listDeliveryStreams([
        'DeliveryStreamType' => 'DirectPut',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Daten an einen vorhandenen Firehose-Lieferstream senden
<a name="send-data-to-an-existing-akf-delivery-stream"></a>

Um Daten über einen Firehose-Lieferstream an das angegebene Ziel zu senden, verwenden Sie den [PutRecord](https://docs.aws.amazon.com/firehose/latest/APIReference/API_API_PutRecord.html)Vorgang, nachdem Sie einen Firehose-Lieferstream erstellt haben.

Prüfen Sie vor dem Senden von Daten an einen Firehose-Lieferstream`DescribeDeliveryStream`, ob der Zustellungsstream aktiv ist.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";
$content = '{"ticker_symbol":"QXZ", "sector":"HEALTHCARE", "change":-0.05, "price":84.51}';

try {
    $result = $firehoseClient->putRecord([
        'DeliveryStreamName' => $name,
        'Record' => [
            'Data' => $content,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie einen Firehose-Lieferstream
<a name="delete-a-akf-delivery-stream"></a>

Verwenden Sie den [DeleteDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStreams.html)Vorgang, um einen Firehose-Lieferstream zu löschen. Dadurch werden auch alle Daten gelöscht, die Sie an den Bereitstellungsstream gesendet haben.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$firehoseClient = new Aws\Firehose\FirehoseClient([
    'profile' => 'default',
    'version' => '2015-08-04',
    'region' => 'us-east-2'
]);

$name = "my_stream_name";

try {
    $result = $firehoseClient->deleteDeliveryStream([
        'DeliveryStreamName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# AWS Elemental MediaConvert Beispiele mit der AWS SDK für PHP Version 3
<a name="emc-examples"></a>

AWS Elemental MediaConvert ist ein dateibasierter Video-Transcodierungsdienst mit Funktionen in Rundfunkqualität. Sie können damit Inhalte für die Übertragung und für die video-on-demand (VOD-) Übertragung über das Internet erstellen. Weitere Informationen finden Sie im [AWS Elemental MediaConvert -Benutzerhandbuch](https://docs.aws.amazon.com/mediaconvert/latest/ug/).

Die PHP-API für AWS Elemental MediaConvert wird über die *`AWS.MediaConvert`*Client-Klasse verfügbar gemacht. Weitere Informationen finden Sie [https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html)in der API-Referenz.

## Erstellen und verwalten Sie Transcodierungsaufträge in AWS Elemental MediaConvert
<a name="emc-examples-jobs"></a>

In diesem Beispiel verwenden Sie AWS SDK für PHP Version 3, um einen Transcodierungsjob aufzurufen AWS Elemental MediaConvert und zu erstellen. Bevor Sie beginnen, müssen Sie das Eingabevideo in den Amazon S3 S3-Bucket hochladen, den Sie für den Eingabespeicher bereitgestellt haben. [Eine Liste der unterstützten Eingabe-Videocodecs und Container finden Sie im Benutzerhandbuch unter [Unterstützte Eingabecodecs und Container](https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html).AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/)

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie Transcodierungsaufträge in. AWS Elemental MediaConvert[CreateJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#createjob).
+ Brecht einen Transcodierungsauftrag aus der AWS Elemental MediaConvert Warteschlange ab. [CancelJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#canceljob) 
+ Rufen Sie den JSON-Code für einen abgeschlossenen Transcodierungsauftrag ab. [GetJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#getjob) 
+ Rufen Sie ein JSON-Array für bis zu 20 der zuletzt erstellten Jobs ab. [ListJobs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#listjobs) 

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

### Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Um auf den MediaConvert Client zuzugreifen, erstellen Sie eine IAM-Rolle, die AWS Elemental MediaConvert Zugriff auf Ihre Eingabedateien und die Amazon S3 S3-Buckets gewährt, in denen Ihre Ausgabedateien gespeichert sind. [Einzelheiten finden Sie unter [Einrichten von IAM-Berechtigungen](https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html) im AWS Elemental MediaConvert Benutzerhandbuch.](https://docs.aws.amazon.com/mediaconvert/latest/ug/)

### Erstellen Sie einen Client
<a name="create-a-client"></a>

Konfigurieren Sie den, AWS SDK für PHP indem Sie einen MediaConvert Client mit der Region für Ihren Code erstellen. In diesem Beispiel ist die Region "us-west-2".

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\MediaConvert\MediaConvertClient;
```

 **Beispiel-Code** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);
```

### Definition eines einfachen Transcodierungsauftrags
<a name="defining-a-simple-transcoding-job"></a>

Erstellen Sie die JSON für die Definition der Transcodierungsauftragsparameter.

Diese Parameter sind detailliert. Sie können die [AWS Elemental MediaConvert Konsole](https://console.aws.amazon.com/mediaconvert/home) verwenden, um die JSON-Jobparameter zu generieren, indem Sie Ihre Job-Einstellungen in der Konsole auswählen und dann am Ende des **Job-Abschnitts die Option **Job-JSON** anzeigen** wählen. Dieses Beispiel enthält die JSON für einen einfachen Auftrag.

 **Beispiel-Code** 

```
$jobSetting = [
    "OutputGroups" => [
        [
            "Name" => "File Group",
            "OutputGroupSettings" => [
                "Type" => "FILE_GROUP_SETTINGS",
                "FileGroupSettings" => [
                    "Destination" => "s3://OUTPUT_BUCKET_NAME/"
                ]
            ],
            "Outputs" => [
                [
                    "VideoDescription" => [
                        "ScalingBehavior" => "DEFAULT",
                        "TimecodeInsertion" => "DISABLED",
                        "AntiAlias" => "ENABLED",
                        "Sharpness" => 50,
                        "CodecSettings" => [
                            "Codec" => "H_264",
                            "H264Settings" => [
                                "InterlaceMode" => "PROGRESSIVE",
                                "NumberReferenceFrames" => 3,
                                "Syntax" => "DEFAULT",
                                "Softness" => 0,
                                "GopClosedCadence" => 1,
                                "GopSize" => 90,
                                "Slices" => 1,
                                "GopBReference" => "DISABLED",
                                "SlowPal" => "DISABLED",
                                "SpatialAdaptiveQuantization" => "ENABLED",
                                "TemporalAdaptiveQuantization" => "ENABLED",
                                "FlickerAdaptiveQuantization" => "DISABLED",
                                "EntropyEncoding" => "CABAC",
                                "Bitrate" => 5000000,
                                "FramerateControl" => "SPECIFIED",
                                "RateControlMode" => "CBR",
                                "CodecProfile" => "MAIN",
                                "Telecine" => "NONE",
                                "MinIInterval" => 0,
                                "AdaptiveQuantization" => "HIGH",
                                "CodecLevel" => "AUTO",
                                "FieldEncoding" => "PAFF",
                                "SceneChangeDetect" => "ENABLED",
                                "QualityTuningLevel" => "SINGLE_PASS",
                                "FramerateConversionAlgorithm" => "DUPLICATE_DROP",
                                "UnregisteredSeiTimecode" => "DISABLED",
                                "GopSizeUnits" => "FRAMES",
                                "ParControl" => "SPECIFIED",
                                "NumberBFramesBetweenReferenceFrames" => 2,
                                "RepeatPps" => "DISABLED",
                                "FramerateNumerator" => 30,
                                "FramerateDenominator" => 1,
                                "ParNumerator" => 1,
                                "ParDenominator" => 1
                            ]
                        ],
                        "AfdSignaling" => "NONE",
                        "DropFrameTimecode" => "ENABLED",
                        "RespondToAfd" => "NONE",
                        "ColorMetadata" => "INSERT"
                    ],
                    "AudioDescriptions" => [
                        [
                            "AudioTypeControl" => "FOLLOW_INPUT",
                            "CodecSettings" => [
                                "Codec" => "AAC",
                                "AacSettings" => [
                                    "AudioDescriptionBroadcasterMix" => "NORMAL",
                                    "RateControlMode" => "CBR",
                                    "CodecProfile" => "LC",
                                    "CodingMode" => "CODING_MODE_2_0",
                                    "RawFormat" => "NONE",
                                    "SampleRate" => 48000,
                                    "Specification" => "MPEG4",
                                    "Bitrate" => 64000
                                ]
                            ],
                            "LanguageCodeControl" => "FOLLOW_INPUT",
                            "AudioSourceName" => "Audio Selector 1"
                        ]
                    ],
                    "ContainerSettings" => [
                        "Container" => "MP4",
                        "Mp4Settings" => [
                            "CslgAtom" => "INCLUDE",
                            "FreeSpaceBox" => "EXCLUDE",
                            "MoovPlacement" => "PROGRESSIVE_DOWNLOAD"
                        ]
                    ],
                    "NameModifier" => "_1"
                ]
            ]
        ]
    ],
    "AdAvailOffset" => 0,
    "Inputs" => [
        [
            "AudioSelectors" => [
                "Audio Selector 1" => [
                    "Offset" => 0,
                    "DefaultSelection" => "NOT_DEFAULT",
                    "ProgramSelection" => 1,
                    "SelectorType" => "TRACK",
                    "Tracks" => [
                        1
                    ]
                ]
            ],
            "VideoSelector" => [
                "ColorSpace" => "FOLLOW"
            ],
            "FilterEnable" => "AUTO",
            "PsiControl" => "USE_PSI",
            "FilterStrength" => 0,
            "DeblockFilter" => "DISABLED",
            "DenoiseFilter" => "DISABLED",
            "TimecodeSource" => "EMBEDDED",
            "FileInput" => "s3://INPUT_BUCKET_AND_FILE_NAME"
        ]
    ],
    "TimecodeConfig" => [
        "Source" => "EMBEDDED"
    ]
];
```

### Erstellen eines Auftrags
<a name="create-a-job"></a>

Nachdem Sie die Auftragsparameter-JSON erstellt haben, rufen Sie die createJob-Methode auf, indem Sie ein `AWS.MediaConvert service object` aufrufen und die Parameter übergeben. Die ID des erstellten Auftrags wird in den Antwortdaten zurückgegeben.

 **Beispiel-Code** 

```
try {
    $result = $mediaConvertClient->createJob([
        "Role" => "IAM_ROLE_ARN",
        "Settings" => $jobSetting, //JobSettings structure
        "Queue" => "JOB_QUEUE_ARN",
        "UserMetadata" => [
            "Customer" => "Amazon"
        ],
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Rufen Sie einen Job ab
<a name="retrieve-a-job"></a>

Mit der Auftrags-ID, die von CreateJob zurückgegeben wurde, erhalten Sie eine detaillierte Beschreibung der zuletzt ausgeführten Aufträge im JSON-Format.

 **Beispiel-Code** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->getJob([
        'Id' => 'JOB_ID',
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Abbrechen eines Auftrags
<a name="cancel-a-job"></a>

Mit der Auftrags-ID, die vom CreateJob-Aufruf zurückgegeben wurde, können Sie einen Auftrag in der Warteschlange abbrechen. Bereits begonnene Transcodierungsaufträge können nicht mehr abgebrochen werden.

 **Beispiel-Code** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->cancelJob([
        'Id' => 'JOB_ID', // REQUIRED The Job ID of the job to be cancelled.
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

### Listet die letzten Transcodierungsaufträge auf
<a name="listing-recent-transcoding-jobs"></a>

Erstellen Sie die Parameter-JSON einschließlich der Werte, um festzulegen, ob die Liste in aufsteigender oder absteigender Reihenfolge sortiert wird. Außerdem legen Sie hier den ARN der zu prüfenden Auftragswarteschlange sowie den Status der einzubeziehenden Aufträge fest. Es werden bis zu 20 Aufträge zurückgegeben. Verwenden Sie die Zeichenfolge „nextToken“ aus dem Ergebnis, um die nächsten 20 Aufträge abzurufen.

 **Beispiel-Code** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);

try {
    $result = $mediaConvertClient->listJobs([
        'MaxResults' => 20,
        'Order' => 'ASCENDING',
        'Queue' => 'QUEUE_ARN',
        'Status' => 'SUBMITTED',
        // 'NextToken' => '<string>', //OPTIONAL To retrieve the twenty next most recent jobs
    ]);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Amazon S3 S3-Beispiele mit AWS SDK für PHP Version 3
<a name="s3-examples"></a>

Amazon Simple Storage Service (Amazon S3) ist ein Webservice, der hoch skalierbaren Cloud-Speicher bereitstellt. Amazon S3 bietet benutzerfreundlichen Objektspeicher mit einer einfachen Webservice-Schnittstelle zum Speichern und Abrufen beliebiger Datenmengen von überall im Internet.

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

**Topics**
+ [Anmeldeinformationen](#examplecredentials)
+ [Amazon S3 S3-Buckets erstellen und verwenden](s3-examples-creating-buckets.md)
+ [Verwaltung der Zugriffsberechtigungen für Amazon S3 S3-Buckets](s3-examples-access-permissions.md)
+ [Konfiguration von Amazon S3 S3-Buckets](s3-examples-configuring-a-bucket.md)
+ [Mehrteilige Amazon S3 S3-Uploads](s3-multipart-upload.md)
+ [Vorsignierte Amazon S3 S3-URL](s3-presigned-url.md)
+ [Vorsigniertes S3 erstellen POSTs](s3-presigned-post.md)
+ [Verwenden eines Amazon S3 S3-Buckets als statischen Webhost](s3-examples-static-web-host.md)
+ [Arbeiten mit Amazon S3 S3-Bucket-Richtlinien](s3-examples-bucket-policies.md)
+ [Verwenden des S3-Zugangspunkts ARNs](s3-examples-access-point-arn.md)
+ [Verwenden Sie Access Points mit mehreren Regionen](s3-multi-region-access-points.md)

# Amazon S3 S3-Buckets mit AWS SDK für PHP Version 3 erstellen und verwenden
<a name="s3-examples-creating-buckets"></a>

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Gibt eine Liste von Buckets zurück, die dem authentifizierten Absender der Anfrage gehören, mit. [ListBuckets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listbuckets)
+ Erstellen Sie einen neuen Bucket mit. [CreateBucket](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createbucket)
+ Fügen Sie einem Bucket ein Objekt hinzu mit [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

## Buckets auflisten
<a name="list-buckets"></a>

Erstellen Sie eine PHP-Datei, mit folgendem Code: Erstellen Sie zunächst einen AWS.S3-Clientdienst, der die AWS Region und die Version angibt. Rufen Sie dann die `listBuckets` Methode auf, die alle Amazon S3 S3-Buckets zurückgibt, die dem Absender der Anfrage gehören, als Array von Bucket-Strukturen.

 **Beispiel-Code** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Listing all S3 Bucket
$buckets = $s3Client->listBuckets();
foreach ($buckets['Buckets'] as $bucket) {
    echo $bucket['Name'] . "\n";
}
```

## Erstellen eines -Buckets
<a name="create-a-bucket"></a>

Erstellen Sie eine PHP-Datei, mit folgendem Code: Erstellen Sie zunächst einen AWS.S3-Client-Service, der die AWS Region und die Version angibt. Rufen Sie dann die Methode `createBucket` mit einem Array als Parameter auf. Das einzige erforderliche Feld ist der Schlüssel „Bucket“ mit einem Zeichenfolgenwert für den zu erstellenden Bucket-Namen. Sie können die AWS Region jedoch mit dem Feld 'CreateBucketConfiguration' angeben. Bei Erfolg gibt diese Methode die Position des Buckets zurück.

 **Beispiel-Code** 

```
function createBucket($s3Client, $bucketName)
{
    try {
        $result = $s3Client->createBucket([
            'Bucket' => $bucketName,
        ]);
        return 'The bucket\'s location is: ' .
            $result['Location'] . '. ' .
            'The bucket\'s effective URI is: ' .
            $result['@metadata']['effectiveUri'];
    } catch (AwsException $e) {
        return 'Error: ' . $e->getAwsErrorMessage();
    }
}

function createTheBucket()
{
    $s3Client = new S3Client([
        'profile' => 'default',
        'region' => 'us-east-1',
        'version' => '2006-03-01'
    ]);

    echo createBucket($s3Client, 'amzn-s3-demo-bucket');
}

// Uncomment the following line to run this code in an AWS account.
// createTheBucket();
```

## Legen Sie ein Objekt in einen Eimer
<a name="put-an-object-in-a-bucket"></a>

Um Dateien zu Ihrem neuen Bucket hinzuzufügen, erstellen Sie eine PHP-Datei mit dem folgenden Code.

Führen Sie in Ihrer Befehlszeile diese Datei aus und übergeben Sie den Namen des Buckets, in den Sie Ihre Datei hochladen möchten, als Zeichenfolge gefolgt vom vollständigen Dateipfad der hochzuladenden Datei.

 **Beispiel-Code** 

```
$USAGE = "\n" .
    "To run this example, supply the name of an S3 bucket and a file to\n" .
    "upload to it.\n" .
    "\n" .
    "Ex: php PutObject.php <bucketname> <filename>\n";

if (count($argv) <= 2) {
    echo $USAGE;
    exit();
}

$bucket = $argv[1];
$file_Path = $argv[2];
$key = basename($argv[2]);

try {
    //Create a S3Client
    $s3Client = new S3Client([
        'profile' => 'default',
        'region' => 'us-west-2',
        'version' => '2006-03-01'
    ]);
    $result = $s3Client->putObject([
        'Bucket' => $bucket,
        'Key' => $key,
        'SourceFile' => $file_Path,
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage() . "\n";
}
```

# Verwaltung von Amazon S3 S3-Bucket-Zugriffsberechtigungen mit der AWS SDK für PHP Version 3
<a name="s3-examples-access-permissions"></a>

Zugriffskontrolllisten (ACLs) sind eine der ressourcenbasierten Zugriffsrichtlinienoptionen, mit denen Sie den Zugriff auf Ihre Buckets und Objekte verwalten können. Sie können sie verwenden ACLs , um anderen Konten grundlegende read/write Berechtigungen zu gewähren. AWS Weitere Informationen finden Sie unter [Zugriff verwalten mit ACLs](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).

Das folgende Beispiel zeigt eine Anleitung für:
+ Rufen Sie die Zugriffskontrollrichtlinie für einen Bucket ab, indem Sie [GetBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketacl).
+ Legen Sie die Berechtigungen für einen Bucket mithilfe ACLs von fest [PutBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketacl).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Rufen Sie eine Richtlinie für die Zugriffskontrollliste ab und legen Sie sie fest
<a name="get-and-set-an-access-control-list-policy"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;  
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
// Create a S3Client 
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Gets the access control policy for a bucket
$bucket = 'amzn-s3-demo-bucket';
try {
    $resp = $s3Client->getBucketAcl([
        'Bucket' => $bucket
    ]);
    echo "Succeed in retrieving bucket ACL as follows: \n";
    var_dump($resp);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

// Sets the permissions on a bucket using access control lists (ACL).
$params = [
    'ACL' => 'public-read',
    'AccessControlPolicy' => [
        // Information can be retrieved from `getBucketAcl` response
        'Grants' => [
            [
                'Grantee' => [
                    'DisplayName' => '<string>',
                    'EmailAddress' => '<string>',
                    'ID' => '<string>',
                    'Type' => 'CanonicalUser',
                    'URI' => '<string>',
                ],
                'Permission' => 'FULL_CONTROL',
            ],
            // ...
        ],
        'Owner' => [
            'DisplayName' => '<string>',
            'ID' => '<string>',
        ],
    ],
    'Bucket' => $bucket,
];

try {
    $resp = $s3Client->putBucketAcl($params);
    echo "Succeed in setting bucket ACL.\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}
```

# Konfiguration von Amazon S3 S3-Buckets mit AWS SDK für PHP Version 3
<a name="s3-examples-configuring-a-bucket"></a>

Cross-Origin Resource Sharing (CORS) bestimmt für Client-Webanwendungen, die in einer Domain geladen sind, eine Möglichkeit zur Interaktion mit Ressourcen in einer anderen Domain. Mit der CORS-Unterstützung in Amazon S3 können Sie umfangreiche clientseitige Webanwendungen mit Amazon S3 erstellen und selektiv den ursprungsübergreifenden Zugriff auf Ihre Amazon S3 S3-Ressourcen zulassen.

Weitere Informationen zur Verwendung der CORS-Konfiguration mit einem Amazon S3 S3-Bucket finden Sie unter [Cross-Origin Resource Sharing (CORS](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Rufen Sie die CORS-Konfiguration für einen Bucket ab mit. [GetBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketcors)
+ Stellen Sie die CORS-Konfiguration für einen Bucket ein mit. [PutBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketcors)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Holen Sie sich die CORS-Konfiguration
<a name="get-the-cors-configuration"></a>

Erstellen Sie eine PHP-Datei, mit folgendem Code: Zuerst erstellen Sie einen AWS.S3-Client-Service, dann rufen Sie die `getBucketCors`-Methode auf und geben Sie den Bucket an, dessen CORS-Konfiguration Sie abrufen wollen.

Der einzige erforderliche Parameter ist der Name der ausgewählten Buckets. Wenn der Bucket derzeit über eine CORS-Konfiguration verfügt, wird diese Konfiguration von Amazon S3 als [CORSRules Objekt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule) zurückgegeben.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

try {
    $result = $client->getBucketCors([
        'Bucket' => $bucketName, // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Stellen Sie die CORS-Konfiguration ein
<a name="set-the-cors-configuration"></a>

Erstellen Sie eine PHP-Datei, mit folgendem Code: Zuerst erstellen Sie einen AWS.S3-Client-Service. Rufen Sie dann die `putBucketCors` Methode auf und geben Sie den Bucket an, dessen CORS-Konfiguration festgelegt werden soll, und das CORSConfiguration als [CORSRules JSON-Objekt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

try {
    $result = $client->putBucketCors([
        'Bucket' => $bucketName, // REQUIRED
        'CORSConfiguration' => [ // REQUIRED
            'CORSRules' => [ // REQUIRED
                [
                    'AllowedHeaders' => ['Authorization'],
                    'AllowedMethods' => ['POST', 'GET', 'PUT'], // REQUIRED
                    'AllowedOrigins' => ['*'], // REQUIRED
                    'ExposeHeaders' => [],
                    'MaxAgeSeconds' => 3000
                ],
            ],
        ]
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Mehrteilige Amazon S3 S3-Uploads mit AWS SDK für PHP Version 3 verwenden
<a name="s3-multipart-upload"></a>

In einer einzelnen `PutObject`-Operation können Sie Objekte bis zu einer Größe von 5 GB hochladen. Durch Verwendung der Methoden für mehrteilige Uploads (z. B. `CreateMultipartUpload`, `UploadPart`, `CompleteMultipartUpload`, `AbortMultipartUpload`) können Sie jedoch Objekte von 5 MB bis 5 TB Größe hochladen.

Das folgende Beispiel zeigt eine Anleitung für:
+ Laden Sie ein Objekt auf Amazon S3 hoch, mit [ObjectUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectUploader.html).
+ Erstellen Sie einen mehrteiligen Upload für ein Amazon S3 S3-Objekt mit [MultipartUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.MultipartUploader.html).
+ Kopieren Sie Objekte von einem Amazon S3 S3-Standort an einen anderen mithilfe von [ObjectCopier](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectCopier.html).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Objekt-Uploader
<a name="object-uploader"></a>

Wenn Sie sich nicht sicher sind, ob `PutObject` oder für die Aufgabe am besten geeignet `MultipartUploader` ist, verwenden Sie. `ObjectUploader` `ObjectUploader`lädt je nach Nutzlastgröße eine große Datei mit `PutObject` oder `MultipartUploader` auf Amazon S3 hoch.

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\ObjectUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client.
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-east-2',
    'version' => '2006-03-01'
]);

$bucket = 'your-bucket';
$key = 'my-file.zip';

// Use a stream instead of a file path.
$source = fopen('/path/to/large/file.zip', 'rb');

$uploader = new ObjectUploader(
    $s3Client,
    $bucket,
    $key,
    $source
);

do {
    try {
        $result = $uploader->upload();
        if ($result["@metadata"]["statusCode"] == '200') {
            print('<p>File successfully uploaded to ' . $result["ObjectURL"] . '.</p>');
        }
        print($result);
        // If the SDK chooses a multipart upload, try again if there is an exception.
        // Unlike PutObject calls, multipart upload calls are not automatically retried.
    } catch (MultipartUploadException $e) {
        rewind($source);
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));

fclose($source);
```

### Konfiguration
<a name="object-uploader-configuration"></a>

Der Konstruktor des `ObjectUploader`-Objekts akzeptiert die folgenden Argumente:

**`$client`**  
Das `Aws\ClientInterface`-Objekt für die Ausführung der Übertragungen. Dies sollte eine Instance von `Aws\S3\S3Client` sein.

**`$bucket`**  
(`string`, *erforderlich*) Name des Buckets, in den das Objekt hochgeladen wird.

**`$key`**  
(`string`, *erforderlich*) Schlüssel, der für das hochzuladende Objekt verwendet werden soll.

**`$body`**  
(`mixed`, *erforderlich*) Objektdaten zum Hochladen. Kann eine`StreamInterface`, eine PHP-Stream-Ressource oder eine hochzuladende Datenfolge sein.

**`$acl`**  
(`string`) Zugriffskontrollliste (ACL), die auf das das hochzuladende Objekt gesetzt wird. Standardmäßig werden alle Objekte als privat eingestuft.

**`$options`**  
Ein assoziatives Array mit Konfigurationsoptionen für den mehrteiligen Upload. Die folgenden Konfigurationsoptionen sind gültig:    
**`add_content_md5`**  
(`bool`) Auf true setzen, um die MD5 Prüfsumme für den Upload automatisch zu berechnen.  
**`mup_threshold`**  
(`int`, *Standard*:`int(16777216)`) Die Anzahl der Byte für die Dateigröße. Wenn die Dateigröße diese Grenze überschreitet, wird ein mehrteiliger Upload verwendet.  
**`before_complete`**  
(`callable`) Callback, der vor der `CompleteMultipartUpload`-Operation aufgerufen wird. Der Callback sollte eine Funktionssignatur haben, die der folgenden ähnelt:. `function (Aws\Command $command) {...}` In der [CompleteMultipartUpload API-Referenz](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#completemultipartupload) finden Sie die Parameter, die Sie dem `CommandInterface` Objekt hinzufügen können.  
**`before_initiate`**  
(`callable`) Callback, der vor der `CreateMultipartUpload`-Operation aufgerufen wird. Der Callback sollte eine Funktionssignatur haben, die der folgenden ähnelt:`function (Aws\Command $command) {...}`. Das SDK ruft diesen Callback auf, wenn die Dateigröße den Wert überschreitet. `mup_threshold` In der [CreateMultipartUpload API-Referenz](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) finden Sie die Parameter, die Sie dem `CommandInterface` Objekt hinzufügen können.  
**`before_upload`**  
(`callable`) Callback, der vor allen `PutObject` `UploadPart` OR-Operationen aufgerufen werden soll. Der Callback sollte eine Funktionssignatur haben, die der folgenden ähnelt:. `function (Aws\Command $command) {...}` Das SDK ruft diesen Callback auf, wenn die Dateigröße kleiner oder gleich dem Wert ist. `mup_threshold` In der [PutObject API-Referenz](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject) finden Sie die Parameter, die Sie auf die `PutObject` Anfrage anwenden können. Parameter, die für eine `UploadPart` Anfrage gelten, finden Sie in der [UploadPart API-Referenz](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#uploadpart). Das SDK ignoriert alle Parameter, die für den durch das `CommandInterface` Objekt repräsentierten Vorgang nicht relevant sind.  
**`concurrency`**  
(`int`*Standard*: `int(3)`) Maximale Anzahl der gleichzeitigen `UploadPart`-Operationen, die während des mehrteiligen Upload zulässig sind.  
**`part_size`**  
(`int`*Standard*: `int(5242880)`) Teilegröße in Byte, die bei einem mehrteiligen Upload zu verwenden ist. Der Wert muss zwischen 5 MB und einschließlich 5 GB liegen.  
**`state`**  
(`Aws\Multipart\UploadState`) Ein Objekt, das den Status des mehrteiligen Upload darstellt, und das verwendet wird, um einen vorhergehenden Upload fortzusetzen. Wenn diese Option angegeben wird, werden die `$key` Argumente `$bucket` und und die `part_size` Option ignoriert.  
**`params`**  
Ein assoziatives Array, das Konfigurationsoptionen für jeden Unterbefehl bereitstellt. Beispiel:  

```
new ObjectUploader($bucket, $key, $body, $acl, ['params' => ['CacheControl' => <some_value>])
```

## MultipartUploader
<a name="multipartuploader"></a>

Mehrteilige Uploads sind darauf ausgelegt, die Upload-Leistung für größere Objekte zu verbessern. Sie ermöglichen Ihnen, Objekte in Teilen unabhängig, in jeder beliebigen Reihenfolge und parallel hochzuladen.

Amazon S3 S3-Kunden wird empfohlen, mehrteilige Uploads für Objekte mit mehr als 100 MB zu verwenden.

## MultipartUploader Objekt
<a name="multipartuploader-object"></a>

Das SDK hat ein spezielles `MultipartUploader`-Objekt, das den mehrteiligen Upload vereinfacht.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Use multipart upload
$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

try {
    $result = $uploader->upload();
    echo "Upload complete: {$result['ObjectURL']}\n";
} catch (MultipartUploadException $e) {
    echo $e->getMessage() . "\n";
}
```

Der Uploader erstellt einen Generator von Teiledaten, basierend auf der bereitgestellten Quelle und Konfiguration, und versucht, alle Teile hochzuladen. Wenn einige Teile-Uploads fehlschlagen, lädt der Uploader spätere Teile weiter, bis die gesamten Quelldaten gelesen wurden. Danach versucht der Uploader, die fehlgeschlagenen Teile hochzuladen, oder gibt eine Ausnahme zurück, die Informationen zu den Teilen enthält, die nicht hochgeladen wurden.

## Anpassen eines mehrteiligen Uploads
<a name="customizing-a-multipart-upload"></a>

Sie können benutzerdefinierte Optionen für die vom Multipart-Uploader ausgeführten Operationen `CreateMultipartUpload`, `UploadPart`und `CompleteMultipartUpload` festlegen. Dazu verwenden Sie Callbacks, die seinem Konstruktor übergeben werden.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Customizing a multipart upload
$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
    'before_initiate' => function (Command $command) {
        // $command is a CreateMultipartUpload operation
        $command['CacheControl'] = 'max-age=3600';
    },
    'before_upload' => function (Command $command) {
        // $command is an UploadPart operation
        $command['RequestPayer'] = 'requester';
    },
    'before_complete' => function (Command $command) {
        // $command is a CompleteMultipartUpload operation
        $command['RequestPayer'] = 'requester';
    },
]);
```

### Manuelle Speicherbereinigung zwischen Teil-Uploads
<a name="manual-garbage-collection-between-part-uploads"></a>

Wenn Sie bei großen Uploads das Speicherlimit ausreizen, ist die unter Umstände auf zyklische Referenzen zurückzuführen, die vom SDK konfiguriert wurden und noch nicht von der [PHP-Speicherbereinigung](https://www.php.net/manual/en/features.gc.php) gelöscht wurden, als das Speicherlimit erreicht wurde. Manuelles Aufrufen des Bereinigungsalgorithmus zwischen Operationen ermöglicht unter Umständen die Löschung der Zyklen, bevor das Limit erreicht wird. Das folgende Beispiel ruft den Bereinigungsalgorithmus mithilfe eines Callbacks vor jedem Teile-Upload auf. Beachten Sie, dass das Aufrufen der Speicherbereinigung zulasten der Leistung geht und die optimale Nutzung von Ihrem Anwendungsfall und Ihrer Umgebung abhängt.

```
$uploader = new MultipartUploader($client, $source, [
   'bucket' => 'your-bucket',
   'key' => 'your-key',
   'before_upload' => function(\Aws\Command $command) {
      gc_collect_cycles();
   }
]);
```

## Wiederherstellung nach Fehlern
<a name="recovering-from-errors"></a>

Wenn während des mehrteiligen Uploads ein Fehler auftritt, wird eine `MultipartUploadException` aufgeworfen. Diese Ausnahme bietet Zugriff auf das `UploadState`-Objekt, das Informationen über den Fortschritt des mehrteiligen Uploads enthält. Der `UploadState` kann verwendet werden, um einen Upload fortzusetzen, der nicht abgeschlossen werden konnte.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

//Recover from errors
do {
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));

//Abort a multipart upload if failed
try {
    $result = $uploader->upload();
} catch (MultipartUploadException $e) {
    // State contains the "Bucket", "Key", and "UploadId"
    $params = $e->getState()->getId();
    $result = $s3Client->abortMultipartUpload($params);
}
```

Das Fortsetzen eines Uploads von einem `UploadState` aus versucht nur, Teile hochzuladen, die noch nicht hochgeladen sind. Das Statusobjekt verfolgt fehlende Teile, auch wenn sie nicht aufeinanderfolgend sind. Der Uploader liest oder durchsucht über die mitgelieferte Quelldatei nach den Bytebereichen, die zu den Teilen gehören, die noch hochgeladen werden müssen.

 `UploadState`-Objekte sind serialisierbar. Sie können also auch in einem anderen Prozess einen Upload fortzusetzen. Sie können das `UploadState`-Objekt auch dann abrufen, wenn Sie keine Ausnahme verarbeiten. Dazu rufen Sie `$uploader->getState()` auf.

**Wichtig**  
Streams, die einem `MultipartUploader` als Quelle übergeben werden, werden vor dem Hochladen nicht automatisch auf den Anfang zurückgesetzt. Wenn Sie einen Stream anstelle eines Dateipfades in einer Schleife wie im vorherigen Beispiel verwenden, setzen Sie die Variable `$source` innerhalb des `catch`-Blocks zurück.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Using stream instead of file path
$source = fopen('/path/to/large/file.zip', 'rb');
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

do {
    try {
        $result = $uploader->upload();
    } catch (MultipartUploadException $e) {
        rewind($source);
        $uploader = new MultipartUploader($s3Client, $source, [
            'state' => $e->getState(),
        ]);
    }
} while (!isset($result));
fclose($source);
```

### Abbrechen eines mehrteiligen Uploads
<a name="aborting-a-multipart-upload"></a>

Ein mehrteiliger Upload kann abgebrochen werden, indem die `UploadId` aus dem Objekt `UploadState` abgerufen und an `abortMultipartUpload` übergeben wird.

```
try {
    $result = $uploader->upload();
} catch (MultipartUploadException $e) {
    // State contains the "Bucket", "Key", and "UploadId"
    $params = $e->getState()->getId();
    $result = $s3Client->abortMultipartUpload($params);
}
```

## Asynchrone mehrteilige Uploads
<a name="asynchronous-multipart-uploads"></a>

Der Aufruf von `upload()` des `MultipartUploader` ist eine blockierende Anfrage. Wenn Sie in einem asynchronen Kontext arbeiten, können Sie ein [Versprechen](guide_promises.md) für den mehrteiligen Upload erhalten.

```
require 'vendor/autoload.php';

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$source = '/path/to/large/file.zip';
$uploader = new MultipartUploader($s3Client, $source, [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

$promise = $uploader->promise();
```

### Konfiguration
<a name="asynchronous-multipart-uploads-configuration"></a>

Der Konstruktor des `MultipartUploader`-Objekts akzeptiert die folgenden Argumente:

** `$client` **  
Das `Aws\ClientInterface`-Objekt für die Ausführung der Übertragungen. Dies sollte eine Instance von `Aws\S3\S3Client` sein.

** `$source` **  
Die hochzuladenden Quelldaten. Hierbei kann es sich um einen Pfad oder eine URL (z. B. `/path/to/file.jpg`), einen Ressourcen-Handle (z. B. `fopen('/path/to/file.jpg', 'r)`) oder eine Instance von einem [PSR-7-Stream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.StreamInterface.html) handeln.

** `$config` **  
Ein assoziatives Array mit Konfigurationsoptionen für den mehrteiligen Upload.  
Die folgenden Konfigurationsoptionen sind gültig:    
** `acl` **  
(`string`) Zugriffskontrollliste (ACL), die auf das das hochzuladende Objekt gesetzt wird. Standardmäßig werden alle Objekte als privat eingestuft.  
** `before_complete` **  
(`callable`) Callback, der vor der `CompleteMultipartUpload`-Operation aufgerufen wird. Der Callback sollte eine Funktionssignatur wie `function (Aws\Command $command) {...}` haben.  
** `before_initiate` **  
(`callable`) Callback, der vor der `CreateMultipartUpload`-Operation aufgerufen wird. Der Callback sollte eine Funktionssignatur wie `function (Aws\Command $command) {...}` haben.  
** `before_upload` **  
(`callable`) Callback, der vor allen `UploadPart`-Operation aufgerufen wird. Der Callback sollte eine Funktionssignatur wie `function (Aws\Command $command) {...}` haben.  
** `bucket` **  
(`string`, *erforderlich*) Name des Buckets, in den das Objekt hochgeladen wird.  
** `concurrency` **  
(`int`*Standard*: `int(5)`) Maximale Anzahl der gleichzeitigen `UploadPart`-Operationen, die während des mehrteiligen Upload zulässig sind.  
** `key` **  
(`string`, *erforderlich*) Schlüssel, der für das hochzuladende Objekt verwendet werden soll.  
** `part_size` **  
(`int`*Standard*: `int(5242880)`) Teilegröße in Byte, die bei einem mehrteiligen Upload zu verwenden ist. Diese muss zwischen einschließlich 5 MB und 5 GB liegen.  
** `state` **  
(`Aws\Multipart\UploadState`) Ein Objekt, das den Status des mehrteiligen Upload darstellt, und das verwendet wird, um einen vorhergehenden Upload fortzusetzen. Wenn diese Option angegeben ist, werden die Optionen `bucket`, `key` und `part_size` ignoriert.  
**`add_content_md5`**  
(`boolean`) Auf true setzen, um die MD5 Prüfsumme für den Upload automatisch zu berechnen.  
**`params`**  
Ein assoziatives Array, das Konfigurationsoptionen für jeden Unterbefehl bereitstellt. Beispiel:  

```
new MultipartUploader($client, $source, ['params' => ['CacheControl' => <some_value>]])
```

## Mehrteilige Kopien
<a name="multipart-copies"></a>

Das beinhaltet AWS SDK für PHP auch ein `MultipartCopy` Objekt, das ähnlich wie das verwendet wird`MultipartUploader`, aber für das Kopieren von Objekten mit einer Größe zwischen 5 GB und 5 TB innerhalb von Amazon S3 konzipiert ist.

```
require 'vendor/autoload.php';

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartCopy;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
// Create an S3Client
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

//Copy objects within S3
$copier = new MultipartCopy($s3Client, '/bucket/key?versionId=foo', [
    'bucket' => 'your-bucket',
    'key' => 'my-file.zip',
]);

try {
    $result = $copier->copy();
    echo "Copy complete: {$result['ObjectURL']}\n";
} catch (MultipartUploadException $e) {
    echo $e->getMessage() . "\n";
}
```

# Vorsignierte Amazon S3 S3-URL mit AWS SDK für PHP Version 3
<a name="s3-presigned-url"></a>

Einige Anfragetypen können Sie authentifizieren, indem Sie die angeforderten Informationen als Abfragezeichenfolgenparameter übergeben, statt den Authentifizierungs-HTTP-Header zu verwenden. Dies ist nützlich, um den direkten Browserzugriff von Drittanbietern auf Ihre privaten Amazon S3 S3-Daten zu ermöglichen, ohne die Anfrage weiterzuleiten. Die Idee ist, eine „vorsignierte“ Anfrage zu erstellen und sie als URL zu codieren, die ein anderer Benutzer verwenden kann. Darüber hinaus können Sie eine vorab signierte Anfrage durch Angabe einer Ablaufzeit begrenzen.

## Erstellen Sie eine vorsignierte URL für eine HTTP-GET-Anfrage
<a name="s3-presigned-url-get"></a>

Das folgende Codebeispiel zeigt, wie Sie mithilfe des SDK for PHP eine vorsignierte URL für eine HTTP-GET-Anfrage erstellen.

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3Client = new S3Client([
    'region' => 'us-west-2',
]);

// Supply a CommandInterface object and an expires parameter to the `createPresignedRequest` method.
$request = $s3Client->createPresignedRequest(
    $s3Client->getCommand('GetObject', [
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'demo-key',
    ]),
    '+1 hour'
);

// From the resulting RequestInterface object, you can get the URL.
$presignedUrl = (string) $request->getUri();

echo $presignedUrl;
```

Die [API-Referenz für die `createPresignedRequest`](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html#method_createPresignedRequest) Methode enthält weitere Details.

Eine andere Person kann den `$presignedUrl` Wert verwenden, um das Objekt innerhalb der nächsten Stunde abzurufen. Wenn die HTTP-GET-Anfrage gestellt wird, z. B. über einen Browser, hat der S3-Dienst den Eindruck, dass der Anruf von dem Benutzer kommt, der die vorsignierte URL erstellt hat.

## Erstellen Sie eine vorsignierte URL für eine HTTP-PUT-Anfrage
<a name="s3-presigned-url-put"></a>

Das folgende Codebeispiel zeigt, wie Sie mithilfe des SDK for PHP eine vorsignierte URL für eine HTTP-PUT-Anfrage erstellen.

```
<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;

$s3Client = new S3Client([
    'region' => 'us-west-2',
]);

$request = $s3Client->createPresignedRequest(
    $s3Client->getCommand('PutObject', [
        'Bucket' => 'amzn-s3-demo-bucket',
        'Key' => 'demo-key',
    ]),
    '+1 hour'
);

// From the resulting RequestInterface object, you can get the URL.
$presignedUrl = (string) $request->getUri();
```

Jemand anderes kann jetzt die vorsignierte URL in einer HTTP-PUT-Anfrage verwenden, um eine Datei hochzuladen:

```
use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Psr7\Response;

// ...

function uploadWithPresignedUrl($presignedUrl, $filePath, $s3Client): ?Response
{
    // Get the HTTP handler from the S3 client.
    $handler = $s3Client->getHandlerList()->resolve();
    
    // Create a stream from the file.
    $fileStream = new Stream(fopen($filePath, 'r'));
    
    // Create the request.
    $request = new Request(
        'PUT',
        $presignedUrl,
        [
            'Content-Type' => mime_content_type($filePath),
            'Content-Length' => filesize($filePath)
        ],
        $fileStream
    );
    
    // Send the request using the handler.
    try {
        $promise = $handler($request, []);
        $response = $promise->wait();
        return $response;
    } catch (Exception $e) {
        echo "Error uploading file: " . $e->getMessage() . "\n";
        return null;
    }
}
```

# Amazon S3 POSTs mit AWS SDK für PHP Version 3 vorsigniert
<a name="s3-presigned-post"></a>

Ähnlich wie vorsigniert URLs können Sie mit POSTs vorsignierten Benutzern Schreibzugriff gewähren, ohne ihnen Anmeldeinformationen zu geben. AWS [Vorsignierte POST-Formulare können mit Hilfe einer Instanz von AWSS3 V4 erstellt werden. PostObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html)

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ [Rufen Sie mit V4 Daten für ein POST-Upload-Formular für S3-Objekte ab. PostObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

**Anmerkung**  
`PostObjectV4`funktioniert nicht mit Anmeldeinformationen, die von stammen AWS IAM Identity Center.

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen Sie PostObject V4
<a name="create-postobjectv4"></a>

Um eine Instance von `PostObjectV4` zu erstellen, müssen Sie Folgendes bereitstellen:
+ Instance von`Aws\S3\S3Client` 
+ bucket
+ assoziatives Array mit Formular-Eingabefeldern
+ eine Reihe von Versicherungsbedingungen (siehe [Richtlinienkonstruktion](https://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTForms.html) im Amazon Simple Storage Service-Benutzerhandbuch)
+ Zeichenfolge für die Ablaufzeit für die Richtlinie (optional, standardmäßig eine Stunde).

 **Importe** 

```
require '../vendor/autoload.php';

use Aws\S3\PostObjectV4;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
require '../vendor/autoload.php';

use Aws\S3\PostObjectV4;
use Aws\S3\S3Client;

$client = new S3Client([
    'profile' => 'default',
    'region' => 'us-east-1',
]);
$bucket = 'amzn-s3-demo-bucket10';
$starts_with = 'user/eric/';
$client->listBuckets();

// Set defaults for form input fields.
$formInputs = ['acl' => 'public-read'];

// Construct an array of conditions for policy.
$options = [
    ['acl' => 'public-read'],
    ['bucket' => $bucket],
    ['starts-with', '$key', $starts_with],
];

// Set an expiration time (optional).
$expires = '+2 hours';

$postObject = new PostObjectV4(
    $client,
    $bucket,
    $formInputs,
    $options,
    $expires
);

// Get attributes for the HTML form, for example, action, method, enctype.
$formAttributes = $postObject->getFormAttributes();

// Get attributes for the HTML form values.
$formInputs = $postObject->getFormInputs();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>PHP</title>
</head>
<body>
<form action="<?php echo $formAttributes['action'] ?>" method="<?php echo $formAttributes['method'] ?>"
      enctype="<?php echo $formAttributes['enctype'] ?>">
    <label id="key">
        <input hidden type="text" name="key" value="<?php echo $starts_with ?><?php echo $formInputs['key'] ?>"/>
    </label>
    <h3>$formInputs:</h3>
    acl: <label id="acl">
        <input readonly type="text" name="acl" value="<?php echo $formInputs['acl'] ?>"/>
    </label><br/>
    X-Amz-Credential: <label id="credential">
        <input readonly type="text" name="X-Amz-Credential" value="<?php echo $formInputs['X-Amz-Credential'] ?>"/>
    </label><br/>
    X-Amz-Algorithm: <label id="algorithm">
        <input readonly type="text" name="X-Amz-Algorithm" value="<?php echo $formInputs['X-Amz-Algorithm'] ?>"/>
    </label><br/>
    X-Amz-Date: <label id="date">
        <input readonly type="text" name="X-Amz-Date" value="<?php echo $formInputs['X-Amz-Date'] ?>"/>
    </label><br/><br/><br/>
    Policy: <label id="policy">
        <input readonly type="text" name="Policy" value="<?php echo $formInputs['Policy'] ?>"/>
    </label><br/>
    X-Amz-Signature: <label id="signature">
        <input readonly type="text" name="X-Amz-Signature" value="<?php echo $formInputs['X-Amz-Signature'] ?>"/>
    </label><br/><br/>
    <h3>Choose file:</h3>
    <input type="file" name="file"/> <br/><br/>
    <h3>Upload file:</h3>
    <input type="submit" name="submit" value="Upload to Amazon S3"/>
</form>
</body>
</html>
```

# Verwenden eines Amazon S3 S3-Buckets als statischen Webhost mit AWS SDK für PHP Version 3
<a name="s3-examples-static-web-host"></a>

Sie können in Amazon S3 eine statische Website hosten. Weitere Informationen finden Sie unter [Hosten einer statischen Website auf Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).

Das folgende Beispiel zeigt eine Anleitung für:
+ Rufen Sie die Website-Konfiguration für einen Bucket mithilfe von ab [GetBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketwebsite).
+ Stellen Sie die Website-Konfiguration für einen Bucket mithilfe von ein [PutBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketwebsite).
+ Entfernen Sie die Website-Konfiguration aus einem Bucket mit [DeleteBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketwebsite).

Der gesamte Beispielcode für die AWS SDK für PHP Version 3 ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="credentials-s3-examples-static-web-host"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen. Siehe [Anmeldeinformationen für AWS SDK für PHP Version 3.](guide_credentials.md)

## Rufen Sie die Website-Konfiguration für einen Bucket ab, legen Sie sie fest und löschen Sie sie
<a name="get-set-and-delete-the-website-configuration-for-a-bucket"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

// Retrieving the Bucket Website Configuration
$bucket = 'amzn-s3-demo-bucket';
try {
    $resp = $s3Client->getBucketWebsite([
        'Bucket' => $bucket
    ]);
    echo "Succeed in retrieving website configuration for bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}

// Setting a Bucket Website Configuration
$params = [
    'Bucket' => $bucket,
    'WebsiteConfiguration' => [
        'ErrorDocument' => [
            'Key' => 'foo',
        ],
        'IndexDocument' => [
            'Suffix' => 'bar',
        ],
    ]
];

try {
    $resp = $s3Client->putBucketWebsite($params);
    echo "Succeed in setting bucket website configuration.\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Deleting a Bucket Website Configuration
try {
    $resp = $s3Client->deleteBucketWebsite([
        'Bucket' => $bucket
    ]);
    echo "Succeed in deleting policy for bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Arbeiten mit Amazon S3 S3-Bucket-Richtlinien mit der AWS SDK für PHP Version 3
<a name="s3-examples-bucket-policies"></a>

Sie können eine Bucket-Richtlinie verwenden, um Berechtigungen für Ihre Amazon S3 S3-Ressourcen zu erteilen. Weitere Informationen dazu erhalten Sie unter [Verwendung von Bucket-Richtlinien und Benutzerrichtlinien](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).

Das folgende Beispiel zeigt eine Anleitung für:
+ Geben Sie die Richtlinie für einen bestimmten Bucket zurück mit [GetBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketpolicy).
+ Ersetzen Sie eine Richtlinie für einen Bucket mit [PutBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketpolicy).
+ Löschen Sie eine Richtlinie aus einem Bucket mithilfe von [DeleteBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketpolicy).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Rufen Sie eine Richtlinie für einen Bucket ab, löschen Sie sie und ersetzen Sie sie
<a name="get-delete-and-replace-a-policy-on-a-bucket"></a>

 **Importe** 

```
require "vendor/autoload.php";

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Beispiel-Code** 

```
$s3Client = new S3Client([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2006-03-01'
]);

$bucket = 'amzn-s3-demo-bucket';

// Get the policy of a specific bucket
try {
    $resp = $s3Client->getBucketPolicy([
        'Bucket' => $bucket
    ]);
    echo "Succeed in receiving bucket policy:\n";
    echo $resp->get('Policy');
    echo "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Deletes the policy from the bucket
try {
    $resp = $s3Client->deleteBucketPolicy([
        'Bucket' => $bucket
    ]);
    echo "Succeed in deleting policy of bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}

// Replaces a policy on the bucket
try {
    $resp = $s3Client->putBucketPolicy([
        'Bucket' => $bucket,
        'Policy' => 'foo policy',
    ]);
    echo "Succeed in put a policy on bucket: " . $bucket . "\n";
} catch (AwsException $e) {
    // Display error message
    echo $e->getMessage();
    echo "\n";
}
```

# Verwenden des S3-Zugriffspunkts ARNs der AWS SDK für PHP Version 3
<a name="s3-examples-access-point-arn"></a>

S3 hat erstmalig Zugriffspunkte verwendet, eine neue Möglichkeit der Interaktion mit S3-Buckets. Auf Zugriffspunkte können eindeutige Richtlinien und Konfigurationen angewendet werden, anstatt dass sie direkt auf den Bucket angewendet werden. Das AWS SDK für PHP ermöglicht es Ihnen, den Access Point ARNs im Bucket-Feld für API-Operationen zu verwenden, anstatt den Bucket-Namen explizit anzugeben. Weitere Informationen darüber, wie S3-Zugangspunkte und ARNs deren Funktionsweise funktionieren, finden Sie [hier](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html). In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Wird [GetObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)zusammen mit einem Access Point-ARN verwendet, um ein Objekt aus einem Bucket abzurufen.
+ Wird [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)zusammen mit einem Access Point-ARN verwendet, um ein Objekt zu einem Bucket hinzuzufügen.
+ Konfigurieren Sie den S3-Client so, dass er die ARN-Region anstelle der Client-Region verwendet.

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\S3\S3Client;
```

## Objekt abrufen
<a name="get-object"></a>

Erstellen Sie zunächst einen AWS.S3-Clientdienst, der die AWS Region und die Version angibt. Rufen Sie dann die `getObject`-Methode mit Ihrem Schlüssel und einem S3-Zugriffspunkt-ARN im Feld `Bucket` auf. Dadurch wird das Objekt aus dem diesem Zugriffspunkt zugeordneten Bucket abgerufen.

 **Beispiel-Code** 

```
$s3 = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
]);
$result = $s3->getObject([
    'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name',
    'Key' => 'MyKey'
]);
```

## Legen Sie ein Objekt in einen Bucket
<a name="put-an-object-in-a-bucket"></a>

Erstellen Sie zunächst einen AWS.S3-Client-Dienst, der die AWS Region und die Version angibt. Rufen Sie dann die `putObject`-Methode mit dem gewünschten Schlüssel, dem Hauptteil oder der Quelldatei und einem S3-Zugriffspunkt-ARN im Feld `Bucket` auf. Dadurch wird das Objekt im diesem Zugriffspunkt zugeordneten Bucket abgelegt.

 **Beispiel-Code** 

```
$s3 = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
]);
$result = $s3->putObject([
    'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:endpoint-name',
    'Key' => 'MyKey',
    'Body' => 'MyBody'
]);
```

## Konfigurieren Sie den S3-Client so, dass er die ARN-Region anstelle der Client-Region verwendet.
<a name="configure-the-s3-client-to-use-the-arn-region-instead-of-the-client-region"></a>

Wenn Sie einen S3-Zugriffspunkt-ARN in einer S3-Client-Operation verwenden, stellt der Client standardmäßig sicher, dass die ARN-Region mit der Client-Region übereinstimmt. Ist dies nicht der Fall, löst er eine Ausnahme aus. Dieses Verhalten kann geändert werden, um die ARN-Region gegenüber der Client-Region zu bevorzugen, indem Sie für die Konfigurationsoption `use_arn_region` `true` festlegen. Standardmäßig ist für die Option `false` festgelegt.

 **Beispiel-Code** 

```
$s3 = new S3Client([
    'version'        => 'latest',
    'region'         => 'us-west-2',
    'use_arn_region' => true
]);
```

Der Client überprüft auch eine Umgebungsvariable und eine Konfigurationsdateioption in der folgenden Reihenfolge der Priorität:

1. Die Client-Option `use_arn_region`, wie im obigen Beispiel

1. Die Umgebungsvariable `AWS_S3_USE_ARN_REGION` 

```
export AWS_S3_USE_ARN_REGION=true
```

1. Die Konfigurationsvariable `s3_use_arn_region` in der AWS gemeinsam genutzten Konfigurationsdatei (standardmäßig in`~/.aws/config`).

```
[default]
s3_use_arn_region = true
```

# Verwenden Sie Amazon S3 Multiregion Access Points mit der AWS SDK für PHP Version 3
<a name="s3-multi-region-access-points"></a>

[Amazon Simple Storage Service (S3) Multi-Region-Access Points](https://docs.aws.amazon.com//AmazonS3/latest/userguide/MultiRegionAccessPoints.html) bieten einen globalen Endpunkt für die Weiterleitung von Amazon S3 S3-Anforderungsdatenverkehr zwischen AWS-Regionen diesen.

Sie können Multi-Region-Access Points [mit dem SDK for PHP](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-s3control-2018-08-20.html#createmultiregionaccesspoint), einem anderen AWS SDK, der [S3-Konsole oder der AWS CLI](https://docs.aws.amazon.com//AmazonS3/latest/userguide/multi-region-access-point-create-examples.html) erstellen.

**Wichtig**  
Um Multi-Region Access Points mit dem SDK for PHP verwenden zu können, muss in Ihrer PHP-Umgebung die [AWS Common Runtime (AWS CRT) -Erweiterung installiert](guide_crt.md) sein.

Wenn Sie einen Access Point mit mehreren Regionen erstellen, generiert Amazon S3 einen Amazon-Ressourcennamen (ARN), der das folgende Format hat: 

`arn:aws:s3::account-id:accesspoint/MultiRegionAccessPoint_alias`

Sie können den generierten ARN anstelle eines Bucket-Namens für `[getObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)` und `[putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)` Methoden verwenden.

```
<?php
require './vendor/autoload.php';

use Aws\S3\S3Client;

// Assign the Multi-Region Access Point to a variable and use it place of a bucket name.
$mrap = 'arn:aws:s3::123456789012:accesspoint/mfzwi23gnjvgw.mrap';
$key = 'my-key';

$s3Client = new S3Client([
    'region' => 'us-east-1'
]);

$s3Client->putObject([
    'Bucket' => $mrap,
    'Key' => $key,
    'Body' => 'Hello World!'
]);

$result = $s3Client->getObject([
    'Bucket' => $mrap,
    'Key' => $key
]);

echo $result['Body'] . "\n";

// Clean up.
$result = $s3Client->deleteObject([
    'Bucket' => $mrap,
    'Key' => $key
]);

$s3Client->waitUntil('ObjectNotExists', ['Bucket' => $mrap, 'Key' => $key]);

echo "Object deleted\n";
```

# Verwaltung von Geheimnissen mit der Secrets Manager API und der AWS SDK für PHP Version 3
<a name="secretsmanager-examples-manage-secret"></a>

AWS Secrets Manager speichert und verwaltet gemeinsam genutzte Geheimnisse wie Passwörter, API-Schlüssel und Datenbankanmeldedaten. Mit dem Secrets Manager-Dienst können Entwickler hartcodierte Anmeldeinformationen im bereitgestellten Code durch einen eingebetteten Aufruf von Secrets Manager ersetzen.

Secrets Manager unterstützt nativ die automatische geplante Rotation von Anmeldeinformationen für Amazon Relational Database Service (Amazon RDS) -Datenbanken und erhöht so die Anwendungssicherheit. Secrets Manager kann auch Secrets für andere Datenbanken und Dienste von Drittanbietern nahtlos rotieren, AWS Lambda um dienstspezifische Details zu implementieren.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie ein Geheimnis mit [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret).
+ Rufen Sie ein Geheimnis ab mit [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue).
+ Listet alle von Secrets Manager gespeicherten Geheimnisse mit auf [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets).
+ Rufen Sie Details zu einem bestimmten Geheimnis ab mit [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret).
+ Aktualisieren Sie ein bestimmtes Geheimnis mit [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue).
+ Richten Sie eine geheime Rotation ein mit [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret).
+ Markieren Sie ein Geheimnis zum Löschen mit [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen Sie ein Geheimnis in Secrets Manager
<a name="create-a-secret-in-asm"></a>

Verwenden Sie die [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret)Operation, um ein Geheimnis in Secrets Manager zu erstellen.

In diesem Beispiel werden ein Benutzername und ein Passwort als JSON-Zeichenfolge gespeichert.

 **Importe** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
$description = '<<Description>>';
try {
    $result = $client->createSecret([
        'Description' => $description,
        'Name' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie ein Geheimnis aus Secrets Manager ab
<a name="retrieve-a-secret-from-asm"></a>

Verwenden Sie den [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue)Vorgang, um den Wert eines in Secrets Manager gespeicherten Geheimnisses abzurufen.

Im folgenden Beispiel `secret` handelt es sich um eine Zeichenfolge, die den gespeicherten Wert enthält. Wenn der Wert für `username` ist `<<USERNAME>>` und der Wert für `password` ist`<<PASSWORD>>`, lautet die Ausgabe von`secret`:

```
{"username":"<<USERNAME>>","password":"<<PASSWORD>>"}
```

Wird verwendet`json_decode($secret, true)`, um auf die Array-Werte zuzugreifen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-east-1',
]);

$secretName = 'MySecretName';

try {
    $result = $client->getSecretValue([
        'SecretId' => $secretName,
    ]);
} catch (AwsException $e) {
    $error = $e->getAwsErrorCode();
    if ($error == 'DecryptionFailureException') {
        // Secrets Manager can't decrypt the protected secret text using the provided AWS KMS key.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InternalServiceErrorException') {
        // An error occurred on the server side.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidParameterException') {
        // You provided an invalid value for a parameter.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'InvalidRequestException') {
        // You provided a parameter value that is not valid for the current state of the resource.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
    if ($error == 'ResourceNotFoundException') {
        // We can't find the resource that you asked for.
        // Handle the exception here, and/or rethrow as needed.
        throw $e;
    }
}
// Decrypts secret using the associated KMS CMK.
// Depending on whether the secret is a string or binary, one of these fields will be populated.
if (isset($result['SecretString'])) {
    $secret = $result['SecretString'];
} else {
    $secret = base64_decode($result['SecretBinary']);
}
print $secret;
$secretArray = json_decode($secret, true);
$username = $secretArray['username'];
$password = $secretArray['password'];

// Your code goes here;
```

## Im Secrets Manager gespeicherte Geheimnisse auflisten
<a name="list-secrets-stored-in-asm"></a>

Rufen Sie mithilfe der [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets)Operation eine Liste aller Geheimnisse ab, die von Secrets Manager gespeichert wurden.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

try {
    $result = $client->listSecrets([
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie Details zu einem Geheimnis ab
<a name="retrieve-details-about-a-secret"></a>

Gespeicherte Geheimnisse enthalten Metadaten zu Rotationsregeln, den Zeitpunkt des letzten Zugriffs bzw. der letzten Änderung, vom Benutzer erstellte Tags und den Amazon-Ressourcennamen (ARN). Verwenden Sie den [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret)Vorgang, um die Details eines bestimmten Geheimnisses abzurufen, das in Secrets Manager gespeichert ist.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->describeSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Den Secret-Wert aktualisieren
<a name="update-the-secret-value"></a>

Verwenden Sie den [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue)Vorgang, um einen neuen verschlüsselten geheimen Wert in Secrets Manager zu speichern.

Auf diese Art wird eine neue Version des Geheimnisses erstellt. Wenn bereits eine Version des Geheimnisses vorhanden ist, fügen Sie den Parameter `VersionStages` mit dem Wert in `AWSCURRENT` hinzu, um sicherzustellen, dass der neue Wert verwendet wird, wenn der Wert abgerufen wird.

 **Importe** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);
$secretName = 'MySecretName';
$secret = json_encode([
    "username" => getenv("SMDEMO_USERNAME"),
    "password" => getenv("SMDEMO_PASSWORD"),
]);
try {
    $result = $client->putSecretValue([
        'SecretId' => $secretName,
        'SecretString' => $secret,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Den Wert auf ein vorhandenes Geheimnis im Secrets Manager drehen
<a name="rotate-the-value-to-an-existing-secret-in-asm"></a>

Verwenden Sie eine Lambda-Rotationsfunktion und die [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)Operation, um den Wert eines vorhandenen Geheimnisses, das in Secrets Manager gespeichert ist, zu rotieren.

Bevor Sie beginnen, erstellen Sie eine Lambda-Funktion, um Ihr Geheimnis zu rotieren. Der [AWS Codebeispielkatalog](https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-lambda_functions-secretsmanager.html) enthält derzeit mehrere Lambda-Codebeispiele für rotierende Amazon RDS-Datenbankanmeldedaten.

**Anmerkung**  
Weitere Informationen zur Rotation von Geheimnissen finden Sie unter [Rotating Your AWS Secrets Manager Secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) im AWS Secrets Manager Benutzerhandbuch.

Nachdem Sie Ihre Lambda-Funktion eingerichtet haben, konfigurieren Sie eine neue geheime Rotation.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';
$lambda_ARN = 'arn:aws:lambda:us-west-2:123456789012:function:MyTestDatabaseRotationLambda';
$rules = ['AutomaticallyAfterDays' => 30];

try {
    $result = $client->rotateSecret([
        'RotationLambdaARN' => $lambda_ARN,
        'RotationRules' => $rules,
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

Wenn eine Rotation konfiguriert ist, können Sie mithilfe der [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)Operation eine Rotation implementieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->rotateSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie ein Geheimnis aus Secrets Manager
<a name="delete-a-secret-from-asm"></a>

Verwenden Sie den [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret)Vorgang, um ein bestimmtes Geheimnis aus Secrets Manager zu entfernen. Um zu verhindern, dass ein Geheimnis versehentlich gelöscht wird, wird dem Geheimnis automatisch ein DeletionDate Stempel hinzugefügt, der ein Wiederherstellungszeitfenster festlegt, in dem Sie den Löschvorgang rückgängig machen können. Wird kein Wiederherstellungszeitraum angegeben, so beträgt er standardmäßig 30 Tage.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$client = new SecretsManagerClient([
    'profile' => 'default',
    'version' => '2017-10-17',
    'region' => 'us-west-2'
]);

$secretName = 'MySecretName';

try {
    $result = $client->deleteSecret([
        'SecretId' => $secretName,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Ähnliche Informationen
<a name="related-information"></a>

In den AWS SDK für PHP Beispielen werden die folgenden REST-Operationen aus der AWS Secrets Manager API-Referenz verwendet:
+  [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html) 
+  [GetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) 
+  [ListSecrets](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_ListSecrets.html) 
+  [DescribeSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html) 
+  [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html) 
+  [RotateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_RotateSecret.html) 
+  [DeleteSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html) 

Weitere Informationen zur Verwendung AWS Secrets Manager finden Sie im [AWS Secrets Manager Benutzerhandbuch](https://docs.aws.amazon.com/secretsmanager/latest/userguide/).

# Amazon SES SES-Beispiele mit AWS SDK für PHP Version 3
<a name="ses-examples"></a>

Amazon Simple Email Service (Amazon SES) ist eine E-Mail-Plattform, die Ihnen eine einfache und kostensparende Möglichkeit bietet, E-Mails mit Ihren eigenen E-Mail-Adressen und Domains zu senden und zu empfangen. Weitere Informationen zu Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

AWS bietet zwei Versionen des Amazon SES SES-Service und entsprechend bietet das SDK for PHP zwei Versionen des Clients: [SesClient](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Ses.SesClient.html)und [SESV2Client](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.SesV2.SesV2Client.html). Die Funktionen der Clients überschneiden sich in vielen Fällen, obwohl die Art und Weise, wie die Methoden aufgerufen werden, oder die Ergebnisse unterschiedlich sein können. Die beiden bieten APIs auch exklusive Funktionen, sodass Sie beide Clients verwenden können, um auf alle Funktionen zuzugreifen.

Die Beispiele in diesem Abschnitt verwenden alle das Original,`SesClient`. 

Der gesamte Beispielcode für die AWS SDK für PHP Version 3 ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Verifizieren von E-Mail-Adressen](ses-verify.md)
+ [Mit E-Mail-Vorlagen arbeiten](ses-template.md)
+ [Verwaltung von E-Mail-Filtern](ses-filters.md)
+ [E-Mail-Regeln verwenden](ses-rules.md)
+ [Überwachen Sie Ihre Sendeaktivität](ses-send-email.md)
+ [Autorisieren von Absendern](ses-sender-policy.md)

# Überprüfung von E-Mail-Identitäten mithilfe der Amazon SES SES-API und der Version 3 AWS SDK für PHP
<a name="ses-verify"></a>

Wenn Sie Ihr Amazon Simple Email Service (Amazon SES) -Konto zum ersten Mal verwenden, müssen alle Absender und Empfänger in derselben AWS Region verifiziert sein, an die Sie E-Mails senden. Weitere Informationen zum Senden von E-Mails finden Sie unter [Senden von E-Mails mit Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Überprüfen Sie eine E-Mail-Adresse mit [VerifyEmailIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifyemailidentity).
+ Überprüfen Sie eine E-Mail-Domain mit [VerifyDomainIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifydomainidentity).
+ Listet alle E-Mail-Adressen auf mit [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Listet alle E-Mail-Domänen auf, die [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Entfernen Sie eine E-Mail-Adresse mit [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).
+ Entfernen Sie eine E-Mail-Domain mit [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Verifizieren Sie eine E-Mail-Adresse
<a name="verifying-email-addresses"></a>

Amazon SES kann E-Mails nur von verifizierten E-Mail-Adressen oder Domains senden. Durch die Bestätigung einer E-Mail-Adresse weisen Sie nach, dass Sie der Eigentümer dieser Adresse sind und Amazon SES erlauben möchten, E-Mails von dieser Adresse aus zu senden.

Wenn Sie das folgende Codebeispiel ausführen, sendet Amazon SES eine E-Mail an die von Ihnen angegebene Adresse. Wenn Sie (oder der Empfänger der E-Mail) auf den Link in der E-Mail klicken, wird die Adresse verifiziert.

Verwenden Sie den [VerifyEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailIdentity.html)Vorgang, um Ihrem Amazon SES SES-Konto eine E-Mail-Adresse hinzuzufügen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$email = 'email_address';

try {
    $result = $SesClient->verifyEmailIdentity([
        'EmailAddress' => $email,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Verifizieren Sie eine E-Mail-Domain
<a name="verify-an-email-domain"></a>

Amazon SES kann E-Mails nur von verifizierten E-Mail-Adressen oder Domains senden. Durch das Verifizieren einer Domäne weisen Sie nach, dass Sie der Eigentümer dieser Domäne sind. Wenn Sie eine Domain verifizieren, erlauben Sie Amazon SES, E-Mails von einer beliebigen Adresse auf dieser Domain zu senden.

Wenn Sie das folgende Codebeispiel ausführen, stellt Ihnen Amazon SES ein Verifizierungstoken zur Verfügung. Sie müssen das Token der DNS-Konfiguration Ihrer Domäne hinzufügen. Weitere Informationen finden Sie unter [Verifying a Domain with Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domain-procedure.html) im Amazon Simple Email Service Developer Guide.

Verwenden Sie den [VerifyDomainIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html)Vorgang, um Ihrem Amazon SES SES-Konto eine sendende Domain hinzuzufügen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$domain = 'domain.name';

try {
    $result = $SesClient->verifyDomainIdentity([
        'Domain' => $domain,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## E-Mail-Adressen auflisten
<a name="list-email-addresses"></a>

Verwenden Sie den [ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)Vorgang, um unabhängig vom Bestätigungsstatus eine Liste der in der aktuellen AWS Region eingereichten E-Mail-Adressen abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listIdentities([
        'IdentityType' => 'EmailAddress',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## E-Mail-Domänen auflisten
<a name="list-email-domains"></a>

Verwenden Sie den [ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)Vorgang, um unabhängig vom Bestätigungsstatus eine Liste der in der aktuellen AWS Region eingereichten E-Mail-Domänen abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listIdentities([
        'IdentityType' => 'Domain',
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie eine E-Mail-Adresse
<a name="delete-an-email-address"></a>

Verwenden Sie den [DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)Vorgang, um eine verifizierte E-Mail-Adresse aus der Identitätsliste zu löschen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$email = 'email_address';

try {
    $result = $SesClient->deleteIdentity([
        'Identity' => $email,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie eine E-Mail-Domain
<a name="delete-an-email-domain"></a>

Verwenden Sie den [DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)Vorgang, um eine verifizierte E-Mail-Domain aus der Liste der verifizierten Identitäten zu löschen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$domain = 'domain.name';

try {
    $result = $SesClient->deleteIdentity([
        'Identity' => $domain,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Erstellen von benutzerdefinierten E-Mail-Vorlagen mithilfe der Amazon SES SES-API und der AWS SDK für PHP Version 3
<a name="ses-template"></a>

Mit Amazon Simple Email Service (Amazon SES) können Sie mithilfe von Vorlagen E-Mails versenden, die für jeden Empfänger personalisiert sind. Vorlagen enthalten eine Betreffzeile und die Text- und HTML-Teile des E-Mail-Textes. Die Betreff- und Textabschnitte können auch eindeutige Werte enthalten, die für jeden Empfänger personalisiert sind.

Weitere Informationen finden Sie unter [Senden personalisierter E-Mails mit Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html) im Amazon Simple Email Service Developer Guide.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie eine E-Mail-Vorlage mit [CreateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createtemplate).
+ Listet alle E-Mail-Vorlagen auf, die verwenden [ListTemplates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listtemplates).
+ Rufen Sie eine E-Mail-Vorlage ab mit [GetTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#gettemplate).
+ Aktualisieren Sie eine E-Mail-Vorlage mit [UpdateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updateTemplate).
+ Entfernen Sie eine E-Mail-Vorlage mit [DeleteTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletetemplate).
+ Senden Sie eine E-Mail-Vorlage mit [SendTemplatedEmail](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#sendtemplatedemail).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Erstellen einer E-Mail-Vorlage
<a name="create-an-email-template"></a>

Verwenden Sie den [CreateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateTemplate.html)Vorgang, um eine Vorlage für den Versand personalisierter E-Mail-Nachrichten zu erstellen. Die Vorlage kann von jedem Konto verwendet werden, das zum Senden von Nachrichten in der AWS Region berechtigt ist, zu der die Vorlage hinzugefügt wurde.

**Anmerkung**  
Amazon SES validiert Ihren HTML-Code nicht. Stellen Sie daher sicher, dass er gültig *HtmlPart*ist, bevor Sie eine E-Mail senden.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';
$html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' .
    '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' .
    'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' .
    'AWS SDK for PHP</a>.</p>';
$subject = 'Amazon SES test (AWS SDK for PHP)';
$plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.';

try {
    $result = $SesClient->createTemplate([
        'Template' => [
            'HtmlPart' => $html_body,
            'SubjectPart' => $subject,
            'TemplateName' => $name,
            'TextPart' => $plaintext_body,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Holen Sie sich eine E-Mail-Vorlage
<a name="get-an-email-template"></a>

Verwenden Sie den [GetTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetTemplate.html)Vorgang, um den Inhalt einer vorhandenen E-Mail-Vorlage einschließlich Betreffzeile, HTML-Text und Klartext anzuzeigen. Nur TemplateName ist erforderlich.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';

try {
    $result = $SesClient->getTemplate([
        'TemplateName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Alle E-Mail-Vorlagen auflisten
<a name="list-all-email-templates"></a>

Verwenden Sie den [ListTemplates](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListTemplates.html)Vorgang, um eine Liste aller E-Mail-Vorlagen abzurufen, die mit Ihrer AWS-Konto in der aktuellen AWS Region verknüpft sind.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listTemplates([
        'MaxItems' => 10,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktualisieren einer E-Mail-Vorlage
<a name="update-an-email-template"></a>

Verwenden Sie den [UpdateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdadteTemplate.html)Vorgang, um den Inhalt einer bestimmten E-Mail-Vorlage zu ändern, einschließlich der Betreffzeile, des HTML-Textkörpers und des Klartextes.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';
$html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>' .
    '<p>This email was sent with <a href="https://aws.amazon.com/ses/">' .
    'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">' .
    'AWS SDK for PHP</a>.</p>';
$subject = 'Amazon SES test (AWS SDK for PHP)';
$plaintext_body = 'This email was send with Amazon SES using the AWS SDK for PHP.';

try {
    $result = $SesClient->updateTemplate([
        'Template' => [
            'HtmlPart' => $html_body,
            'SubjectPart' => $subject,
            'TemplateName' => $name,
            'TextPart' => $plaintext_body,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen einer E-Mail-Vorlage
<a name="delete-an-email-template"></a>

Verwenden Sie den [DeleteTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteTemplate.html)Vorgang, um eine bestimmte E-Mail-Vorlage zu entfernen. Alles was Sie brauchen ist die TemplateName.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Template_Name';

try {
    $result = $SesClient->deleteTemplate([
        'TemplateName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Senden Sie eine E-Mail mit einer Vorlage
<a name="send-an-email-with-a-template"></a>

Verwenden Sie den [SendTemplatedEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendTemplatedEmail.html)Vorgang, um eine Vorlage zum Senden einer E-Mail an Empfänger zu verwenden.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$template_name = 'Template_Name';
$sender_email = 'email_address';
$recipient_emails = ['email_address'];

try {
    $result = $SesClient->sendTemplatedEmail([
        'Destination' => [
            'ToAddresses' => $recipient_emails,
        ],
        'ReplyToAddresses' => [$sender_email],
        'Source' => $sender_email,

        'Template' => $template_name,
        'TemplateData' => '{ }'
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Verwaltung von E-Mail-Filtern mithilfe der Amazon SES SES-API und der AWS SDK für PHP Version 3
<a name="ses-filters"></a>

Neben dem Senden von E-Mails können Sie mit Amazon Simple Email Service (Amazon SES) auch E-Mails empfangen. Mithilfe eines IP-Adressenfilters können Sie optional angeben, ob E-Mails, die von einer IP-Adresse oder aus einem IP-Adressbereich stammen, akzeptiert oder abgelehnt werden sollen. Weitere Informationen finden Sie unter [Verwalten von IP-Adressenfilter für den Amazon SES-E-Mail-Empfang](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen E-Mail-Filter mit [CreateReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptfilter).
+ Listet alle E-Mail-Filter auf, die verwenden [ListReceiptFilters](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptfilters).
+ Entfernen Sie einen E-Mail-Filter mit [DeleteReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptfilter).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Erstellen Sie einen E-Mail-Filter
<a name="create-an-email-filter"></a>

Verwenden Sie den [CreateReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html)Vorgang, um E-Mails von einer bestimmten IP-Adresse zuzulassen oder zu blockieren. Geben Sie die IP-Adresse bzw. einen Adressbereich und einen eindeutigen Namen für diesen Filter ein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$filter_name = 'FilterName';
$ip_address_range = '10.0.0.1/24';

try {
    $result = $SesClient->createReceiptFilter([
        'Filter' => [
            'IpFilter' => [
                'Cidr' => $ip_address_range,
                'Policy' => 'Block|Allow',
            ],
            'Name' => $filter_name,
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Alle E-Mail-Filter auflisten
<a name="list-all-email-filters"></a>

Verwenden Sie den [ListReceiptFilters](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptFilters.html)Vorgang, um die IP-Adressfilter aufzulisten, die mit Ihrem AWS-Konto in der aktuellen AWS Region verknüpft sind.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listReceiptFilters();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie einen E-Mail-Filter
<a name="delete-an-email-filter"></a>

Verwenden Sie den [DeleteReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptFilter.html)Vorgang, um einen vorhandenen Filter für eine bestimmte IP-Adresse zu entfernen. Geben Sie den eindeutigen Filternamen zur Identifizierung des zu löschenden Empfangsfilters an.

Wenn Sie den Adressbereich, der gefiltert wird, ändern müssen, können Sie einen Empfangsfilter löschen und einen neuen erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$filter_name = 'FilterName';

try {
    $result = $SesClient->deleteReceiptFilter([
        'FilterName' => $filter_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# E-Mail-Regeln mithilfe der Amazon SES SES-API und der AWS SDK für PHP Version 3 erstellen und verwalten
<a name="ses-rules"></a>

Neben dem Senden von E-Mails können Sie mit Amazon Simple Email Service (Amazon SES) auch E-Mails empfangen. Mit Empfangsregeln können Sie festlegen, was Amazon SES mit E-Mails macht, die es für die E-Mail-Adressen oder Domains erhält, die Sie besitzen. Eine Regel kann E-Mails an andere AWS Dienste senden, einschließlich, aber nicht beschränkt auf Amazon S3, Amazon SNS oder AWS Lambda.

Weitere Informationen finden Sie unter [Empfangsregelsätze für den Amazon SES SES-E-Mail-Empfang verwalten und Empfangsregeln](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html) [für den Amazon SES SES-E-Mail-Empfang](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html) verwalten.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen Empfangsregelsatz mit [CreateReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptruleset).
+ Erstellen Sie eine Empfangsregel mit [CreateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptrule).
+ Beschreiben Sie einen Empfangsregelsatz mit [DescribeReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptruleset).
+ Beschreiben Sie eine Empfangsregel mit [DescribeReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptrule).
+ Listet alle Empfangsregelsätze auf, die verwenden [ListReceiptRuleSets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptrulesets).
+ Aktualisieren Sie eine Empfangsregel mit [UpdateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updatereceiptrule).
+ Entfernen Sie eine Empfangsregel mit [DeleteReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptrule).
+ Entfernen Sie einen Empfangsregelsatz mit [DeleteReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptruleset).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Erstellen eines Empfangsregelsatzes
<a name="create-a-receipt-rule-set"></a>

Ein Empfangsregelsatz enthält eine Sammlung von Empfangsregeln. Sie müssen mindestens einen Empfangsregelsatz mit Ihrem Konto verknüpft haben, bevor Sie eine Empfangsregel erstellen können. Um einen Satz von Empfangsregeln zu erstellen, geben Sie einen eindeutigen Wert an RuleSetName und verwenden Sie den [CreateReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html)Vorgang.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->createReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Erstellen einer Empfangsregel
<a name="create-a-receipt-rule"></a>

Kontrollieren Sie Ihre eingehenden E-Mails durch Hinzufügen einer Empfangsregel zu einem vorhandenen Empfangsregelsatz. Dieses Beispiel zeigt Ihnen, wie Sie eine Empfangsregel erstellen, die eingehende Nachrichten an einen Amazon S3 S3-Bucket sendet. Sie können aber auch Nachrichten an Amazon SNS und AWS Lambda senden. Um eine Empfangsregel zu erstellen, geben Sie eine Regel und dann den [CreateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRule.html)Vorgang RuleSetName an.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';
$s3_bucket = 'Bucket_Name';

try {
    $result = $SesClient->createReceiptRule([
        'Rule' => [
            'Actions' => [
                [
                    'S3Action' => [
                        'BucketName' => $s3_bucket,
                    ],
                ],
            ],
            'Name' => $rule_name,
            'ScanEnabled' => true,
            'TlsPolicy' => 'Optional',
            'Recipients' => ['<string>']
        ],
        'RuleSetName' =>  $rule_set_name,

     ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Beschreiben eines Empfangsregelsatzes
<a name="describe-a-receipt-rule-set"></a>

Die Details des angegebenen Empfangsregelsatzes werden einmal pro Sekunde zurückgegeben. Um die [DescribeReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRuleSet.html)Operation zu verwenden, geben Sie die an RuleSetName.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->describeReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Beschreiben Sie eine Empfangsregel
<a name="describe-a-receipt-rule"></a>

Die Details einer angegebenen Empfangsregel werden zurückgegeben. Um die [DescribeReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRule.html)Operation zu verwenden, geben Sie RuleName und ein RuleSetName.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';

try {
    $result = $SesClient->describeReceiptRule([
        'RuleName' => $rule_name,
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Listet alle Empfangsregelsätze auf
<a name="list-all-receipt-rule-sets"></a>

Verwenden Sie den [ListReceiptRuleSets](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptRuleSets.html)Vorgang, um die Empfangsregelsätze aufzulisten, die AWS-Konto in Ihrer aktuellen AWS Region existieren.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

try {
    $result = $SesClient->listReceiptRuleSets();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Aktualisieren Sie eine Empfangsregel
<a name="update-a-receipt-rule"></a>

Dieses Beispiel zeigt Ihnen, wie Sie eine Empfangsregel aktualisieren, die eingehende Nachrichten an eine AWS Lambda Funktion sendet. Sie können aber auch Nachrichten an Amazon SNS und Amazon S3 senden. Um den [UpdateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateReceiptRule.html)Vorgang zu verwenden, geben Sie die neue Empfangsregel und die an RuleSetName.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';
$lambda_arn = 'Amazon Resource Name (ARN) of the AWS Lambda function';
$sns_topic_arn = 'Amazon Resource Name (ARN) of the Amazon SNS topic';

try {
    $result = $SesClient->updateReceiptRule([
        'Rule' => [
            'Actions' => [
                'LambdaAction' => [
                    'FunctionArn' => $lambda_arn,
                    'TopicArn' => $sns_topic_arn,
                ],
            ],
            'Enabled' => true,
            'Name' => $rule_name,
            'ScanEnabled' => false,
            'TlsPolicy' => 'Require',
        ],
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen Sie einen Empfangsregelsatz
<a name="delete-a-receipt-rule-set"></a>

Entfernen Sie einen bestimmten Empfangsregelsatz, der derzeit nicht deaktiviert ist. Mit diesem Vorgang werden auch alle darin enthaltenen Empfangsregeln gelöscht. Um einen Empfangsregelsatz zu löschen, stellen Sie den für RuleSetName den [DeleteReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRuleSet.html)Vorgang bereit.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$name = 'Rule_Set_Name';

try {
    $result = $SesClient->deleteReceiptRuleSet([
        'RuleSetName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Löschen einer Empfangsregel
<a name="delete-a-receipt-rule"></a>

Um eine angegebene Empfangsregel zu löschen, geben Sie den RuleName Wert und RuleSetName für den [DeleteReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRule.html)Vorgang ein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
```

 **Beispiel-Code** 

```
$SesClient = new Aws\Ses\SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-2'
]);

$rule_name = 'Rule_Name';
$rule_set_name = 'Rule_Set_Name';

try {
    $result = $SesClient->deleteReceiptRule([
        'RuleName' => $rule_name,
        'RuleSetName' => $rule_set_name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Überwachung Ihrer Sendeaktivitäten mithilfe der Amazon SES SES-API und der AWS SDK für PHP Version 3
<a name="ses-send-email"></a>

Amazon Simple Email Service (Amazon SES) bietet Methoden zur Überwachung Ihrer Versandaktivitäten. Am besten implementieren Sie diese Methoden, damit Sie wichtige Maßnahmen – wie Ihre kontobezogenen Quoten für Unzustellbarkeit, Beschwerden und Ablehnungen – verfolgen können. Zu hohe Absprungs- und Beschwerderaten können Ihre Fähigkeit, E-Mails mit Amazon SES zu versenden, gefährden.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Überprüfen Sie Ihr Versandkontingent mit. [GetSendQuota](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendquota)
+ Überwachen Sie Ihre Sendeaktivität mit [GetSendStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendstatistics).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Überprüfen Sie Ihr Versandkontingent
<a name="check-your-sending-quota"></a>

Sie können nur eine bestimmte Menge an Nachrichten in einem einzelnen 24-Stunden-Zeitraum senden. Verwenden Sie den [GetSendQuota](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendQuota.html)Vorgang, um zu überprüfen, wie viele Nachrichten Sie noch senden dürfen. Weitere Informationen finden Sie unter [Verwalten Ihrer Sendelimits für Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'

]);

try {
    $result = $SesClient->getSendQuota();
    $send_limit = $result["Max24HourSend"];
    $sent = $result["SentLast24Hours"];
    $available = $send_limit - $sent;
    print("<p>You can send " . $available . " more messages in the next 24 hours.</p>");
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Überwachen Sie Ihre Sendeaktivität
<a name="monitor-your-sending-activity"></a>

Verwenden Sie den [GetSendStatistics](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendStatistics.html)Vorgang, um Messwerte für Nachrichten abzurufen, die Sie in den letzten zwei Wochen gesendet haben. Dieses Beispiel gibt die Anzahl der Zustellungsversuche, Unzustellbarkeiten, Beschwerden und abgelehnten Nachrichten in 15-Minuten-Schritten zurück.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

try {
    $result = $SesClient->getSendStatistics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Autorisieren von Absendern mithilfe der Amazon SES SES-API und der Version 3 AWS SDK für PHP
<a name="ses-sender-policy"></a>

Um es einem anderen AWS-Konto AWS Identity and Access Management Benutzer oder AWS Dienst zu ermöglichen, in Ihrem Namen E-Mails über Amazon Simple Email Service (Amazon SES) zu senden, erstellen Sie eine Versandautorisierungsrichtlinie. Hierbei handelt es sich um ein JSON-Dokument, das Sie einer in Ihrem Besitz befindlichen Identität anfügen.

Die Richtlinie führt explizit auf, wem Sie die Berechtigung erteilen, für diese Identität E-Mails zu senden und unter welchen Bedingungen. Mit Ausnahme von Ihnen und den Entitäten, denen Sie in der Richtlinie ausdrücklich die Berechtigung erteilen, wird allen anderen Sendern das Senden von E-Mails verweigert. Einer Identität kann keine Richtlinie, eine Richtlinie oder mehrere Richtlinien angefügt werden. Eine Richtlinie kann auch mehrere Anweisungen enthalten und so die gleiche Wirkung wie mehrere Richtlinien erzielen.

Weitere Informationen finden Sie unter [Verwenden der Sendeautorisierung mit Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie einen autorisierten Absender mit [PutIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createidentitypolicy).
+ Rufen Sie Richtlinien für einen autorisierten Absender ab mit [GetIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getidentitypolicies).
+ Liste autorisierter Absender mit. [ListIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentitypolicies)
+ Widerrufen Sie die Erlaubnis für einen autorisierten Absender mit [DeleteIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentitypolicy).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

Weitere Informationen zur Verwendung von Amazon SES finden Sie im [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Erstellen Sie einen autorisierten Absender
<a name="create-an-authorized-sender"></a>

Um eine andere Person AWS-Konto zu autorisieren, in Ihrem Namen E-Mails zu versenden, verwenden Sie eine Identitätsrichtlinie, um die Autorisierung für das Senden von E-Mails von Ihren verifizierten E-Mail-Adressen oder Domains hinzuzufügen oder zu aktualisieren. Verwenden Sie den [PutIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)Vorgang, um eine Identitätsrichtlinie zu erstellen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$other_aws_account = "0123456789";
$policy = <<<EOT
{
  "Id":"ExampleAuthorizationPolicy",
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Sid":"AuthorizeAccount",
      "Effect":"Allow",
      "Resource":"$identity",
      "Principal":{
        "AWS":[ "$other_aws_account" ]
      },
      "Action":[
        "SES:SendEmail",
        "SES:SendRawEmail"
      ]
    }
  ]
}
EOT;
$name = "policyName";

try {
    $result = $SesClient->putIdentityPolicy([
        'Identity' => $identity,
        'Policy' => $policy,
        'PolicyName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Rufen Sie Richtlinien für einen autorisierten Absender ab
<a name="retrieve-polices-for-an-authorized-sender"></a>

Geben Sie die Sendeautorisierungsrichtlinien, die mit einer bestimmten E-Mail-Identität oder Domänenidentität verknüpft sind, zurück. Verwenden Sie den [GetIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicy.html)Vorgang, um die Sendeautorisierung für eine bestimmte E-Mail-Adresse oder Domain zu erhalten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$policies = ["policyName"];

try {
    $result = $SesClient->getIdentityPolicies([
        'Identity' => $identity,
        'PolicyNames' => $policies,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Autorisierte Absender auflisten
<a name="list-authorized-senders"></a>

Verwenden Sie den [ListIdentityPolicies](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html)Vorgang, um die Richtlinien für die Sendeautorisierung aufzulisten, die mit einer bestimmten E-Mail-Identität oder Domänenidentität in der aktuellen AWS Region verknüpft sind.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";

try {
    $result = $SesClient->listIdentityPolicies([
        'Identity' => $identity,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

## Widerrufen Sie die Erlaubnis für einen autorisierten Absender
<a name="revoke-permission-for-an-authorized-sender"></a>

Entfernen Sie die Sendeautorisierung für einen anderen AWS-Konto Benutzer, E-Mails mit einer E-Mail-Identität oder Domänenidentität zu senden, indem Sie die mit dem [DeleteIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)Vorgang verknüpfte Identitätsrichtlinie löschen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Beispiel-Code** 

```
$SesClient = new SesClient([
    'profile' => 'default',
    'version' => '2010-12-01',
    'region' => 'us-east-1'
]);

$identity = "arn:aws:ses:us-east-1:123456789012:identity/example.com";
$name = "policyName";

try {
    $result = $SesClient->deleteIdentityPolicy([
        'Identity' => $identity,
        'PolicyName' => $name,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    echo $e->getMessage();
    echo "\n";
}
```

# Amazon SNS SNS-Beispiele mit AWS SDK für PHP Version 3
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) ist ein Webservice, der die Zustellung oder den Versand von Nachrichten an abonnierte Endpunkte oder Kunden koordiniert und verwaltet.

In Amazon SNS gibt es zwei Arten von Kunden: Verlage (auch als Produzenten bezeichnet) und Abonnenten (auch als Verbraucher bezeichnet). Herausgeber kommunizieren asynchron mit Abonnenten, indem sie eine Nachricht erstellen und an ein Thema senden, bei dem es sich wirklich um einen logischen Zugriffspunkt und Kommunikationskanal handelt. Abonnenten (Webserver, E-Mail-Adressen, Amazon SQS-Warteschlangen, AWS Lambda Funktionen) konsumieren oder empfangen die Nachricht oder Benachrichtigung über eines der unterstützten Protokolle (Amazon SQS, E-Mail HTTP/HTTPS URLs, Lambda) AWS SMS, wenn sie das Thema abonniert haben.

[Der gesamte Beispielcode für AWS SDK für PHP Version 3 ist hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Themen verwalten](sns-examples-managing-topics.md)
+ [Verwalten von Abonnements](sns-examples-subscribing-unsubscribing-topics.md)
+ [Senden von Amazon-SMS-Nachrichten](sns-examples-sending-sms.md)

# Themen in Amazon SNS mit AWS SDK für PHP Version 3 verwalten
<a name="sns-examples-managing-topics"></a>

Um Benachrichtigungen an Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS URLs, E-Mail, AWS SMS oder zu senden AWS Lambda, müssen Sie zunächst ein Thema erstellen, das die Zustellung von Nachrichten an alle Abonnenten dieses Themas verwaltet.

Im Hinblick auf das Entwurfsmuster ist ein Thema für den Beobachter mit dem Betreff vergleichbar. Nach dem Erstellen eines Themas können Sie Abonnenten hinzufügen, die automatisch benachrichtigt werden, wenn eine Nachricht im Thema veröffentlicht wird.

Weitere Informationen zum Abonnieren von Themen finden Sie unter [Verwaltung von Abonnements in Amazon SNS mit AWS SDK für PHP Version 3.](sns-examples-subscribing-unsubscribing-topics.md)

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Erstellen Sie ein Thema, um Benachrichtigungen zu veröffentlichen, um es zu verwenden. [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic)
+ Gibt eine Liste der Themen des Anfragenden zurück, indem Sie [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Löschen Sie ein Thema und alle zugehörigen Abonnements mit [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Gibt alle Eigenschaften eines Themas zurück mit [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Erlauben Sie einem Themenbesitzer, ein Attribut des Themas auf einen neuen Wert zu setzen, indem Sie [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Weitere Informationen zur Verwendung von Amazon SNS finden Sie unter Amazon SNS [SNS-Thema Attribute für den Status der Nachrichtenzustellung](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Erstellen eines Themas
<a name="create-a-topic"></a>

Verwenden Sie die [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)Operation, um ein Thema zu erstellen.

Jeder Themenname in Ihrem AWS-Konto muss eindeutig sein.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topicname = 'myTopic';

try {
    $result = $SnSclient->createTopic([
        'Name' => $topicname,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Listen Sie Ihre Themen auf
<a name="list-your-topics"></a>

Verwenden Sie die [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html)Operation, um bis zu 100 bestehende Themen in der aktuellen AWS Region aufzulisten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listTopics();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen eines Themas
<a name="delete-a-topic"></a>

Verwenden Sie den [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)Vorgang, um ein vorhandenes Thema und alle zugehörigen Abonnements zu entfernen.

Alle Nachrichten, die den Abonnenten noch nicht zugestellt wurden, werden ebenfalls gelöscht.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->deleteTopic([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Themenattribute abrufen
<a name="get-topic-attributes"></a>

Verwenden Sie den [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)Vorgang, um Eigenschaften eines einzelnen vorhandenen Themas abzurufen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->getTopicAttributes([
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Festlegen von Themenattributen
<a name="set-topic-attributes"></a>

Verwenden Sie den [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)Vorgang, um die Eigenschaften eines einzelnen vorhandenen Themas zu aktualisieren.

Sie können nur die Attribute `Policy`, `DisplayName` und `DeliveryPolicy` festlegen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->setTopicAttributes([
        'AttributeName' => $attribute,
        'AttributeValue' => $value,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwaltung von Abonnements in Amazon SNS mit AWS SDK für PHP Version 3
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Verwenden Sie Amazon Simple Notification Service (Amazon SNS) -Themen, um Benachrichtigungen an Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, E-Mail-Adressen, AWS Server Migration Service (AWS SMS) oder zu senden. AWS Lambda

Abonnements werden einem Thema angefügt, das das Senden von Nachrichten an Abonnenten verwaltet. Weitere Informationen zum Erstellen von Themen finden Sie [unter Themen in Amazon SNS mit AWS SDK für PHP Version 3 verwalten](sns-examples-managing-topics.md).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Abonnieren Sie ein vorhandenes Thema mit der Operation [Subscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Überprüfen Sie ein Abonnement mit [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Bestehende Abonnements auflisten mit [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic).
+ Löschen Sie ein Abonnement mit der Operation [Unsubscribe](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Senden Sie eine Nachricht an alle Abonnenten eines Themas mit der Operation [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Weitere Informationen zur Verwendung von Amazon SNS finden Sie unter [Amazon SNS for System-to-System Messaging verwenden](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Abonnieren einer E-Mail-Adresse für ein Thema
<a name="subscribe-an-email-address-to-a-topic"></a>

Um ein Abonnement für eine E-Mail-Adresse abzuschließen, verwenden Sie die Operation [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Sie können die Abonnement-Methode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS SNS-Thema zu abonnieren, abhängig von den Werten, die für die übergebenen Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel handelt es sich bei dem Endpunkt um eine E-Mail-Adresse. Ein Bestätigungs-Token wird an diese E-Mail-Adresse gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'email';
$endpoint = 'sample@example.com';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Abonnieren Sie ein Thema über einen Anwendungsendpunkt
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Um ein Abonnement für eine Web-App abzuschließen, verwenden Sie die Operation [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Sie können die Abonnement-Methode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS SNS-Thema zu abonnieren, abhängig von den Werten, die für die übergebenen Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine URL. Ein Bestätigungs-Token wird an diese Webadresse gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'https';
$endpoint = 'https://';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Abonnieren eines Themas mit einer Lambda-Funktion
<a name="subscribe-a-lam-function-to-a-topic"></a>

Verwenden Sie den Vorgang [Abonnieren](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html), um ein Abonnement für eine Lambda-Funktion zu initiieren.

Sie können die Abonnement-Methode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS SNS-Thema zu abonnieren, abhängig von den Werten, die für die übergebenen Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine Lambda-Funktion. Ein Bestätigungstoken wird an diese Lambda-Funktion gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'lambda';
$endpoint = 'arn:aws:lambda:us-east-1:123456789023:function:messageStore';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Abonnieren Sie eine Text-SMS zu einem Thema
<a name="subscribe-a-text-sms-to-a-topic"></a>

Um SMS-Nachrichten an mehrere Telefonnummern gleichzeitig zu senden, abonnieren Sie ein Thema mit jeder einzelnen Telefonnummer.

Um ein Abonnement für eine Telefonnummer abzuschließen, verwenden Sie die Operation [Subscribe](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Sie können die Abonnement-Methode verwenden, um mehrere verschiedene Endpunkte für ein Amazon SNS SNS-Thema zu abonnieren, abhängig von den Werten, die für die übergebenen Parameter verwendet werden. Dies wird in anderen Beispielen in diesem Thema veranschaulicht.

In diesem Beispiel ist der Endpunkt eine Telefonnummer im E.164-Format, einem Standard für die internationale Schreibweise für Telefonnummern.

Ein Bestätigungs-Token wird an diese Telefonnummer gesendet. Verifizieren Sie das Abonnement mit diesem Bestätigungs-Token innerhalb von drei Tagen nach Erhalt.

Eine alternative Methode zum Senden von SMS-Nachrichten mit Amazon SNS finden Sie unter [Senden von SMS-Nachrichten in Amazon SNS mit AWS SDK für PHP Version 3.](sns-examples-sending-sms.md)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$protocol = 'sms';
$endpoint = '+1XXX5550100';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->subscribe([
        'Protocol' => $protocol,
        'Endpoint' => $endpoint,
        'ReturnSubscriptionArn' => true,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Bestätigen Sie das Abonnement für ein Thema
<a name="confirm-subscription-to-a-topic"></a>

Um ein Abonnement letztendlich zu erstellen, muss der Eigentümer des Endpunkts die Absicht, Nachrichten von dem Thema zu empfangen, mithilfe eines Tokens bestätigen, das beim anfänglichen Abschluss des Abonnements gesendet wurde, wie zuvor beschrieben. Bestätigungs-Token sind drei Tage gültig. Nach drei Tagen können Sie ein Token erneut senden, indem Sie ein neues Abonnement abschließen.

Verwenden Sie den [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)Vorgang, um ein Abonnement zu bestätigen.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->confirmSubscription([
        'Token' => $subscription_token,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Abonnements für ein Thema auflisten
<a name="list-subscriptions-to-a-topic"></a>

Verwenden Sie den [ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)Vorgang, um bis zu 100 bestehende Abonnements in einer bestimmten AWS Region aufzulisten.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listSubscriptions();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Abbestellen eines Themas
<a name="unsubscribe-from-a-topic"></a>

Verwenden Sie zum Entfernen eines Endpunkts, für den ein Thema abonniert wurde, die Operation [Unsubscribe](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html).

Wenn für das Löschen des Abonnements eine Authentifizierung erforderlich ist, kann nur der Eigentümer des Abonnements oder der Eigentümer des Themas das Abonnement kündigen. Eine AWS Unterschrift ist erforderlich. Wenn der Kündigungsaufruf keine Authentifizierung erfordert und der Anforderer nicht der Eigentümer des Abonnements ist, wird eine Nachricht über die endgültige Kündigung des Abonnements an den Endpunkt gesendet.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';

try {
    $result = $SnSclient->unsubscribe([
        'SubscriptionArn' => $subscription,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Eine Nachricht zu einem Amazon SNS SNS-Thema veröffentlichen
<a name="publish-a-message-to-an-sns-topic"></a>

Verwenden Sie den Vorgang [Veröffentlichen](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html), um eine Nachricht an jeden Endpunkt zu senden, der ein Amazon SNS SNS-Thema abonniert hat.

Erstellen Sie ein Objekt, das die Parameter für die Veröffentlichung einer Nachricht enthält, einschließlich des Nachrichtentextes und des Amazon-Ressourcennamens (ARN) des Amazon SNS-Themas.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'TopicArn' => $topic,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Senden von SMS-Nachrichten in Amazon SNS mit der AWS SDK für PHP Version 3
<a name="sns-examples-sending-sms"></a>

Sie können Amazon Simple Notification Service (Amazon SNS) verwenden, um Textnachrichten oder SMS-Nachrichten an SMS-fähige Geräte zu senden. Sie können eine Nachricht direkt an eine Telefonnummer senden oder Sie können eine Nachricht an mehrere Telefonnummern gleichzeitig senden, indem Sie das Thema für diese Telefonnummern abonnieren und die Nachricht an das Thema senden.

Verwenden Sie Amazon SNS, um Einstellungen für SMS-Nachrichten festzulegen, z. B. wie Ihre Lieferungen optimiert werden (aus Kostengründen oder für eine zuverlässige Zustellung), Ihr monatliches Ausgabenlimit, wie Nachrichtenzustellungen protokolliert werden und ob Sie tägliche SMS-Nutzungsberichte abonnieren möchten. Diese Einstellungen werden abgerufen und als SMS-Attribute für Amazon SNS festgelegt.

Wenn Sie eine SMS-Nachricht senden, geben Sie die Telefonnummer im E.164-Format an. Die Richtlinie E.164 legt die internationale Schreibweise für Telefonnummern fest. Telefonnummern in diesem Format bestehen aus maximal 15 Zeichen sowie einem vorangestellten Plus-Zeichen (\$1) und der Ländervorwahl. Eine US-Telefonnummer im E.164-Format würde beispielsweise als XXX555 \$11001 0100 angezeigt.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ [Rufen Sie mit Get die Standardeinstellungen für das Senden von SMS-Nachrichten von Ihrem Konto aus ab. SMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes)
+ Aktualisieren Sie mithilfe von [Set](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes) die Standardeinstellungen für das Senden von SMS-Nachrichten von Ihrem Konto ausSMSAttributes.
+ [Finden Sie mithilfe CheckIfPhoneNumber ISOpted von Out heraus, ob sich der Inhaber einer bestimmten Telefonnummer gegen den Empfang von SMS-Nachrichten von Ihrem Konto entschieden hat.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout)
+ Listen Sie Telefonnummern auf, bei denen der Eigentümer den Empfang von SMS-Nachrichten von Ihrem Konto mithilfe von deaktiviert hat [ListPhoneNumberOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout).
+ Senden Sie eine Textnachricht (SMS-Nachricht) mit [Publish](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish) direkt an eine Telefonnummer.

Weitere Informationen zur Verwendung von Amazon SNS finden Sie unter [Verwenden von Amazon SNS für Benutzerbenachrichtigungen mit einer Mobiltelefonnummer als Abonnent (SMS senden)](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html).

Der gesamte Beispielcode für die AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Holen Sie sich SMS-Attribute
<a name="get-sms-attributes"></a>

Um die Standardeinstellungen für SMS-Nachrichten abzurufen, verwenden Sie den SMSAttributes Vorgang [Abrufen](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html).

In diesem Beispiel wird das `DefaultSMSType`-Attribut abgerufen. Dieses Attribut steuert, ob SMS-Nachrichten als `Promotional` oder als `Transactional` gesendet werden. Im ersten Fall wird die Nachrichtenzustellung im Hinblick auf die Kosten und im zweiten Fall im Hinblick auf höchste Zuverlässigkeit optimiert.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->getSMSAttributes([
        'attributes' => ['DefaultSMSType'],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## SMS-Attribute festlegen
<a name="set-sms-attributes"></a>

Verwenden Sie den SMSAttributes Vorgang [Set](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html), um die Standardeinstellungen für SMS-Nachrichten zu aktualisieren.

In diesem Beispiel wird das `DefaultSMSType`-Attribut auf `Transactional` festgelegt. Damit wird die Nachrichtenzustellung im Hinblick auf höchste Zuverlässigkeit optimiert.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->SetSMSAttributes([
        'attributes' => [
            'DefaultSMSType' => 'Transactional',
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Prüfen Sie, ob sich eine Telefonnummer abgemeldet hat
<a name="check-if-a-phone-number-has-opted-out"></a>

Verwenden Sie den [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html)Vorgang, um festzustellen, ob der Inhaber einer bestimmten Telefonnummer den Empfang von SMS-Nachrichten von Ihrem Konto abgelehnt hat.

In diesem Beispiel folgt die Telefonnummer dem E.164-Format, einem Standard für die internationale Schreibweise für Telefonnummern.

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$phone = '+1XXX5550100';

try {
    $result = $SnSclient->checkIfPhoneNumberIsOptedOut([
        'phoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Rufnummern auflisten, von denen Sie sich abgemeldet haben
<a name="list-opted-out-phone-numbers"></a>

Verwenden Sie den Vorgang, um eine Liste mit Telefonnummern abzurufen, für die der Eigentümer den Empfang von SMS-Nachrichten von Ihrem Konto deaktiviert hat. [ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html)

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

try {
    $result = $SnSclient->listPhoneNumbersOptedOut();
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## In einer Textnachricht (SMS-Nachricht) veröffentlichen
<a name="publish-to-a-text-message-sms-message"></a>

Um eine Textnachricht (SMS-Nachricht) direkt an eine Telefonnummer zu senden, verwenden Sie die Operation [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

In diesem Beispiel folgt die Telefonnummer dem E.164-Format, einem Standard für die internationale Schreibweise für Telefonnummern.

SMS-Nachrichten können bis zu 140 Byte enthalten. Für die veröffentlichte und in mehreren Teilen versendete SMS-Nachricht gilt eine Größenbegrenzung von 1 600 Byte.

Weitere Informationen zum Senden von SMS-Nachrichten finden Sie unter [Senden einer SMS-Nachricht](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html).

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Beispiel-Code** 

```
$SnSclient = new SnsClient([
    'profile' => 'default',
    'region' => 'us-east-1',
    'version' => '2010-03-31'
]);

$message = 'This message is sent from a Amazon SNS code sample.';
$phone = '+1XXX5550100';

try {
    $result = $SnSclient->publish([
        'Message' => $message,
        'PhoneNumber' => $phone,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Amazon SQS SQS-Beispiele mit AWS SDK für PHP Version 3
<a name="sqs-examples"></a>

Amazon Simple Queue Service (SQS) ist ein schneller, zuverlässiger, skalierbarer und vollständig verwalteter Message Queuing-Service. Mit Amazon SQS können Sie die Komponenten einer Cloud-Anwendung entkoppeln. Amazon SQS umfasst Standardwarteschlangen mit hohem Durchsatz und hoher at-least-once Verarbeitung sowie FIFO-Warteschlangen, die FIFO-Zustellung (First>In, First>Out) und Exactly-Once-Verarbeitung ermöglichen.

[Der gesamte Beispielcode für Version 3 ist hier verfügbar. AWS SDK für PHP GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

**Topics**
+ [Langes Polling aktivieren](sqs-examples-enable-long-polling.md)
+ [Verwaltung des Sichtbarkeits-Timeouts](sqs-examples-managing-visibility-timeout.md)
+ [Senden und Empfangen von Nachrichten](sqs-examples-send-receive-messages.md)
+ [Verwenden von Warteschlangen für unzustellbare Nachrichten](sqs-examples-dead-letter-queues.md)
+ [Verwenden von Warteschlangen](sqs-examples-using-queues.md)

# Aktivierung von Long Polling in Amazon SQS mit Version 3 AWS SDK für PHP
<a name="sqs-examples-enable-long-polling"></a>

Lange Abfragen reduzieren die Anzahl leerer Antworten, indem Amazon SQS eine bestimmte Zeit warten kann, bis eine Nachricht in der Warteschlange verfügbar ist, bevor eine Antwort gesendet wird. Durch Langabfragen lassen sich außerdem falsch leere Antworten vermeiden, indem die Anfrage statt an eine Auswahl an Servern an alle Server gesendet wird. Zum Aktivieren von Langabfragen geben Sie für empfangene Nachrichten eine Wartezeit ungleich Null an. Weitere Informationen finden Sie unter [SQS Langabfragen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Legen Sie Attribute in einer Amazon SQS SQS-Warteschlange fest, um lange Abfragen zu ermöglichen, mithilfe von. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)
+ Rufen Sie eine oder mehrere Nachrichten mit langer Abfrage ab mit. [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage)
+ Erstellen Sie eine lange Abfragewarteschlange mit. [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Legen Sie Attribute für eine Warteschlange fest, um lange Abfragen zu ermöglichen
<a name="set-attributes-on-a-queue-to-enable-long-polling"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->setQueueAttributes([
        'Attributes' => [
            'ReceiveMessageWaitTimeSeconds' => 20
        ],
        'QueueUrl' => $queueUrl, // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Rufen Sie Nachrichten mit langen Abfragen ab
<a name="retrieve-messages-with-long-polling"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage([
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 1,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
        'WaitTimeSeconds' => 20,
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Erstellen Sie eine Warteschlange mit langen Abfragen
<a name="create-a-queue-with-long-polling"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueName = "QUEUE_NAME";


$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->createQueue([
        'QueueName' => $queueName,
        'Attributes' => [
            'ReceiveMessageWaitTimeSeconds' => 20
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwaltung des Sichtbarkeits-Timeouts in Amazon SQS mit Version 3 AWS SDK für PHP
<a name="sqs-examples-managing-visibility-timeout"></a>

Ein Sichtbarkeits-Timeout ist ein Zeitraum, in dem Amazon SQS verhindert, dass andere verbrauchende Komponenten eine Nachricht empfangen und verarbeiten. Weitere Informationen finden Sie unter [Zeitbeschränkung für die Sichtbarkeit](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html).

Das folgende Beispiel zeigt eine Anleitung für:
+ Ändern Sie das Sichtbarkeits-Timeout bestimmter Nachrichten in einer Warteschlange auf neue Werte, indem Sie [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#changemessagevisibilitybatch)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub.](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Ändern Sie das Sichtbarkeits-Timeout mehrerer Nachrichten
<a name="change-the-visibility-timeout-of-multiple-messages"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage(array(
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 10,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
    ));
    $messages = $result->get('Messages');
    if ($messages != null) {
        $entries = array();
        for ($i = 0; $i < count($messages); $i++) {
            $entries[] = [
                'Id' => 'unique_is_msg' . $i, // REQUIRED
                'ReceiptHandle' => $messages[$i]['ReceiptHandle'], // REQUIRED
                'VisibilityTimeout' => 3600
            ];
        }
        $result = $client->changeMessageVisibilityBatch([
            'Entries' => $entries,
            'QueueUrl' => $queueUrl
        ]);

        var_dump($result);
    } else {
        echo "No messages in queue \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Senden und Empfangen von Nachrichten in Amazon SQS mit AWS SDK für PHP Version 3
<a name="sqs-examples-send-receive-messages"></a>

Weitere Informationen zu Amazon SQS SQS-Nachrichten finden Sie unter [Senden einer Nachricht an eine SQS-Warteschlange](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-send-message.html) und [Empfangen und Löschen einer Nachricht aus einer SQS-Warteschlange](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-receive-delete-message.html.html) im Service Quotas Quotas-Benutzerhandbuch.

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Senden Sie eine Nachricht an eine angegebene Warteschlange mit. [SendMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage)
+ Ruft eine oder mehrere Nachrichten (bis zu 10) aus einer angegebenen Warteschlange ab mit [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage).
+ Löscht eine Nachricht aus einer Warteschlange mit [DeleteMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletemessage).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Senden einer Nachricht
<a name="send-a-message"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

$params = [
    'DelaySeconds' => 10,
    'MessageAttributes' => [
        "Title" => [
            'DataType' => "String",
            'StringValue' => "The Hitchhiker's Guide to the Galaxy"
        ],
        "Author" => [
            'DataType' => "String",
            'StringValue' => "Douglas Adams."
        ],
        "WeeksOn" => [
            'DataType' => "Number",
            'StringValue' => "6"
        ]
    ],
    'MessageBody' => "Information about current NY Times fiction bestseller for week of 12/11/2016.",
    'QueueUrl' => 'QUEUE_URL'
];

try {
    $result = $client->sendMessage($params);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Nachrichten empfangen und löschen
<a name="receive-and-delete-messages"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->receiveMessage([
        'AttributeNames' => ['SentTimestamp'],
        'MaxNumberOfMessages' => 1,
        'MessageAttributeNames' => ['All'],
        'QueueUrl' => $queueUrl, // REQUIRED
        'WaitTimeSeconds' => 0,
    ]);
    if (!empty($result->get('Messages'))) {
        var_dump($result->get('Messages')[0]);
        $result = $client->deleteMessage([
            'QueueUrl' => $queueUrl, // REQUIRED
            'ReceiptHandle' => $result->get('Messages')[0]['ReceiptHandle'] // REQUIRED
        ]);
    } else {
        echo "No messages in queue. \n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwenden von Warteschlangen für unzustellbare Briefe in Amazon SQS mit Version 3 AWS SDK für PHP
<a name="sqs-examples-dead-letter-queues"></a>

Bei einer Warteschlange für unzustellbare Nachrichten handelt es sich um eine Warteschlange, an die andere (Quell-) Warteschlangen Nachrichten senden können, die nicht erfolgreich verarbeitet werden konnten. Sie können diese Nachrichten in der Warteschlange für unzustellbare Nachrichten sammeln und isolieren, um festzustellen, warum die Verarbeitung fehlgeschlagen ist. Sie müssen jede Quellwarteschlange, die Nachrichten an eine Warteschlange für unzustellbare Nachrichten sendet, individuell konfigurieren. Eine Warteschlange für unzustellbare Nachrichten kann von mehreren Warteschlangen verwendet werden.

Weitere Informationen finden Sie unter [Verwenden von SQS-Warteschlangen für unzustellbare Nachrichten](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html).

Das folgende Beispiel zeigt eine Anleitung für:
+ Aktivieren Sie eine Warteschlange für unzustellbare Briefe mit. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar. GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code)

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Aktivieren Sie eine Warteschlange für unzustellbare Briefe
<a name="enable-a-dead-letter-queue"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->setQueueAttributes([
        'Attributes' => [
            'RedrivePolicy' => "{\"deadLetterTargetArn\":\"DEAD_LETTER_QUEUE_ARN\",\"maxReceiveCount\":\"10\"}"
        ],
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Verwenden von Warteschlangen in Amazon SQS mit Version 3 AWS SDK für PHP
<a name="sqs-examples-using-queues"></a>

Weitere Informationen zu Amazon SQS SQS-Warteschlangen finden Sie unter [So funktionieren SQS-Warteschlangen](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html).

In den nachstehenden Beispielen wird Folgendes veranschaulicht:
+ Geben Sie eine Liste Ihrer Warteschlangen zurück mit. [ListQueues](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#listqueues)
+ Erstellen Sie eine neue Warteschlange mit [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue).
+ Gibt die URL einer vorhandenen Warteschlange zurück mit [GetQueueUrl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#getqueueurl).
+ Löscht eine angegebene Warteschlange mit [DeleteQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletequeue).

Der gesamte Beispielcode für AWS SDK für PHP ist [hier verfügbar GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Anmeldeinformationen
<a name="examplecredentials"></a>

Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen wie unter beschrieben[Authentifizierung AWS mit AWS SDK für PHP Version 3](credentials.md). Importieren Sie dann die AWS SDK für PHP, wie unter beschrieben[Installation der AWS SDK für PHP Version 3](getting-started_installation.md).

## Gibt eine Liste von Warteschlangen zurück
<a name="return-a-list-of-queues"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->listQueues();
    foreach ($result->get('QueueUrls') as $queueUrl) {
        echo "$queueUrl\n";
    }
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Erstellen einer Warteschlange
<a name="create-a-queue"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->createQueue([
        'QueueName' => $queueName,
        'Attributes' => [
            'DelaySeconds' => 5,
            'MaximumMessageSize' => 4096, // 4 KB
        ],
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Gibt die URL einer Warteschlange zurück
<a name="return-the-url-of-a-queue"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueName = "SQS_QUEUE_NAME";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->getQueueUrl([
        'QueueName' => $queueName // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

## Löschen einer Warteschlange
<a name="delete-a-queue"></a>

 **Importe** 

```
require 'vendor/autoload.php';

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Beispiel-Code** 

```
$queueUrl = "SQS_QUEUE_URL";

$client = new SqsClient([
    'profile' => 'default',
    'region' => 'us-west-2',
    'version' => '2012-11-05'
]);

try {
    $result = $client->deleteQueue([
        'QueueUrl' => $queueUrl // REQUIRED
    ]);
    var_dump($result);
} catch (AwsException $e) {
    // output error message if fails
    error_log($e->getMessage());
}
```

# Senden Sie Ereignisse mit der AWS SDK für PHP Version 3 an EventBridge globale Amazon-Endpunkte
<a name="eventbridge-examples"></a>

Sie können [Amazon EventBridge Global Endpoints](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html) verwenden, um die Verfügbarkeit und Zuverlässigkeit Ihrer ereignisgesteuerten Anwendungen zu verbessern.

Nachdem der EventBridge globale Endpunkt [eingerichtet](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html#eb-ge-create-endpoint) ist, können Sie mithilfe des SDK for PHP Ereignisse an ihn senden.

**Wichtig**  
Um EventBridge globale Endpunkte mit dem SDK for PHP zu verwenden, muss in Ihrer PHP-Umgebung die [AWS Common Runtime (AWS CRT) -Erweiterung](guide_crt.md) installiert sein.

Das folgende Beispiel verwendet die [PutEvents](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-eventbridge-2015-10-07.html#putevents)Methode von, `EventBridgeClient` um ein einzelnes Ereignis an einen EventBridge globalen Endpunkt zu senden.

```
<?php
/* Send a single event to an existing Amazon EventBridge global endpoint. */
require '../vendor/autoload.php';

use Aws\EventBridge\EventBridgeClient;

$evClient = new EventBridgeClient([
    'region' => 'us-east-1'
]);

$endpointId = 'xxxx123456.xxx';  // Existing EventBridge global endpointId.
$eventBusName = 'default';       // Existing event bus in the us-east-1 Region.

$event =  [
    'Source' => 'my-php-app',
    'DetailType' => 'test',
    'Detail' => json_encode(['foo' => 'bar']),
    'Time' => new DateTime(),
    'Resources' => ['php-script'],
    'EventBusName' => $eventBusName,
    'TraceHeader' => 'test'
];

$result = $evClient->putEvents([
    'EndpointId' => $endpointId,
    'Entries' => [$event]
]);
```

[Dieser Blogbeitrag](https://aws.amazon.com/blogs//compute/introducing-global-endpoints-for-amazon-eventbridge/) enthält weitere Informationen zu EventBridge globalen Endpunkten.