

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

# Contoh kode dengan panduan untuk AWS SDK untuk PHP
<a name="examples_index"></a>

Bagian ini berisi contoh kode yang menunjukkan AWS skenario umum yang menggunakan AWS SDK untuk PHP.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

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

# CloudFront Contoh Amazon menggunakan AWS SDK untuk PHP Versi 3
<a name="cf-examples"></a>

Amazon CloudFront adalah layanan AWS web yang mempercepat penyajian konten web statis dan dinamis dari server web atau server Anda sendiri, seperti Amazon S3. AWS CloudFront mengirimkan konten melalui jaringan pusat data di seluruh dunia yang disebut lokasi tepi. Saat pengguna meminta konten yang Anda distribusikan CloudFront, mereka diarahkan ke lokasi tepi yang memberikan latensi terendah. Jika konten belum di-cache di sana, CloudFront mengambil salinan dari server asal, menyajikannya, dan kemudian men-cache untuk permintaan future.

Untuk informasi selengkapnya CloudFront, lihat [Panduan CloudFront Pengembang Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

# Mengelola CloudFront distribusi Amazon menggunakan CloudFront API dan AWS SDK untuk PHP Versi 3
<a name="cloudfront-example-distribution"></a>

Amazon CloudFront menyimpan konten di lokasi edge di seluruh dunia untuk mempercepat distribusi file statis dan dinamis yang Anda simpan di server Anda sendiri, atau di layanan Amazon seperti Amazon S3 dan Amazon. EC2 Saat pengguna meminta konten dari situs web Anda, CloudFront layani dari lokasi tepi terdekat, jika file tersebut di-cache di sana. Jika tidak, CloudFront mengambil salinan file, menyajikannya, dan kemudian menyimpannya untuk permintaan berikutnya. Caching konten di lokasi tepi mengurangi latensi permintaan pengguna serupa di area tersebut.

Untuk setiap CloudFront distribusi yang Anda buat, Anda menentukan lokasi konten dan cara mendistribusikannya saat pengguna membuat permintaan. Topik ini berfokus pada distribusi untuk file statis dan dinamis seperti HTML, CSS, JSON, dan file gambar. F atau informasi tentang penggunaan CloudFront dengan video sesuai permintaan, lihat [On-Demand dan Live Streaming Video dengan CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/on-demand-streaming-video.html).

Contoh berikut menunjukkan cara:
+ Buat distribusi menggunakan [CreateDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createdistribution).
+ Dapatkan distribusi menggunakan [GetDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getdistribution).
+ Daftar distribusi menggunakan [ListDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listdistributions).
+ Perbarui distribusi menggunakan [UpdateDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#updatedistribution).
+ Nonaktifkan distribusi menggunakan [DisableDistribution](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#disabledistribution).
+ Hapus distribusi menggunakan [DeleteDistributions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#deletedistribution).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan Amazon CloudFront, lihat [Panduan CloudFront Pengembang Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Buat CloudFront distribusi
<a name="create-a-cf-distribution"></a>

Buat distribusi dari bucket Amazon S3. Dalam contoh berikut, parameter opsional dikomentari, tetapi nilai default ditampilkan. Untuk menambahkan penyesuaian ke distribusi Anda, batalkan komentar nilai dan parameter di dalamnya. `$distribution`

Untuk membuat CloudFront distribusi, gunakan [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Ambil distribusi CloudFront
<a name="retrieve-a-cf-distribution"></a>

Untuk mengambil status dan detail CloudFront distribusi tertentu, gunakan [GetDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Daftar CloudFront distribusi
<a name="list-cf-distributions"></a>

Dapatkan daftar CloudFront distribusi yang ada di AWS Wilayah yang ditentukan dari akun Anda saat ini menggunakan [ListDistributions](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributions.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Perbarui CloudFront distribusi
<a name="update-a-cf-distribution"></a>

Memperbarui CloudFront distribusi mirip dengan membuat distribusi. Namun, saat Anda memperbarui distribusi, lebih banyak bidang diperlukan dan semua nilai harus disertakan. Untuk membuat perubahan pada distribusi yang ada, sebaiknya Anda mengambil distribusi yang ada terlebih dahulu, dan memperbarui nilai yang ingin Anda ubah dalam `$distribution` array.

Untuk memperbarui CloudFront distribusi tertentu, gunakan [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)operasi.

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Nonaktifkan CloudFront distribusi
<a name="disable-a-cf-distribution"></a>

Untuk menonaktifkan atau menghapus distribusi, ubah statusnya dari disebarkan menjadi dinonaktifkan.

Untuk menonaktifkan CloudFront distribusi yang ditentukan, gunakan [DisableDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DisableDistribution.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Hapus CloudFront distribusi
<a name="delete-a-cf-distribution"></a>

Setelah distribusi dalam status dinonaktifkan, Anda dapat menghapus distribusi.

Untuk menghapus CloudFront distribusi tertentu, gunakan [DeleteDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_DeleteDistribution.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

# Mengelola CloudFront pembatalan Amazon menggunakan CloudFront API dan Versi 3 AWS SDK untuk PHP
<a name="cloudfront-example-invalidation"></a>

Amazon CloudFront menyimpan salinan file statis dan dinamis di lokasi edge di seluruh dunia. Untuk menghapus atau memperbarui file di semua lokasi tepi, buat pembatalan untuk setiap file atau untuk sekelompok file.

Setiap bulan kalender, 1.000 pembatalan pertama Anda gratis. Untuk mempelajari lebih lanjut tentang menghapus konten dari lokasi CloudFront tepi, lihat [Membatalkan File.](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html)

Contoh berikut menunjukkan cara:
+ Buat pembatalan distribusi menggunakan. [CreateInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#createinvalidation)
+ Dapatkan pembatalan distribusi menggunakan. [GetInvalidation](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#getinvalidation)
+ Daftar distribusi menggunakan [ListInvalidations](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-cloudfront-2018-11-05.html#listinvalidations).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan Amazon CloudFront, lihat [Panduan CloudFront Pengembang Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Buat pembatalan distribusi
<a name="create-a-distribution-invalidation"></a>

Buat CloudFront pembatalan distribusi dengan menentukan lokasi jalur untuk file yang perlu Anda hapus. Contoh ini membatalkan semua file dalam distribusi, tetapi Anda dapat mengidentifikasi file tertentu di bawah. `Items`

Untuk membuat pembatalan CloudFront distribusi, gunakan operasi. [CreateInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateInvalidation.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Dapatkan pembatalan distribusi
<a name="get-a-distribution-invalidation"></a>

Untuk mengambil status dan detail tentang pembatalan CloudFront distribusi, gunakan operasi. [GetInvalidation](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetInvalidation.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

## Daftar pembatalan distribusi
<a name="list-distribution-invalidations"></a>

Untuk mencantumkan semua CloudFront pembatalan distribusi saat ini, gunakan operasi. [ListInvalidations](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListInvalidations.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
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();
```

# Menandatangani Amazon CloudFront URLs dengan AWS SDK untuk PHP Versi 3
<a name="cloudfront-example-signed-url"></a>

Ditandatangani URLs memungkinkan Anda memberi pengguna akses ke konten pribadi Anda. URL yang ditandatangani mencakup informasi tambahan (misalnya, waktu kedaluwarsa) yang memberi Anda kontrol lebih besar atas akses ke konten Anda. Informasi tambahan ini muncul dalam pernyataan kebijakan, yang didasarkan pada kebijakan terekam atau kebijakan pabean. Untuk informasi tentang cara mengatur distribusi pribadi dan alasan Anda harus menandatangani URLs, lihat [Menayangkan Konten Pribadi melalui Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html) di Panduan CloudFront Pengembang Amazon.
+ Buat CloudFront URL Amazon yang ditandatangani menggunakan [getSignedurl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedUrl).
+ Buat CloudFront cookie Amazon yang ditandatangani menggunakan [getSignedCookie](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.CloudFront.CloudFrontClient.html#_getSignedCookie).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan Amazon CloudFront, lihat [Panduan CloudFront Pengembang Amazon](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/).

## Penandatanganan CloudFront URLs untuk distribusi pribadi
<a name="signing-cf-urls-for-private-distributions"></a>

Anda dapat menandatangani URL menggunakan CloudFront klien di SDK. Pertama, Anda harus membuat `CloudFrontClient` objek. Anda dapat menandatangani CloudFront URL untuk sumber daya video menggunakan kebijakan kalengan atau kustom.

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Menggunakan kebijakan kustom saat membuat CloudFront URLs
<a name="use-a-custom-policy-when-creating-cf-urls"></a>

Untuk menggunakan kebijakan kustom, berikan `policy` kunci sebagai gantinya`expires`.

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Menggunakan URL yang CloudFront ditandatangani
<a name="use-a-cf-signed-url"></a>

Bentuk URL yang ditandatangani berbeda, tergantung pada apakah URL yang Anda tandatangani menggunakan skema “HTTP” atau “RTMP”. Dalam kasus “HTTP”, URL lengkap dan absolut dikembalikan. Untuk “RTMP”, hanya URL relatif yang dikembalikan untuk kenyamanan Anda. Ini karena beberapa pemain memerlukan host dan jalur yang akan disediakan sebagai parameter terpisah.

Contoh berikut menunjukkan bagaimana Anda bisa menggunakan URL yang ditandatangani untuk membuat halaman web yang menampilkan video menggunakan. [JWPlayer](http://www.longtailvideo.com/jw-player/) Jenis teknik yang sama akan berlaku untuk pemain lain seperti [FlowPlayer](http://flowplayer.org/), tetapi memerlukan kode sisi klien yang berbeda.

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

## Menandatangani CloudFront cookie untuk distribusi pribadi
<a name="signing-cf-cookies-for-private-distributions"></a>

Sebagai alternatif untuk ditandatangani URLs, Anda juga dapat memberikan klien akses ke distribusi pribadi melalui cookie yang ditandatangani. Cookie yang ditandatangani memungkinkan Anda untuk menyediakan akses ke beberapa file terbatas, seperti semua file untuk video dalam format HLS atau semua file di area pelanggan situs web. Untuk informasi selengkapnya tentang alasan Anda mungkin ingin menggunakan cookie yang ditandatangani alih-alih ditandatangani URLs (atau sebaliknya), lihat [Memilih antara cookie yang ditandatangani URLs dan ditandatangani](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-choosing-signed-urls-cookies.html) di Panduan CloudFront Pengembang Amazon.

Membuat cookie yang ditandatangani mirip dengan membuat URL yang ditandatangani. Satu-satunya perbedaan adalah metode yang disebut (`getSignedCookie`bukan`getSignedUrl`).

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Gunakan kebijakan khusus saat membuat CloudFront cookie
<a name="use-a-custom-policy-when-creating-cf-cookies"></a>

Seperti halnya`getSignedUrl`, Anda dapat memberikan `'policy'` parameter alih-alih `expires` parameter dan `url` parameter untuk menandatangani cookie dengan kebijakan khusus. Kebijakan kustom dapat berisi wildcard di kunci sumber daya. Hal ini memungkinkan Anda untuk membuat satu cookie ditandatangani untuk beberapa file.

 `getSignedCookie`mengembalikan array pasangan kunci-nilai, yang semuanya harus ditetapkan sebagai cookie untuk memberikan akses ke distribusi pribadi.

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Kirim CloudFront cookie ke klien Guzzle
<a name="send-cf-cookies-to-guzzle-client"></a>

Anda juga dapat meneruskan cookie ini ke `GuzzleHttp\Cookie\CookieJar` untuk digunakan dengan klien Guzzle.

```
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');
```

Untuk informasi selengkapnya, lihat [Menggunakan Cookie yang Ditandatangani](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-signed-cookies.html) di Panduan CloudFront Pengembang Amazon.

# Menandatangani permintaan CloudSearch domain Amazon khusus dengan AWS SDK untuk PHP Versi 3
<a name="service_cloudsearch-custom-requests"></a>

Permintaan CloudSearch domain Amazon dapat disesuaikan di luar apa yang didukung oleh AWS SDK untuk PHP. [Jika Anda perlu membuat permintaan khusus ke domain yang dilindungi oleh autentikasi IAM, Anda dapat menggunakan penyedia kredensi dan penandatangan SDK untuk menandatangani permintaan PSR-7 apa pun.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html)

Misalnya, jika Anda mengikuti [panduan Memulai Cloud Search](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started.html) dan ingin menggunakan domain yang dilindungi IAM untuk [Langkah 3](https://docs.aws.amazon.com/cloudsearch/latest/developerguide/getting-started-search.html), Anda harus menandatangani dan menjalankan permintaan Anda sebagai berikut.

Contoh berikut menunjukkan cara:
+ Tanda tangani permintaan dengan protokol AWS penandatanganan menggunakan [SignatureV4](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Tanda tangani permintaan CloudSearch domain Amazon
<a name="sign-cslong-domain-request"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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 Contoh Amazon menggunakan AWS SDK untuk PHP Versi 3
<a name="cw-examples"></a>

Amazon CloudWatch (CloudWatch) adalah layanan web yang memantau sumber daya Amazon Web Services Anda dan aplikasi yang Anda jalankan AWS secara real time. Anda dapat menggunakan CloudWatch untuk mengumpulkan dan melacak metrik, yang merupakan variabel yang dapat Anda ukur untuk sumber daya dan aplikasi Anda. CloudWatch alarm mengirim pemberitahuan atau secara otomatis membuat perubahan pada sumber daya yang Anda pantau berdasarkan aturan yang Anda tetapkan.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

**Topics**
+ [Kredensial](#examplecredentials)
+ [Bekerja dengan CloudWatch alarm Amazon](cw-examples-work-with-alarms.md)
+ [Mendapatkan metrik dari CloudWatch](cw-examples-getting-metrics.md)
+ [Menerbitkan metrik khusus di Amazon CloudWatch](cw-examples-publishing-custom-metrics.md)
+ [Mengirim acara ke CloudWatch acara Amazon](cw-examples-sending-events.md)
+ [Menggunakan tindakan alarm dengan CloudWatch alarm Amazon](cw-examples-using-alarm-actions.md)

# Bekerja dengan CloudWatch alarm Amazon dengan AWS SDK untuk PHP Versi 3
<a name="cw-examples-work-with-alarms"></a>

 CloudWatch Alarm Amazon menonton satu metrik selama periode waktu yang Anda tentukan. Alarm tersebut melakukan satu atau beberapa tindakan berdasarkan nilai metrik yang relatif terhadap ambang batas tertentu selama beberapa periode waktu.

Contoh berikut menunjukkan cara:
+ Jelaskan alarm menggunakan [DescribeAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarms).
+ Buat alarm menggunakan [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).
+ Hapus alarm menggunakan [DeleteAlarms](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#deletealarms).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Mendeskripsikan alarm
<a name="describe-alarms"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

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

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Menghapus alarm
<a name="delete-alarms"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

# Mendapatkan metrik dari Amazon CloudWatch dengan AWS SDK untuk PHP Versi 3
<a name="cw-examples-getting-metrics"></a>

Metrik adalah data tentang performa sistem Anda. Anda dapat mengaktifkan pemantauan terperinci dari beberapa sumber daya, seperti EC2 instans Amazon Anda, atau metrik aplikasi Anda sendiri.

Contoh berikut menunjukkan cara:
+ Daftar metrik menggunakan [ListMetrics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#listmetrics).
+ Ambil alarm untuk menggunakan metrik. [DescribeAlarmsForMetric](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#describealarmsformetric)
+ Dapatkan statistik untuk metrik tertentu menggunakan [GetMetricStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#getmetricstatistics).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Membuat daftar metrik
<a name="list-metrics"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Ambil alarm untuk metrik
<a name="retrieve-alarms-for-a-metric"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Ambil statistik metrik
<a name="get-metric-statistics"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

# Menerbitkan metrik khusus di Amazon CloudWatch dengan AWS SDK untuk PHP Versi 3
<a name="cw-examples-publishing-custom-metrics"></a>

Metrik adalah data tentang performa sistem Anda. Alarm mengawasi satu metrik selama suatu periode waktu yang Anda tentukan. Ini melakukan satu atau lebih tindakan berdasarkan nilai metrik, relatif terhadap ambang batas yang diberikan selama sejumlah periode waktu.

Contoh berikut menunjukkan cara:
+ Publikasikan data metrik menggunakan [PutMetricData](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricdata).
+ Buat alarm menggunakan [PutMetricAlarm](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#putmetricalarm).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Publikasikan data metrik
<a name="publish-metric-data"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

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

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

# Mengirim acara ke CloudWatch Acara Amazon dengan AWS SDK untuk PHP Versi 3
<a name="cw-examples-sending-events"></a>

CloudWatch Acara memberikan aliran peristiwa sistem yang mendekati real-time yang menjelaskan perubahan sumber daya Amazon Web Services (AWS) ke salah satu dari berbagai target. Dengan menggunakan aturan sederhana, Anda dapat mencocokkan acara dan meruteknya ke satu atau beberapa fungsi atau aliran target.

Contoh berikut menunjukkan cara:
+ Buat aturan menggunakan [PutRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putrule).
+ Tambahkan target ke aturan menggunakan [PutTargets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#puttargets).
+ Kirim acara khusus ke CloudWatch Acara menggunakan [PutEvents](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-events-2015-10-07.html#putevents).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat aturan
<a name="create-a-rule"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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());
}
```

## Tambahkan target ke aturan
<a name="add-targets-to-a-rule"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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());
}
```

## Kirim peristiwa kustom
<a name="send-custom-events"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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());
}
```

# Menggunakan tindakan alarm dengan CloudWatch alarm Amazon dengan AWS SDK untuk PHP Versi 3
<a name="cw-examples-using-alarm-actions"></a>

Gunakan tindakan alarm untuk membuat alarm yang secara otomatis menghentikan, menghentikan, reboot, atau memulihkan instans Amazon EC2 Anda. Anda dapat menggunakan tindakan berhenti atau menghentikan saat Anda tidak lagi membutuhkan instance untuk dijalankan. Anda dapat menggunakan tindakan reboot dan memulihkan untuk secara otomatis me-reboot instance tersebut.

Contoh berikut menunjukkan cara:
+ Aktifkan tindakan untuk alarm tertentu menggunakan [EnableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#enablealarmactions).
+ Nonaktifkan tindakan untuk alarm tertentu menggunakan [DisableAlarmActions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#disablealarmactions).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Mengaktifkan tindakan alarm
<a name="enable-alarm-actions"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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();
```

## Menonaktifkan tindakan alarm
<a name="disable-alarm-actions"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
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 Contoh Amazon menggunakan AWS SDK untuk PHP Versi 3
<a name="ec2-examples"></a>

Amazon Elastic Compute Cloud (Amazon EC2) adalah layanan web yang menyediakan hosting server virtual di cloud. Ini dirancang untuk membuat komputasi awan skala web lebih mudah bagi pengembang dengan menyediakan kapasitas komputasi yang dapat diubah ukurannya.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

**Topics**
+ [Kredensial](#examplecredentials)
+ [Mengelola EC2 instans Amazon](ec2-examples-managing-instances.md)
+ [Menggunakan alamat IP Elastis](ec2-examples-using-elastic-ip-addresses.md)
+ [Menggunakan wilayah dan zona ketersediaan](ec2-examples-using-regions-and-zones.md)
+ [Bekerja dengan pasangan kunci](ec2-examples-working-with-key-pairs.md)
+ [Cara menggunakan grup keamanan](ec2-examples-using-security-groups.md)

# Mengelola EC2 instans Amazon menggunakan AWS SDK untuk PHP Versi 3
<a name="ec2-examples-managing-instances"></a>

Contoh berikut menunjukkan cara:
+ Jelaskan EC2 contoh Amazon menggunakan [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Aktifkan pemantauan terperinci untuk instance yang sedang berjalan menggunakan [MonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#monitorinstances).
+ Nonaktifkan pemantauan untuk instance yang sedang berjalan menggunakan [UnmonitorInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#unmonitorinstances).
+ Mulai AMI yang didukung Amazon EBS-Backed yang sebelumnya Anda hentikan, gunakan. [StartInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#startinstances)
+ Hentikan penggunaan instans yang didukung Amazon EBS. [StopInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#stopinstances)
+ Minta reboot dari satu atau beberapa instance menggunakan [RebootInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#rebootinstances).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Menjelaskan instans
<a name="describe-instances"></a>

 **Impor** 

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

use Aws\Ec2\Ec2Client;
```

 **Kode Sampel** 

```
$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";
    }
}
```

## Aktifkan dan nonaktifkan pemantauan
<a name="enable-and-disable-monitoring"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Memulai dan menghentikan sebuah instance
<a name="start-and-stop-an-instance"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Menyalakan ulang instans
<a name="reboot-an-instance"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

# Menggunakan alamat IP Elastis dengan Amazon EC2 dengan AWS SDK untuk PHP Versi 3
<a name="ec2-examples-using-elastic-ip-addresses"></a>

Alamat IP elastis adalah alamat IP statis yang dirancang untuk komputasi awan dinamis. Alamat IP Elastis dikaitkan dengan alamat IP Anda Akun AWS. Ini adalah alamat IP publik, yang dapat dijangkau dari internet. Jika instans Anda tidak memiliki alamat IP publik, Anda dapat mengaitkan alamat IP Elastis dengan instans Anda untuk mengaktifkan komunikasi dengan internet.

Contoh berikut menunjukkan cara:
+ Jelaskan satu atau lebih contoh Anda menggunakan [DescribeInstances](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeinstances).
+ Dapatkan alamat IP Elastis menggunakan [AllocateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#allocateaddress).
+ Kaitkan alamat IP Elastis dengan instance menggunakan [AssociateAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#associateaddress).
+ Lepaskan alamat IP Elastis menggunakan [ReleaseAddress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#releaseaddress).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Jelaskan sebuah contoh
<a name="describe-an-instance"></a>

 **Impor** 

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

use Aws\Ec2\Ec2Client;
```

 **Kode Sampel** 

```
$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";
    }
}
```

## Alokasikan dan kaitkan alamat
<a name="allocate-and-associate-an-address"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Lepaskan alamat
<a name="release-an-address"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

# Menggunakan wilayah dan zona ketersediaan untuk Amazon EC2 dengan AWS SDK untuk PHP Versi 3
<a name="ec2-examples-using-regions-and-zones"></a>

Amazon EC2 di-host di beberapa lokasi di seluruh dunia. Lokasi ini terdiri dari AWS Wilayah dan Zona Ketersediaan. Setiap Wilayah adalah wilayah geografis yang terpisah, dengan beberapa lokasi terisolasi yang dikenal sebagai Availability Zone. Amazon EC2 menyediakan kemampuan untuk menempatkan instance dan data di beberapa lokasi.

Contoh berikut menunjukkan cara:
+ Jelaskan Availability Zone yang tersedia untuk Anda gunakan [DescribeAvailabilityZones](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeavailabilityzones).
+ Jelaskan AWS Wilayah yang saat ini tersedia untuk Anda gunakan [DescribeRegions](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describeregions).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Jelaskan zona ketersediaan
<a name="describe-availability-zones"></a>

 **Impor** 

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

 **Kode Sampel** 

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

$result = $ec2Client->describeAvailabilityZones();

var_dump($result);
```

## Jelaskan wilayah
<a name="describe-regions"></a>

 **Impor** 

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

 **Kode Sampel** 

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

$result = $ec2Client->describeRegions();

var_dump($result);
```

# Bekerja dengan pasangan EC2 kunci Amazon dengan AWS SDK untuk PHP Versi 3
<a name="ec2-examples-working-with-key-pairs"></a>

Amazon EC2 menggunakan kriptografi kunci publik untuk mengenkripsi dan mendekripsi informasi login. Kriptografi kunci publik menggunakan kunci publik untuk mengenkripsi data. Kemudian penerima menggunakan kunci pribadi untuk mendekripsi data. Kunci publik dan privat dikenal sebagai pasangan kunci.

Contoh berikut menunjukkan cara:
+ Buat key pair RSA 2048-bit menggunakan. [CreateKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createkeypair)
+ Hapus key pair tertentu menggunakan [DeleteKeyPair](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletekeypair).
+ Jelaskan satu atau lebih pasangan kunci Anda menggunakan [DescribeKeyPairs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describekeypairs).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Membuat pasangan kunci
<a name="create-a-key-pair"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Hapus key pair
<a name="delete-a-key-pair"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Jelaskan pasangan kunci
<a name="describe-key-pairs"></a>

 **Impor** 

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

 **Kode Sampel** 

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

$result = $ec2Client->describeKeyPairs();

var_dump($result);
```

# Bekerja dengan grup keamanan di Amazon EC2 dengan AWS SDK untuk PHP Versi 3
<a name="ec2-examples-using-security-groups"></a>

Grup EC2 keamanan Amazon bertindak sebagai firewall virtual yang mengontrol lalu lintas untuk satu atau lebih contoh. Anda menambahkan aturan ke setiap grup keamanan untuk mengizinkan lalu lintas ke atau dari instans terkait. Anda dapat melakukan modifikasi terhadap aturan-aturan untuk grup keamanan kapan saja. Aturan baru diterapkan secara otomatis ke semua instance yang terkait dengan grup keamanan.

Contoh berikut menunjukkan cara:
+ Jelaskan satu atau beberapa kelompok keamanan Anda menggunakan [DescribeSecurityGroups](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#describesecuritygroups).
+ Tambahkan aturan ingress ke grup keamanan menggunakan [AuthorizeSecurityGroupIngress](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#authorizesecuritygroupingress).
+ Buat grup keamanan menggunakan [CreateSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#createsecuritygroup).
+ Hapus grup keamanan menggunakan [DeleteSecurityGroup](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#deletesecuritygroup).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Jelaskan kelompok keamanan
<a name="describe-security-groups"></a>

 **Impor** 

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

 **Kode Sampel** 

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

$result = $ec2Client->describeSecurityGroups();

var_dump($result);
```

## Tambahkan aturan masuk
<a name="add-an-ingress-rule"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

## Membuat grup keamanan
<a name="create-a-security-group"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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';
```

## Menghapus grup keamanan
<a name="delete-a-security-group"></a>

 **Impor** 

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

 **Kode Sampel** 

```
$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);
```

# Menandatangani permintaan pencarian OpenSearch Layanan Amazon dengan AWS SDK untuk PHP Versi 3
<a name="service_es-data-plane"></a>

Amazon OpenSearch Service adalah layanan terkelola yang memudahkan penerapan, pengoperasian, dan skala OpenSearch Layanan Amazon, pencarian sumber terbuka yang populer, dan mesin analitik. OpenSearch Layanan menawarkan akses langsung ke Amazon OpenSearch Service API. Ini berarti bahwa pengembang dapat menggunakan alat yang mereka kenal, serta opsi keamanan yang kuat. Banyak klien Amazon OpenSearch Service mendukung penandatanganan permintaan, tetapi jika Anda menggunakan klien yang tidak, Anda dapat menandatangani permintaan PSR-7 sewenang-wenang dengan penyedia kredensi bawaan dan penandatangan. AWS SDK untuk PHP

Contoh berikut menunjukkan cara:
+ Tanda tangani permintaan dengan protokol AWS penandatanganan menggunakan [SignatureV4](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Signature.SignatureV4.html#_signRequest).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Menandatangani permintaan OpenSearch Layanan
<a name="signing-an-es-request"></a>

OpenSearch Layanan menggunakan [Signature Versi 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). Ini berarti Anda harus menandatangani permintaan terhadap nama penandatanganan layanan (`es`, dalam hal ini) dan AWS Wilayah domain OpenSearch Layanan Anda. Daftar lengkap Wilayah yang didukung oleh OpenSearch Layanan dapat ditemukan [di halaman AWS Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html) di Referensi Umum Amazon Web. Namun, dalam contoh ini, kami menandatangani permintaan terhadap domain OpenSearch Layanan di `us-west-2` wilayah tersebut.

Anda harus memberikan kredensi, yang dapat Anda lakukan baik dengan rantai penyedia default SDK atau dengan segala bentuk kredensial yang dijelaskan dalam [Kredensial](guide_credentials.md) untuk Versi 3. AWS SDK untuk PHP Anda juga memerlukan [permintaan PSR-7](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.RequestInterface.html) (diasumsikan dalam kode di bawah ini untuk diberi nama`$psr7Request`).

```
// 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 contoh menggunakan AWS SDK untuk PHP Versi 3
<a name="iam-examples"></a>

AWS Identity and Access Management (IAM) adalah layanan web yang memungkinkan pelanggan Amazon Web Services untuk mengelola pengguna dan izin pengguna di. AWS Layanan ini ditargetkan pada organisasi dengan banyak pengguna atau sistem di cloud yang menggunakan AWS produk. Dengan IAM, Anda dapat mengelola pengguna secara terpusat, kredensi keamanan seperti kunci akses, dan izin yang mengontrol sumber daya mana AWS yang dapat diakses pengguna.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

**Topics**
+ [Kredensial](#examplecredentials)
+ [Mengelola kunci akses IAM](iam-examples-managing-access-keys.md)
+ [Mengelola pengguna IAM](iam-examples-managing-users.md)
+ [Menggunakan alias akun IAM](iam-examples-using-account-aliases.md)
+ [Bekerja dengan kebijakan IAM](iam-examples-working-with-policies.md)
+ [Bekerja dengan sertifikat server IAM](iam-examples-working-with-certs.md)

# Mengelola kunci akses IAM dengan AWS SDK untuk PHP Versi 3
<a name="iam-examples-managing-access-keys"></a>

Pengguna membutuhkan kunci akses mereka sendiri untuk melakukan panggilan terprogram. AWS Untuk memenuhi kebutuhan ini, Anda dapat membuat, memodifikasi, melihat, atau memutar kunci akses (kunci akses IDs dan kunci akses rahasia) untuk pengguna IAM. Secara default, saat Anda membuat kunci akses, statusnya adalah Aktif. Ini berarti pengguna dapat menggunakan kunci akses untuk panggilan API.

Contoh berikut menunjukkan cara:
+ Buat kunci akses rahasia dan ID kunci akses yang sesuai menggunakan [CreateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccesskey).
+ Mengembalikan informasi tentang kunci akses IDs yang terkait dengan pengguna IAM menggunakan [ListAccessKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccesskeys).
+ Mengambil informasi tentang kapan kunci akses terakhir digunakan [GetAccessKeyLastUsed](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getaccesskeylastused).
+ Ubah status kunci akses dari Aktif ke Tidak Aktif, atau sebaliknya, menggunakan [UpdateAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateaccesskey).
+ Hapus access key pair yang terkait dengan pengguna IAM menggunakan [DeleteAccessKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccesskey).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat kunci akses
<a name="create-an-access-key"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Daftar kunci akses
<a name="list-access-keys"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Mendapatkan informasi tentang penggunaan terakhir kunci akses
<a name="get-information-about-an-access-key-s-last-use"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Perbarui kunci akses
<a name="update-an-access-key"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Hapus kunci akses
<a name="delete-an-access-key"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

# Mengelola pengguna IAM dengan AWS SDK untuk PHP Versi 3
<a name="iam-examples-managing-users"></a>

Pengguna IAM adalah entitas yang Anda buat AWS untuk mewakili orang atau layanan yang menggunakannya untuk berinteraksi AWS. Seorang pengguna di AWS terdiri dari nama dan kredensi.

Contoh berikut menunjukkan cara:
+ Buat pengguna IAM baru menggunakan [CreateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createuser).
+ Daftar pengguna IAM menggunakan [ListUsers](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listusers).
+ Perbarui pengguna IAM menggunakan [UpdateUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateuser).
+ Mengambil informasi tentang pengguna IAM menggunakan. [GetUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getuser)
+ Hapus pengguna IAM menggunakan [DeleteUser](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuser).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Mmebuat pengguna IAM
<a name="create-an-iam-user"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Daftar pengguna IAM
<a name="list-iam-users"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Memperbarui pengguna IAM
<a name="update-an-iam-user"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Dapatkan informasi tentang pengguna IAM
<a name="get-information-about-an-iam-user"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Menghapus pengguna IAM
<a name="delete-an-iam-user"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

# Menggunakan alias akun IAM dengan Versi 3 AWS SDK untuk PHP
<a name="iam-examples-using-account-aliases"></a>

Jika Anda ingin URL untuk halaman login berisi nama perusahaan atau pengenal ramah lainnya, bukan Akun AWS ID Anda, Anda dapat membuat alias untuk ID Anda. Akun AWS Jika Anda membuat Akun AWS alias, URL halaman masuk Anda berubah untuk memasukkan alias.

Contoh berikut menunjukkan cara:
+ Buat alias menggunakan [CreateAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createaccountalias).
+ Buat daftar alias yang terkait dengan Akun AWS penggunaan [ListAccountAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listaccountaliases).
+ Hapus alias menggunakan [DeleteAccountAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteaccountalias).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Membuat alias
<a name="create-an-alias"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Daftar alias akun
<a name="list-account-aliases"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Hapus alias
<a name="delete-an-alias"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

# Bekerja dengan kebijakan IAM dengan AWS SDK untuk PHP Versi 3
<a name="iam-examples-working-with-policies"></a>

Anda memberikan izin kepada pengguna dengan membuat kebijakan. Kebijakan adalah dokumen yang mencantumkan tindakan yang dapat dilakukan pengguna dan sumber daya yang dapat memengaruhi tindakan tersebut. Secara default, tindakan atau sumber daya apa pun yang tidak diizinkan secara eksplisit ditolak. Kebijakan dapat dibuat dan dilampirkan ke pengguna, grup pengguna, peran yang diambil oleh pengguna, dan sumber daya.

Contoh berikut menunjukkan cara:
+ Buat kebijakan terkelola menggunakan [CreatePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#createpolicy).
+ Lampirkan kebijakan ke peran yang digunakan [AttachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachrolepolicy).
+ Lampirkan kebijakan ke pengguna yang menggunakan [AttachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachuserpolicy).
+ Lampirkan kebijakan ke grup yang menggunakan [AttachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#attachgrouppolicy).
+ Hapus kebijakan peran menggunakan [DetachRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachrolepolicy).
+ Hapus kebijakan pengguna menggunakan [DetachUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachuserpolicy).
+ Hapus kebijakan grup menggunakan [DetachGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#detachgrouppolicy).
+ Menghapus kebijakan terkelola menggunakan [DeletePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletepolicy).
+ Menghapus kebijakan peran menggunakan [DeleteRolePolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleterolepolicy).
+ Hapus kebijakan pengguna menggunakan [DeleteUserPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteuserpolicy).
+ Hapus kebijakan grup menggunakan [DeleteGroupPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deletegrouppolicy).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat kebijakan
<a name="create-a-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Lampirkan kebijakan ke peran
<a name="attach-a-policy-to-a-role"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Lampirkan kebijakan ke pengguna
<a name="attach-a-policy-to-a-user"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Lampirkan kebijakan ke grup
<a name="attach-a-policy-to-a-group"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Lepaskan kebijakan pengguna
<a name="detach-a-user-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Lepaskan kebijakan grup
<a name="detach-a-group-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Menghapus kebijakan
<a name="delete-a-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Menghapus kebijakan peran
<a name="delete-a-role-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Menghapus kebijakan pengguna
<a name="delete-a-user-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Menghapus kebijakan grup
<a name="delete-a-group-policy"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

# Bekerja dengan sertifikat server IAM dengan AWS SDK untuk PHP Versi 3
<a name="iam-examples-working-with-certs"></a>

Untuk mengaktifkan koneksi HTTPS ke situs web atau aplikasi Anda AWS, Anda memerlukan sertifikat SSL/TLS server. Untuk menggunakan sertifikat yang Anda peroleh dari penyedia eksternal dengan situs web atau aplikasi Anda AWS, Anda harus mengunggah sertifikat ke IAM atau mengimpornya ke dalam AWS Certificate Manager.

Contoh berikut menunjukkan cara:
+ Buat daftar sertifikat yang disimpan dalam IAM menggunakan [ListServerCertificates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#listservercertificates).
+ Ambil informasi tentang sertifikat yang menggunakan [GetServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#getservercertificate).
+ Perbarui sertifikat menggunakan [UpdateServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#updateservercertificate).
+ Hapus sertifikat menggunakan [DeleteServerCertificate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-iam-2010-05-08.html#deleteservercertificate).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Daftar sertifikat server
<a name="list-server-certificates"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Mengambil sertifikat server
<a name="retrieve-a-server-certificate"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Memperbarui sertifikat server
<a name="update-a-server-certificate"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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());
}
```

## Hapus sertifikat server
<a name="delete-a-server-certificate"></a>

 **Impor** 

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

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

 **Kode Sampel** 

```
$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 contoh menggunakan AWS SDK untuk PHP Versi 3
<a name="kms-examples"></a>

AWS Key Management Service (AWS KMS) adalah layanan terkelola yang memudahkan Anda membuat dan mengontrol kunci enkripsi yang digunakan untuk mengenkripsi data Anda. Untuk informasi selengkapnya AWS KMS, lihat [dokumentasi Amazon KMS](https://aws.amazon.com/documentation/kms/). Apakah Anda menulis aplikasi PHP yang aman atau mengirim data ke AWS layanan lain, AWS KMS membantu Anda mempertahankan kendali atas siapa yang dapat menggunakan kunci Anda dan mendapatkan akses ke data terenkripsi Anda.

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Bekerja dengan kunci](kms-example-keys.md)
+ [Mengenkripsi dan mendekripsi kunci data](kms-example-encrypt.md)
+ [Bekerja dengan kebijakan kunci](kms-example-key-policy.md)
+ [Bekerja dengan izin](kms-example-grants.md)
+ [Bekerja dengan alias](kms-example-alias.md)

# Bekerja dengan kunci menggunakan AWS KMS API dan AWS SDK untuk PHP Versi 3
<a name="kms-example-keys"></a>

Sumber daya utama di AWS Key Management Service (AWS KMS) adalah [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys). Anda dapat menggunakan kunci KMS untuk mengenkripsi data Anda.

Contoh berikut menunjukkan cara:
+ Buat kunci KMS pelanggan menggunakan [CreateKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createkey).
+ Hasilkan kunci data menggunakan [GenerateDataKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#generatedatakey).
+ Lihat tombol KMS menggunakan [DescribeKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#describekey).
+ Dapatkan kunci IDs dan kunci ARNS dari tombol KMS menggunakan. [ListKeys](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeys)
+ Aktifkan tombol KMS menggunakan [EnableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#enablekey).
+ Nonaktifkan tombol KMS menggunakan [DisableKey](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#disablekey).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Buat kunci KMS
<a name="create-a-cmk"></a>

Untuk membuat [kunci KMS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), gunakan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menghasilkan kunci data
<a name="generate-a-data-key"></a>

Untuk menghasilkan kunci enkripsi data, gunakan [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operasi. Operasi ini mengembalikan plaintext dan salinan terenkripsi dari kunci data yang dibuatnya. Tentukan AWS KMS key di bawah mana untuk menghasilkan kunci data.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Lihat kunci KMS
<a name="view-a-cmk"></a>

Untuk mendapatkan informasi terperinci tentang kunci KMS, termasuk Amazon Resource Name (ARN) kunci KMS dan [status kunci](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html), gunakan operasi. [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)

 `DescribeKey`tidak mendapatkan alias. Untuk mendapatkan alias, gunakan [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Dapatkan ID kunci dan kunci kunci ARNs KMS
<a name="get-the-key-id-and-key-arns-of-a-cmk"></a>

Untuk mendapatkan ID dan ARN dari kunci KMS, gunakan operasi. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Aktifkan kunci KMS
<a name="enable-a-cmk"></a>

Untuk mengaktifkan kunci KMS yang dinonaktifkan, gunakan [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Nonaktifkan tombol KMS
<a name="disable-a-cmk"></a>

Untuk menonaktifkan kunci KMS, gunakan [DisableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DisableKey.html)operasi. Menonaktifkan kunci KMS mencegahnya digunakan.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Mengenkripsi dan mendekripsi kunci AWS KMS data menggunakan Versi 3 AWS SDK untuk PHP
<a name="kms-example-encrypt"></a>

Kunci data adalah kunci enkripsi yang dapat Anda gunakan untuk mengenkripsi data, termasuk data dalam jumlah besar dan kunci enkripsi data lainnya.

Anda dapat menggunakan AWS Key Management Service an (AWS KMS) [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)untuk menghasilkan, mengenkripsi, dan mendekripsi kunci data.

Contoh berikut menunjukkan cara:
+ Enkripsi kunci data menggunakan [Encrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#encrypt).
+ [Dekripsi kunci data menggunakan Dekripsi.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#decrypt)
+ Enkripsi ulang kunci data dengan kunci KMS baru menggunakan. [ReEncrypt](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#reencrypt)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

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

Operasi [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) dirancang untuk mengenkripsi kunci data, tetapi tidak sering digunakan. [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)Operasi [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)dan mengembalikan kunci data terenkripsi. Anda dapat menggunakan `Encypt` metode ini saat memindahkan data terenkripsi ke AWS Wilayah baru dan ingin mengenkripsi kunci datanya dengan menggunakan kunci KMS di Wilayah baru.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

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

Untuk mendekripsi kunci data, gunakan operasi [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

`ciphertextBlob`Yang Anda tentukan harus menjadi nilai `CiphertextBlob` bidang dari [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), atau [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) respons.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Enkripsi ulang
<a name="reencrypt"></a>

Untuk mendekripsi kunci data terenkripsi, dan kemudian segera mengenkripsi ulang kunci data di bawah kunci KMS yang berbeda, gunakan operasi. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) Operasi dilakukan sepenuhnya di sisi server di dalam AWS KMS, sehingga mereka tidak pernah mengekspos plaintext Anda di luar. AWS KMS

`ciphertextBlob`Yang Anda tentukan harus menjadi nilai `CiphertextBlob` bidang dari [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), atau [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) respons.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Bekerja dengan kebijakan AWS KMS utama menggunakan AWS SDK untuk PHP Versi 3
<a name="kms-example-key-policy"></a>

Saat Anda membuat [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys), Anda menentukan siapa yang dapat menggunakan dan mengelola kunci KMS itu. Izin ini disertakan dalam dokumen yang disebut kebijakan kunci. Anda dapat menggunakan kebijakan kunci untuk menambah, menghapus, atau mengubah izin kapan saja untuk kunci KMS yang dikelola pelanggan, tetapi Anda tidak dapat mengedit kebijakan kunci untuk kunci KMS AWS terkelola. Untuk informasi selengkapnya, lihat [Otentikasi dan kontrol akses untuk AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html).

Contoh berikut menunjukkan cara:
+ Buat daftar nama-nama kebijakan utama yang menggunakan [ListKeyPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listkeypolicies).
+ Dapatkan kebijakan utama menggunakan [GetKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#getkeypolicy).
+ Tetapkan kebijakan kunci menggunakan [PutKeyPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#putkeypolicy).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Daftar semua kebijakan utama
<a name="list-all-key-policies"></a>

Untuk mendapatkan nama kebijakan kunci untuk kunci KMS, gunakan `ListKeyPolicies` operasi. 

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengambil kebijakan utama
<a name="retrieve-a-key-policy"></a>

Untuk mendapatkan kebijakan kunci untuk kunci KMS, gunakan `GetKeyPolicy` operasi.

 `GetKeyPolicy` memerlukan nama kebijakan. Kecuali Anda membuat kebijakan kunci saat membuat kunci KMS, satu-satunya nama kebijakan yang valid adalah default. Pelajari selengkapnya tentang [kebijakan kunci default](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) di *Panduan AWS Key Management Service Pengembang*.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menetapkan kebijakan utama
<a name="set-a-key-policy"></a>

Untuk membuat atau mengubah kebijakan kunci untuk kunci KMS, gunakan `PutKeyPolicy` operasi.

 `PutKeyPolicy` memerlukan nama kebijakan. Kecuali Anda membuat Kebijakan Kunci saat membuat kunci KMS, satu-satunya nama kebijakan yang valid adalah default. Pelajari selengkapnya tentang [kebijakan kunci default](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html) di *Panduan AWS Key Management Service Pengembang*.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Bekerja dengan hibah menggunakan AWS KMS API dan AWS SDK untuk PHP versi 3
<a name="kms-example-grants"></a>

Hibah adalah mekanisme lain untuk memberikan izin. Ini adalah alternatif dari kebijakan utama. Anda dapat menggunakan hibah untuk memberikan akses jangka panjang yang memungkinkan AWS prinsipal menggunakan () yang dikelola pelanggan Anda AWS Key Management Service .AWS KMS[AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys) Untuk informasi selengkapnya, lihat [Hibah AWS KMS di](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) *Panduan AWS Key Management Service Pengembang*.

Contoh berikut menunjukkan cara:
+ Buat hibah untuk menggunakan [CreateGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#creategrant)kunci KMS.
+ Lihat hibah untuk menggunakan [ListGrants](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listgrants)kunci KMS.
+ Pensiun hibah untuk menggunakan kunci KMS. [RetireGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#retiregrant)
+ Mencabut hibah untuk menggunakan kunci KMS. [RevokeGrant](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#revokegrant)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Buat hibah
<a name="create-a-grant"></a>

Untuk membuat hibah untuk AWS KMS key, gunakan [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Lihat izin
<a name="view-a-grant"></a>

Untuk mendapatkan informasi rinci tentang hibah pada AWS KMS key, gunakan [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Pensiun hibah
<a name="retire-a-grant"></a>

Untuk pensiun hibah untuk AWS KMS key, gunakan [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operasi. Pensiun hibah untuk membersihkan setelah Anda selesai menggunakannya.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mencabut hibah
<a name="revoke-a-grant"></a>

Untuk mencabut hibah ke AWS KMS key, gunakan operasi. [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) Anda dapat mencabut izin untuk secara eksplisit menolak operasi yang bergantung padanya.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Bekerja dengan alias menggunakan AWS KMS API dan AWS SDK untuk PHP Versi 3
<a name="kms-example-alias"></a>

AWS Key Management Service (AWS KMS) menyediakan nama tampilan opsional untuk yang [AWS KMS key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)disebut alias.

Contoh berikut menunjukkan cara:
+ Buat alias menggunakan [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#createalias).
+ Lihat alias menggunakan [ListAliases](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#listaliases).
+ Perbarui alias menggunakan [UpdateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#updatealias).
+ Hapus alias menggunakan [DeleteAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kms-2014-11-01.html#deletealias).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan AWS Key Management Service (AWS KMS), lihat [Panduan AWS KMS Pengembang](https://docs.aws.amazon.com/kms/latest/developerguide/).

## Membuat alias
<a name="create-an-alias"></a>

Untuk membuat alias untuk kunci KMS, gunakan operasi. [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) Alias harus unik di akun dan AWS Wilayah. Jika Anda membuat alias untuk kunci KMS yang sudah memiliki alias, `CreateAlias` buat alias lain ke kunci KMS yang sama. Itu tidak menggantikan alias yang ada.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Lihat alias
<a name="view-an-alias"></a>

Untuk daftar semua alias di pemanggil Akun AWS dan Wilayah AWS, gunakan operasi. [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Perbarui alias
<a name="update-an-alias"></a>

Untuk mengaitkan alias yang ada dengan kunci KMS yang berbeda, gunakan operasi. [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus alias
<a name="delete-an-alias"></a>

Untuk menghapus alias, gunakan [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)operasi. Menghapus alias tidak berpengaruh pada kunci KMS yang mendasarinya.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Contoh Amazon Kinesis menggunakan Versi 3 AWS SDK untuk PHP
<a name="kinesis-examples"></a>

Amazon Kinesis adalah AWS layanan yang mengumpulkan, memproses, dan menganalisis data secara real time. Konfigurasikan aliran data Anda dengan Amazon Kinesis Data Streams atau gunakan Amazon Data Firehose untuk mengirim data ke Amazon S3, OpenSearch Layanan, Amazon Redshift, atau Splunk.

Untuk informasi selengkapnya tentang Kinesis, lihat dokumentasi [Amazon Kinesis](https://docs.aws.amazon.com/kinesis/index.html).

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Aliran data Kinesis](kinesis-example-data-stream.md)
+ [Pecahan Kinesis](kinesis-example-shard.md)
+ [Aliran pengiriman Firehose Data Kinesis](kinesis-firehose-example-delivery-stream.md)

# Membuat aliran data menggunakan Kinesis Data Streams API dan Versi 3 AWS SDK untuk PHP
<a name="kinesis-example-data-stream"></a>

Amazon Kinesis Data Streams memungkinkan Anda mengirim data waktu nyata. Buat produsen data dengan Kinesis Data Streams yang mengirimkan data ke tujuan yang dikonfigurasi setiap kali Anda menambahkan data.

Untuk informasi selengkapnya, lihat [Membuat dan Mengelola Streaming](https://docs.aws.amazon.com/kinesis/latest/dev/working-with-streams.html.html) di Panduan Pengembang Amazon Kinesis.

Contoh berikut menunjukkan cara:
+ Buat aliran data menggunakan [CreateAlias](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#createstream).
+ Dapatkan detail tentang aliran data tunggal yang menggunakan [DescribeStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#describestream).
+ Daftar aliran data yang ada menggunakan [ListStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#liststreams).
+ Kirim data ke aliran data yang ada menggunakan [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#putrecord).
+ Hapus aliran data menggunakan [DeleteStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#deletestream).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang menggunakan Panduan Pengembang Amazon Kinesis, lihat Panduan Pengembang [Amazon Kinesis](https://docs.aws.amazon.com/kinesis/latest/dev/) Data Streams.

## Buat aliran data menggunakan aliran data Kinesis
<a name="create-a-data-stream-using-a-ak-data-stream"></a>

Buat aliran data Kinesis di mana Anda dapat mengirim informasi untuk diproses oleh Kinesis menggunakan contoh kode berikut. Pelajari selengkapnya tentang [Membuat dan Memperbarui Aliran Data](https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html) di Panduan Pengembang Amazon Kinesis.

Untuk membuat aliran data Kinesis, gunakan operasi. [CreateStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_CreateStream.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengambil aliran data
<a name="retrieve-a-data-stream"></a>

Dapatkan detail tentang aliran data yang ada menggunakan contoh kode berikut. Secara default, ini mengembalikan informasi tentang 10 pecahan pertama yang terhubung ke aliran data Kinesis yang ditentukan. Ingatlah untuk memeriksa `StreamStatus` dari respons sebelum menulis data ke aliran data Kinesis.

Untuk mengambil rincian tentang aliran data Kinesis tertentu, gunakan [DescribeStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DescribeStream.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat daftar aliran data yang ada yang terhubung ke Kinesis
<a name="list-existing-data-streams-that-are-connected-to-ak"></a>

Buat daftar 10 aliran data pertama dari Anda Akun AWS di AWS Wilayah yang dipilih. Gunakan yang dikembalikan ``HasMoreStreams` untuk menentukan apakah ada lebih banyak aliran yang terkait dengan akun Anda.

Untuk membuat daftar aliran data Kinesis Anda, gunakan operasi. [ListStreams](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListStreams.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengirim data ke aliran data yang ada
<a name="send-data-to-an-existing-data-stream"></a>

Setelah Anda membuat aliran data, gunakan contoh berikut untuk mengirim data. Sebelum mengirim data ke sana, gunakan `DescribeStream` untuk memeriksa `StreamStatus` apakah data aktif.

Untuk menulis catatan data tunggal ke aliran data Kinesis, gunakan operasi. [PutRecord](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) Untuk menulis hingga 500 catatan ke dalam aliran data Kinesis, gunakan operasi. [PutRecords](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecords.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menghapus aliran data
<a name="delete-a-data-stream"></a>

Contoh ini menunjukkan cara menghapus aliran data. Menghapus aliran data juga menghapus data apa pun yang Anda kirim ke aliran data. Aliran data Kinesis aktif beralih ke status DELETING hingga penghapusan aliran selesai. Saat dalam keadaan DELETING, aliran terus memproses data.

Untuk menghapus aliran data Kinesis, gunakan operasi. [DeleteStream](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_DeleteStream.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Mengelola pecahan data menggunakan Kinesis Data Streams API dan Versi 3 AWS SDK untuk PHP
<a name="kinesis-example-shard"></a>

Amazon Kinesis Data Streams memungkinkan Anda mengirim data real-time ke titik akhir. Laju aliran data tergantung pada jumlah pecahan dalam aliran Anda.

Anda dapat menulis 1.000 catatan per detik ke satu pecahan. Setiap shard juga memiliki batas upload 1 MiB per detik. Penggunaan dihitung dan dibebankan pada basis per-shard, jadi gunakan contoh ini untuk mengelola kapasitas data dan biaya streaming Anda.

Contoh berikut menunjukkan cara:
+ Buat daftar pecahan dalam aliran menggunakan [ListShards](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#listshards).
+ Tambahkan atau kurangi jumlah pecahan dalam aliran menggunakan [UpdateShardCount](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-kinesis-1913-12-02.html#updateshardcount).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon Kinesis Data Streams, [lihat Panduan Pengembang Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/).

## Daftar pecahan aliran data
<a name="list-data-stream-shards"></a>

Buat daftar detail hingga 100 pecahan dalam aliran tertentu.

Untuk membuat daftar pecahan dalam aliran data Kinesis, gunakan [ListShards](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Tambahkan lebih banyak pecahan aliran data
<a name="add-more-data-stream-shards"></a>

Jika Anda membutuhkan lebih banyak pecahan aliran data, Anda dapat meningkatkan jumlah pecahan Anda saat ini. Kami menyarankan Anda menggandakan jumlah pecahan Anda saat meningkatkan. Ini membuat salinan setiap pecahan saat ini tersedia untuk meningkatkan kapasitas Anda. Anda dapat menggandakan jumlah pecahan Anda hanya dua kali dalam satu periode 24 jam.

Ingatlah bahwa penagihan untuk penggunaan Kinesis Data Streams dihitung per shard, jadi ketika permintaan menurun, kami sarankan Anda mengurangi jumlah pecahan hingga setengahnya. Saat Anda menghapus pecahan, Anda hanya dapat menurunkan jumlah pecahan menjadi setengah dari jumlah pecahan Anda saat ini.

Untuk memperbarui jumlah pecahan aliran data Kinesis, gunakan [UpdateShardCount](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_UpdateShardCount.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Membuat aliran pengiriman menggunakan Firehose API dan Versi 3 AWS SDK untuk PHP
<a name="kinesis-firehose-example-delivery-stream"></a>

Amazon Data Firehose memungkinkan Anda mengirim data real-time ke AWS layanan lain termasuk Amazon Kinesis Data Streams, Amazon S3, Layanan Amazon (OpenSearch Layanan), dan OpenSearch Amazon Redshift, atau ke Splunk. Buat produsen data dengan aliran pengiriman untuk mengirimkan data ke tujuan yang dikonfigurasi setiap kali Anda menambahkan data.

Contoh berikut menunjukkan cara:
+ Buat aliran pengiriman menggunakan [CreateDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#createdeliverystream).
+ Dapatkan detail tentang aliran pengiriman tunggal menggunakan [DescribeDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#describedeliverystream).
+ Buat daftar aliran pengiriman Anda menggunakan [ListDeliveryStreams](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#listdeliverystreams).
+ Kirim data ke aliran pengiriman menggunakan [PutRecord](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#putrecord).
+ Hapus aliran pengiriman menggunakan [DeleteDeliveryStream](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-firehose-2015-08-04.html#deletedeliverystream).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon Data Firehose, lihat Panduan Pengembang [Amazon Kinesis](https://docs.aws.amazon.com/streams/latest/dev/) Data Firehose.

## Buat aliran pengiriman menggunakan aliran data Kinesis
<a name="create-a-delivery-stream-using-a-ak-data-stream"></a>

Untuk membuat aliran pengiriman yang menempatkan data ke dalam aliran data Kinesis yang ada, gunakan operasi. [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)

Hal ini memungkinkan pengembang untuk memigrasikan layanan Kinesis yang ada ke Firehose.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat aliran pengiriman menggunakan bucket Amazon S3
<a name="create-a-delivery-stream-using-an-s3-bucket"></a>

Untuk membuat aliran pengiriman yang menempatkan data ke dalam bucket Amazon S3 yang ada, gunakan operasi. [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)

Berikan parameter tujuan, seperti yang dijelaskan dalam [Parameter Tujuan](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). Kemudian pastikan Anda memberikan akses Firehose ke bucket Amazon S3, seperti yang dijelaskan [dalam Berikan Akses Firehose Data Kinesis ke](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-s3.html) Tujuan Amazon S3.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat aliran pengiriman menggunakan OpenSearch Layanan
<a name="create-a-delivery-stream-using-es"></a>

Untuk membuat aliran pengiriman Firehose yang menempatkan data ke dalam kluster OpenSearch Layanan, gunakan operasi. [CreateDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html)

Berikan parameter tujuan, seperti yang dijelaskan dalam [Parameter Tujuan](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html). Pastikan Anda memberikan akses Firehose ke kluster OpenSearch Layanan, seperti yang dijelaskan dalam [Berikan Akses Firehose Data Kinesis ke](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html#using-iam-es.html) Tujuan Amazon ES.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengambil aliran pengiriman
<a name="retrieve-a-delivery-stream"></a>

Untuk mendapatkan detail tentang aliran pengiriman Firehose yang ada, gunakan operasi. [DescribeDeliveryStream](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DescribeDeliveryStream.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat daftar aliran pengiriman yang ada yang terhubung ke Kinesis Data Streams
<a name="list-existing-delivery-streams-connected-to-aks"></a>

Untuk mencantumkan semua aliran pengiriman Firehose yang ada yang mengirim data ke Kinesis Data Streams, gunakan operasi. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat daftar aliran pengiriman yang ada yang mengirim data ke layanan lain AWS
<a name="list-existing-delivery-streams-sending-data-to-other-aws-services"></a>

Untuk mencantumkan semua aliran pengiriman Firehose yang ada yang mengirim data ke Amazon S3, Layanan, OpenSearch atau Amazon Redshift, atau ke Splunk, gunakan operasi. [ListDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_ListDeliveryStreams.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Kirim data ke aliran pengiriman Firehose yang ada
<a name="send-data-to-an-existing-akf-delivery-stream"></a>

Untuk mengirim data melalui aliran pengiriman Firehose ke tujuan yang Anda tentukan, gunakan [PutRecord](https://docs.aws.amazon.com/firehose/latest/APIReference/API_API_PutRecord.html)operasi setelah Anda membuat aliran pengiriman Firehose.

Sebelum mengirim data ke aliran pengiriman Firehose, gunakan `DescribeDeliveryStream` untuk melihat apakah aliran pengiriman aktif.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menghapus aliran pengiriman Firehose
<a name="delete-a-akf-delivery-stream"></a>

Untuk menghapus aliran pengiriman Firehose, gunakan operasi. [DeleteDeliveryStreams](https://docs.aws.amazon.com/firehose/latest/APIReference/API_DeleteDeliveryStreams.html) Ini juga menghapus data apa pun yang telah Anda kirim ke aliran pengiriman.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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 contoh menggunakan AWS SDK untuk PHP Versi 3
<a name="emc-examples"></a>

AWS Elemental MediaConvert adalah layanan transcoding video berbasis file dengan fitur tingkat siaran. Anda dapat menggunakannya untuk membuat aset untuk siaran dan untuk pengiriman video-on-demand (VOD) di internet. Untuk informasi selengkapnya, silakan lihat [Panduan Pengguna AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/).

PHP API untuk AWS Elemental MediaConvert diekspos melalui kelas *`AWS.MediaConvert`*klien. Untuk informasi selengkapnya, lihat [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)di referensi API.

## Buat dan kelola pekerjaan transcoding di AWS Elemental MediaConvert
<a name="emc-examples-jobs"></a>

Dalam contoh ini, Anda menggunakan AWS SDK untuk PHP Versi 3 untuk memanggil AWS Elemental MediaConvert dan membuat pekerjaan transcoding. Sebelum memulai, Anda perlu mengunggah video input ke bucket Amazon S3 yang Anda sediakan untuk penyimpanan input. [Untuk daftar codec dan kontainer video masukan yang didukung, lihat Codec dan Container [Input yang Didukung di Panduan Pengguna](https://docs.aws.amazon.com/mediaconvert/latest/ug/reference-codecs-containers-input.html).AWS Elemental MediaConvert](https://docs.aws.amazon.com/mediaconvert/latest/ug/)

Contoh berikut menunjukkan cara:
+ Buat pekerjaan transcoding di AWS Elemental MediaConvert. [CreateJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#createjob).
+ Batalkan pekerjaan transcoding dari AWS Elemental MediaConvert antrian. [CancelJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#canceljob) 
+ Ambil JSON untuk pekerjaan transcoding yang selesai. [GetJob](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#getjob) 
+ Ambil array JSON hingga 20 pekerjaan yang paling baru dibuat. [ListJobs](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-mediaconvert-2017-08-29.html#listjobs) 

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk mengakses MediaConvert klien, buat peran IAM yang memberikan AWS Elemental MediaConvert akses ke file input Anda dan bucket Amazon S3 tempat file output Anda disimpan. Untuk detailnya, lihat [Mengatur Izin IAM](https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html) di [AWS Elemental MediaConvert Panduan Pengguna](https://docs.aws.amazon.com/mediaconvert/latest/ug/).

### Buat klien
<a name="create-a-client"></a>

Konfigurasikan AWS SDK untuk PHP dengan membuat MediaConvert klien, dengan wilayah untuk kode Anda. Dalam contoh ini, wilayah diatur ke us-west-2.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\MediaConvert\MediaConvertClient;
```

 **Kode Sampel** 

```
$mediaConvertClient = new MediaConvertClient([
    'version' => '2017-08-29',
    'region' => 'us-east-2',
    'profile' => 'default'
]);
```

### Mendefinisikan pekerjaan transcoding sederhana
<a name="defining-a-simple-transcoding-job"></a>

Buat JSON yang mendefinisikan parameter pekerjaan transcode.

Parameter ini dirinci. Anda dapat menggunakan [AWS Elemental MediaConvert konsol](https://console.aws.amazon.com/mediaconvert/home) untuk menghasilkan parameter pekerjaan JSON dengan memilih pengaturan pekerjaan di konsol, lalu memilih **Tampilkan pekerjaan JSON** di bagian bawah bagian **Job**. Contoh ini menunjukkan JSON untuk pekerjaan sederhana.

 **Kode Sampel** 

```
$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"
    ]
];
```

### Buat pekerjaan
<a name="create-a-job"></a>

Setelah membuat parameter pekerjaan JSON, panggil metode createJob dengan menjalankan`AWS.MediaConvert service object`, dan meneruskan parameter. ID pekerjaan yang dibuat dikembalikan dalam data respons.

 **Kode Sampel** 

```
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";
}
```

### Ambil pekerjaan
<a name="retrieve-a-job"></a>

Dengan JoBid yang dikembalikan saat Anda menelepon createjob, Anda bisa mendapatkan deskripsi rinci tentang pekerjaan terbaru dalam format JSON.

 **Kode Sampel** 

```
$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";
}
```

### Membatalkan tugas
<a name="cancel-a-job"></a>

Dengan JoBid dikembalikan saat Anda menelepon createjob, Anda dapat membatalkan pekerjaan saat masih dalam antrian. Anda tidak dapat membatalkan pekerjaan yang sudah mulai melakukan transcoding.

 **Kode Sampel** 

```
$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";
}
```

### Daftar pekerjaan transcoding terbaru
<a name="listing-recent-transcoding-jobs"></a>

Buat parameter JSON, termasuk nilai untuk menentukan apakah akan mengurutkan daftar dalam urutan ASCENDING, atau DESCENDING, ARN antrian pekerjaan yang akan diperiksa, dan status pekerjaan yang akan disertakan. Ini mengembalikan hingga 20 Pekerjaan. Untuk mengambil 20 pekerjaan terbaru berikutnya, gunakan string NextToken yang dikembalikan dengan hasil.

 **Kode Sampel** 

```
$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";
}
```

# Contoh Amazon S3 menggunakan Versi 3 AWS SDK untuk PHP
<a name="s3-examples"></a>

Amazon Simple Storage Service (Amazon S3) adalah layanan web yang menyediakan penyimpanan cloud yang sangat skalabel. Amazon S3 menyediakan penyimpanan objek yang mudah digunakan, dengan antarmuka layanan web sederhana untuk menyimpan dan mengambil sejumlah data dari mana saja di web.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

**Topics**
+ [Kredensial](#examplecredentials)
+ [Membuat dan menggunakan bucket Amazon S3](s3-examples-creating-buckets.md)
+ [Mengelola izin akses bucket Amazon S3](s3-examples-access-permissions.md)
+ [Mengkonfigurasi bucket Amazon S3](s3-examples-configuring-a-bucket.md)
+ [Unggahan multipart Amazon S3](s3-multipart-upload.md)
+ [URL Amazon S3 yang telah ditandatangani sebelumnya](s3-presigned-url.md)
+ [Membuat S3 pra-ditandatangani POSTs](s3-presigned-post.md)
+ [Menggunakan bucket Amazon S3 sebagai host web statis](s3-examples-static-web-host.md)
+ [Bekerja dengan kebijakan bucket Amazon S3](s3-examples-bucket-policies.md)
+ [Menggunakan titik akses S3 ARNs](s3-examples-access-point-arn.md)
+ [Gunakan Titik Akses Multi-Wilayah](s3-multi-region-access-points.md)

# Membuat dan menggunakan bucket Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-examples-creating-buckets"></a>

Contoh berikut menunjukkan cara:
+ Kembalikan daftar bucket yang dimiliki oleh pengirim permintaan yang diautentikasi menggunakan. [ListBuckets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#listbuckets)
+ Buat ember baru menggunakan [CreateBucket](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createbucket).
+ Tambahkan objek ke ember menggunakan [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

 **Impor** 

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

use Aws\S3\S3Client;
```

## Buat daftar bucket
<a name="list-buckets"></a>

Buat file PHP dengan kode berikut. Pertama buat layanan klien AWS.S3 yang menentukan Wilayah dan versi. AWS Kemudian panggil `listBuckets` metode, yang mengembalikan semua bucket Amazon S3 yang dimiliki oleh pengirim permintaan sebagai larik struktur Bucket.

 **Kode Sampel** 

```
$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";
}
```

## Membuat bucket
<a name="create-a-bucket"></a>

Buat file PHP dengan kode berikut. Pertama buat layanan klien AWS.S3 yang menentukan Wilayah dan versi. AWS Kemudian panggil `createBucket` metode dengan array sebagai parameter. Satu-satunya bidang wajib adalah kunci 'Bucket', dengan nilai string untuk nama bucket yang akan dibuat. Namun, Anda dapat menentukan AWS Wilayah dengan bidang CreateBucketConfiguration ''. Jika berhasil, metode ini mengembalikan 'Lokasi' bucket.

 **Kode Sampel** 

```
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();
```

## Masukkan benda ke dalam ember
<a name="put-an-object-in-a-bucket"></a>

Untuk menambahkan file ke bucket baru Anda, buat file PHP dengan kode berikut.

Di baris perintah Anda, jalankan file ini dan teruskan nama bucket tempat Anda ingin mengunggah file Anda sebagai string, diikuti oleh jalur file lengkap ke file yang akan diunggah.

 **Kode Sampel** 

```
$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";
}
```

# Mengelola izin akses bucket Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-examples-access-permissions"></a>

Daftar kontrol akses (ACLs) adalah salah satu opsi kebijakan akses berbasis sumber daya yang dapat Anda gunakan untuk mengelola akses ke bucket dan objek Anda. Anda dapat menggunakan ACLs untuk memberikan read/write izin dasar ke AWS akun lain. Untuk mempelajari lebih lanjut, lihat [Mengelola Akses dengan ACLs](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).

Contoh berikut menunjukkan cara:
+ Dapatkan kebijakan kontrol akses untuk bucket yang digunakan [GetBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketacl).
+ Setel izin pada ember menggunakan ACLs, menggunakan [PutBucketAcl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketacl).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Mendapatkan dan menetapkan kebijakan daftar kontrol akses
<a name="get-and-set-an-access-control-list-policy"></a>

 **Impor** 

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

use Aws\S3\S3Client;  
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
// 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";
}
```

# Mengonfigurasi bucket Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-examples-configuring-a-bucket"></a>

Cross-origin resource sharing (CORS) menentukan cara aplikasi web klien yang dimuat di dalam satu domain untuk berinteraksi dengan sumber daya di domain yang berbeda. Dengan dukungan CORS di Amazon S3, Anda dapat membuat aplikasi web sisi klien yang kaya dengan Amazon S3 dan secara selektif mengizinkan akses lintas asal ke sumber daya Amazon S3 Anda.

Untuk informasi selengkapnya tentang penggunaan konfigurasi CORS dengan bucket Amazon S3, [lihat Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (CORS).

Contoh berikut menunjukkan cara:
+ Dapatkan konfigurasi CORS untuk menggunakan [GetBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketcors)bucket.
+ Atur konfigurasi CORS untuk bucket menggunakan [PutBucketCors](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketcors).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Dapatkan konfigurasi CORS
<a name="get-the-cors-configuration"></a>

Buat file PHP dengan kode berikut. Pertama buat layanan klien AWS.S3, lalu panggil `getBucketCors` metode dan tentukan bucket yang konfigurasi CORS yang Anda inginkan.

Satu-satunya parameter yang diperlukan adalah nama bucket yang dipilih. [Jika bucket saat ini memiliki konfigurasi CORS, konfigurasi tersebut dikembalikan oleh Amazon S3 sebagai CORSRules objek.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule)

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
$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());
}
```

## Atur konfigurasi CORS
<a name="set-the-cors-configuration"></a>

Buat file PHP dengan kode berikut. Pertama buat layanan klien AWS.S3. Kemudian panggil `putBucketCors` metode dan tentukan bucket yang konfigurasi CORS untuk disetel, dan CORSConfiguration sebagai objek [CORSRules JSON](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#shape-corsrule).

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
$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());
}
```

# Menggunakan unggahan multipart Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-multipart-upload"></a>

Dengan satu `PutObject` operasi, Anda dapat mengunggah objek hingga 5 GB. Namun, dengan menggunakan metode upload multipart (misalnya,,, `CreateMultipartUpload``UploadPart`,`AbortMultipartUpload`)`CompleteMultipartUpload`, Anda dapat mengunggah objek dari ukuran 5 MB hingga 5 TB.

Contoh berikut menunjukkan cara:
+ Unggah objek ke Amazon S3, menggunakan. [ObjectUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectUploader.html)
+ Buat unggahan multibagian untuk objek Amazon S3 menggunakan. [MultipartUploader](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.MultipartUploader.html)
+ Salin objek dari satu lokasi Amazon S3 ke lokasi lain menggunakan. [ObjectCopier](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.ObjectCopier.html)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Pengunggah objek
<a name="object-uploader"></a>

Jika Anda tidak yakin apakah `PutObject` atau `MultipartUploader` yang terbaik untuk tugas itu, gunakan`ObjectUploader`. `ObjectUploader`mengunggah file besar ke Amazon S3 menggunakan `PutObject` salah satu `MultipartUploader` atau, berdasarkan ukuran payload.

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

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\ObjectUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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);
```

### Konfigurasi
<a name="object-uploader-configuration"></a>

Konstruktor `ObjectUploader` objek menerima argumen berikut:

**`$client`**  
`Aws\ClientInterface`Objek yang digunakan untuk melakukan transfer. Ini harus menjadi contoh dari`Aws\S3\S3Client`.

**`$bucket`**  
(`string`, *wajib*) Nama ember tempat objek diunggah.

**`$key`**  
(`string`, *wajib*) Kunci yang akan digunakan untuk objek yang sedang diunggah.

**`$body`**  
(`mixed`, *wajib*) Data objek untuk diunggah. Bisa berupa`StreamInterface`, sumber daya aliran PHP, atau string data untuk diunggah.

**`$acl`**  
(`string`) Daftar kontrol akses (ACL) untuk mengatur objek yang sedang diunggah. Objek bersifat pribadi secara default.

**`$options`**  
Array asosiatif opsi konfigurasi untuk unggahan multipart. Opsi konfigurasi berikut valid:    
**`add_content_md5`**  
(`bool`) Setel ke true untuk secara otomatis menghitung MD5 checksum untuk unggahan.  
**`mup_threshold`**  
(`int`, *default*:`int(16777216)`) Jumlah byte untuk ukuran file. Jika ukuran file melebihi batas ini, unggahan multibagian digunakan.  
**`before_complete`**  
(`callable`) Callback untuk memanggil sebelum operasi. `CompleteMultipartUpload` Callback harus memiliki tanda tangan fungsi yang mirip dengan:`function (Aws\Command $command) {...}`. Lihat [referensi CompleteMultipartUpload API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#completemultipartupload) untuk parameter yang dapat Anda tambahkan ke `CommandInterface` objek.  
**`before_initiate`**  
(`callable`) Callback untuk memanggil sebelum operasi. `CreateMultipartUpload` Callback harus memiliki tanda tangan fungsi yang mirip dengan:`function (Aws\Command $command) {...}`. SDK memanggil callback ini jika ukuran file melebihi nilai. `mup_threshold` Lihat [referensi CreateMultipartUpload API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#createmultipartupload) untuk parameter yang dapat Anda tambahkan ke `CommandInterface` objek.  
**`before_upload`**  
(`callable`) Panggilan balik untuk memanggil sebelum operasi apa pun `PutObject` atau`UploadPart`. Callback harus memiliki tanda tangan fungsi yang mirip dengan:`function (Aws\Command $command) {...}`. SDK memanggil callback ini jika ukuran file kurang dari atau sama dengan nilai. `mup_threshold` Lihat [referensi PutObject API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject) untuk parameter yang dapat Anda terapkan pada `PutObject` permintaan. Untuk parameter yang berlaku untuk `UploadPart` permintaan, lihat [referensi UploadPart API](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#uploadpart). SDK mengabaikan parameter apa pun yang tidak berlaku untuk operasi yang diwakili oleh objek. `CommandInterface`  
**`concurrency`**  
(`int`, *default*:`int(3)`) Jumlah maksimum `UploadPart` operasi bersamaan yang diizinkan selama pengunggahan multibagian.  
**`part_size`**  
(`int`, *default*:`int(5242880)`) Ukuran bagian, dalam byte, untuk digunakan saat melakukan pengunggahan multibagian. Nilai harus antara 5 MB dan 5 GB, inklusif.  
**`state`**  
(`Aws\Multipart\UploadState`) Objek yang mewakili status unggahan multibagian dan yang digunakan untuk melanjutkan unggahan sebelumnya. Ketika opsi ini disediakan, `$key` argumen `$bucket` and dan `part_size` opsi diabaikan.  
**`params`**  
Array asosiatif yang menyediakan opsi konfigurasi untuk setiap subperintah. Contoh:  

```
new ObjectUploader($bucket, $key, $body, $acl, ['params' => ['CacheControl' => <some_value>])
```

## MultipartUploader
<a name="multipartuploader"></a>

Unggahan multipart dirancang untuk meningkatkan pengalaman mengunggah objek yang lebih besar. Mereka memungkinkan Anda untuk mengunggah objek dalam beberapa bagian secara independen, dalam urutan apa pun, dan secara paralel.

Pelanggan Amazon S3 didorong untuk menggunakan unggahan multipart untuk objek yang lebih besar dari 100 MB.

## MultipartUploader objek
<a name="multipartuploader-object"></a>

SDK memiliki `MultipartUploader` objek khusus yang menyederhanakan proses upload multipart.

 **Impor** 

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

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
$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";
}
```

Pengunggah membuat generator data bagian, berdasarkan sumber dan konfigurasi yang disediakan, dan mencoba mengunggah semua bagian. Jika beberapa bagian unggahan gagal, pengunggah terus mengunggah bagian selanjutnya hingga seluruh data sumber dibaca. Setelah itu, pengunggah mencoba lagi untuk mengunggah bagian yang gagal atau melempar pengecualian yang berisi informasi tentang bagian yang gagal diunggah.

## Menyesuaikan unggahan multipart
<a name="customizing-a-multipart-upload"></a>

Anda dapat mengatur opsi kustom pada`CreateMultipartUpload`,`UploadPart`, dan `CompleteMultipartUpload` operasi yang dijalankan oleh pengunggah multibagian melalui panggilan balik yang diteruskan ke konstruktornya.

 **Impor** 

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

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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';
    },
]);
```

### Pengumpulan sampah manual antara unggahan bagian
<a name="manual-garbage-collection-between-part-uploads"></a>

Jika Anda mencapai batas memori dengan unggahan besar, ini mungkin karena referensi siklik yang dihasilkan oleh SDK belum dikumpulkan oleh [pengumpul sampah PHP](https://www.php.net/manual/en/features.gc.php) ketika batas memori Anda tercapai. Memanggil algoritme pengumpulan secara manual di antara operasi memungkinkan siklus dikumpulkan sebelum mencapai batas itu. Contoh berikut memanggil algoritma koleksi menggunakan callback sebelum setiap bagian diunggah. Perhatikan bahwa memanggil pengumpul sampah memang datang dengan biaya kinerja, dan penggunaan optimal akan tergantung pada kasus penggunaan dan lingkungan Anda.

```
$uploader = new MultipartUploader($client, $source, [
   'bucket' => 'your-bucket',
   'key' => 'your-key',
   'before_upload' => function(\Aws\Command $command) {
      gc_collect_cycles();
   }
]);
```

## Memulihkan dari kesalahan
<a name="recovering-from-errors"></a>

Ketika terjadi kesalahan selama proses pengunggahan multipart, a `MultipartUploadException` dilemparkan. Pengecualian ini menyediakan akses ke `UploadState` objek, yang berisi informasi tentang kemajuan unggahan multibagian. `UploadState`Dapat digunakan untuk melanjutkan unggahan yang gagal diselesaikan.

 **Impor** 

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

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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);
}
```

Melanjutkan unggahan dari `UploadState` upaya untuk mengunggah bagian yang belum diunggah. Objek negara melacak bagian yang hilang, bahkan jika mereka tidak berurutan. Pengunggah membaca atau mencari melalui file sumber yang disediakan ke rentang byte milik bagian yang masih perlu diunggah.

 `UploadState`objek dapat diserialkan, sehingga Anda juga dapat melanjutkan unggahan dalam proses yang berbeda. Anda juga bisa mendapatkan `UploadState` objek, bahkan ketika Anda tidak menangani pengecualian, dengan menelepon`$uploader->getState()`.

**penting**  
Aliran yang diteruskan sebagai sumber ke a tidak `MultipartUploader` diputar ulang secara otomatis sebelum mengunggah. Jika Anda menggunakan aliran alih-alih jalur file dalam loop yang mirip dengan contoh sebelumnya, setel ulang `$source` variabel di dalam `catch` blok.

 **Impor** 

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

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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);
```

### Membatalkan unggahan multibagian
<a name="aborting-a-multipart-upload"></a>

Unggahan multipart dapat dibatalkan dengan mengambil yang `UploadId` terkandung dalam `UploadState` objek dan meneruskannya ke. `abortMultipartUpload`

```
try {
    $result = $uploader->upload();
} catch (MultipartUploadException $e) {
    // State contains the "Bucket", "Key", and "UploadId"
    $params = $e->getState()->getId();
    $result = $s3Client->abortMultipartUpload($params);
}
```

## Unggahan multipart asinkron
<a name="asynchronous-multipart-uploads"></a>

Memanggil `upload()` `MultipartUploader` adalah permintaan pemblokiran. Jika Anda bekerja dalam konteks asinkron, Anda bisa mendapatkan [janji](guide_promises.md) untuk unggahan multibagian.

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

use Aws\S3\MultipartUploader;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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();
```

### Konfigurasi
<a name="asynchronous-multipart-uploads-configuration"></a>

Konstruktor `MultipartUploader` objek menerima argumen berikut:

** `$client` **  
`Aws\ClientInterface`Objek yang digunakan untuk melakukan transfer. Ini harus menjadi contoh dari`Aws\S3\S3Client`.

** `$source` **  
Sumber data yang sedang diunggah. Ini bisa berupa jalur atau URL (misalnya,`/path/to/file.jpg`), pegangan sumber daya (misalnya,`fopen('/path/to/file.jpg', 'r)`), atau instance aliran [PSR-7](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Psr.Http.Message.StreamInterface.html).

** `$config` **  
Array asosiatif opsi konfigurasi untuk unggahan multipart.  
Opsi konfigurasi berikut valid:    
** `acl` **  
(`string`) Daftar kontrol akses (ACL) untuk mengatur objek yang sedang diunggah. Objek bersifat pribadi secara default.  
** `before_complete` **  
(`callable`) Callback untuk memanggil sebelum operasi. `CompleteMultipartUpload` Callback harus memiliki tanda tangan fungsi seperti`function (Aws\Command $command) {...}`.  
** `before_initiate` **  
(`callable`) Callback untuk memanggil sebelum operasi. `CreateMultipartUpload` Callback harus memiliki tanda tangan fungsi seperti`function (Aws\Command $command) {...}`.  
** `before_upload` **  
(`callable`) Callback untuk memanggil sebelum operasi apa pun`UploadPart`. Callback harus memiliki tanda tangan fungsi seperti`function (Aws\Command $command) {...}`.  
** `bucket` **  
(`string`, *wajib*) Nama ember tempat objek diunggah.  
** `concurrency` **  
(`int`, *default*:`int(5)`) Jumlah maksimum `UploadPart` operasi bersamaan yang diizinkan selama pengunggahan multibagian.  
** `key` **  
(`string`, *wajib*) Kunci yang akan digunakan untuk objek yang sedang diunggah.  
** `part_size` **  
(`int`, *default*:`int(5242880)`) Ukuran bagian, dalam byte, untuk digunakan saat melakukan pengunggahan multibagian. Ini harus antara 5 MB dan 5 GB, inklusif.  
** `state` **  
(`Aws\Multipart\UploadState`) Objek yang mewakili status unggahan multibagian dan yang digunakan untuk melanjutkan unggahan sebelumnya. Ketika opsi ini disediakan, `part_size` opsi `bucket``key`,, dan diabaikan.  
**`add_content_md5`**  
(`boolean`) Setel ke true untuk secara otomatis menghitung MD5 checksum untuk unggahan.  
**`params`**  
Array asosiatif yang menyediakan opsi konfigurasi untuk setiap subperintah. Contoh:  

```
new MultipartUploader($client, $source, ['params' => ['CacheControl' => <some_value>]])
```

## Salinan multipart
<a name="multipart-copies"></a>

Ini AWS SDK untuk PHP juga mencakup `MultipartCopy` objek yang digunakan dengan cara yang mirip dengan`MultipartUploader`, tetapi dirancang untuk menyalin objek antara 5 GB dan 5 TB dalam ukuran dalam Amazon S3.

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

use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartCopy;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
// 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";
}
```

# URL pra-ditandatangani Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-presigned-url"></a>

Anda dapat mengautentikasi jenis permintaan tertentu dengan meneruskan informasi yang diperlukan sebagai parameter string kueri alih-alih menggunakan header HTTP Otorisasi. Ini berguna untuk mengaktifkan akses browser pihak ketiga langsung ke data Amazon S3 pribadi Anda, tanpa memproksi permintaan. Idenya adalah untuk membuat permintaan “pra-ditandatangani” dan menyandikannya sebagai URL yang dapat digunakan pengguna lain. Selain itu, Anda dapat membatasi permintaan yang telah ditandatangani sebelumnya dengan menentukan waktu kedaluwarsa.

## Buat URL yang telah ditandatangani sebelumnya untuk permintaan HTTP GET
<a name="s3-presigned-url-get"></a>

Contoh kode berikut menunjukkan cara membuat URL pra-ditandatangani untuk permintaan HTTP GET dengan menggunakan SDK for PHP.

```
<?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;
```

[Referensi API untuk `createPresignedRequest`](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.S3Client.html#method_createPresignedRequest) metode ini memberikan detail lebih lanjut.

Orang lain dapat menggunakan `$presignedUrl` nilai untuk mengambil objek dalam satu jam berikutnya. Ketika permintaan HTTP GET dibuat—menggunakan browser, misalnya—muncul ke layanan S3 bahwa panggilan tersebut berasal dari pengguna yang membuat URL yang ditandatangani tekan.

## Buat URL yang telah ditandatangani sebelumnya untuk permintaan HTTP PUT
<a name="s3-presigned-url-put"></a>

Contoh kode berikut menunjukkan cara membuat URL pra-ditandatangani untuk permintaan HTTP PUT dengan menggunakan SDK for PHP.

```
<?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();
```

Orang lain sekarang dapat menggunakan URL yang telah ditandatangani sebelumnya dalam permintaan HTTP PUT untuk mengunggah file:

```
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 pra-ditandatangani POSTs dengan Versi 3 AWS SDK untuk PHP
<a name="s3-presigned-post"></a>

Sama seperti pra-ditandatangani URLs, pra-ditandatangani POSTs memungkinkan Anda untuk memberikan akses tulis ke pengguna tanpa memberi mereka AWS kredensyal. Formulir POST yang telah ditandatangani sebelumnya dapat dibuat dengan bantuan instance [PostObjectAWSS3](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html) V4.

Contoh berikut menunjukkan cara:
+ Dapatkan data untuk formulir unggah Object POST S3 menggunakan [PostObjectV4](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.S3.PostObjectV4.html).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

**catatan**  
`PostObjectV4`tidak bekerja dengan kredensyal yang bersumber dari. AWS IAM Identity Center

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat PostObject V4
<a name="create-postobjectv4"></a>

Untuk membuat instance`PostObjectV4`, Anda harus memberikan yang berikut:
+ contoh dari `Aws\S3\S3Client` 
+ bucket
+ array asosiatif dari kolom masukan formulir
+ larik kondisi kebijakan (lihat [Konstruksi Kebijakan](https://docs.aws.amazon.com/AmazonS3/latest/dev/HTTPPOSTForms.html) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon)
+ string waktu kedaluwarsa untuk kebijakan (opsional, satu jam secara default).

 **Impor** 

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

use Aws\S3\PostObjectV4;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

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

# Menggunakan bucket Amazon S3 sebagai host web statis dengan AWS SDK untuk PHP Versi 3
<a name="s3-examples-static-web-host"></a>

Anda dapat menyelenggarakan situs web statis di Amazon S3. Untuk mempelajari lebih lanjut, lihat [Hosting Situs Web Statis di Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).

Contoh berikut menunjukkan cara:
+ Dapatkan konfigurasi situs web untuk menggunakan bucket [GetBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketwebsite).
+ Atur konfigurasi situs web untuk menggunakan bucket [PutBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketwebsite).
+ Hapus konfigurasi situs web dari ember menggunakan [DeleteBucketWebsite](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketwebsite).

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

## Kredensial
<a name="credentials-s3-examples-static-web-host"></a>

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensi Anda. Lihat [Kredensial untuk AWS SDK untuk PHP Versi 3](guide_credentials.md).

## Dapatkan, atur, dan hapus konfigurasi situs web untuk bucket
<a name="get-set-and-delete-the-website-configuration-for-a-bucket"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
$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";
}
```

# Bekerja dengan kebijakan bucket Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-examples-bucket-policies"></a>

Anda dapat menggunakan kebijakan bucket untuk memberikan izin ke sumber daya Amazon S3 Anda. Untuk mempelajari lebih lanjut, lihat [Menggunakan Kebijakan Bucket dan Kebijakan Pengguna](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).

Contoh berikut menunjukkan cara:
+ Kembalikan kebijakan untuk bucket tertentu yang digunakan [GetBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getbucketpolicy).
+ Ganti kebijakan pada ember menggunakan [PutBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putbucketpolicy).
+ Menghapus kebijakan dari bucket menggunakan [DeleteBucketPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#deletebucketpolicy).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Dapatkan, hapus, dan ganti kebijakan di bucket
<a name="get-delete-and-replace-a-policy-on-a-bucket"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\S3\S3Client;
```

 **Kode Sampel** 

```
$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";
}
```

# Menggunakan titik akses S3 ARNs AWS SDK untuk PHP Versi 3
<a name="s3-examples-access-point-arn"></a>

S3 memperkenalkan titik akses, cara baru untuk berinteraksi dengan bucket S3. Access Points dapat memiliki kebijakan dan konfigurasi unik yang diterapkan padanya, bukan langsung ke bucket. AWS SDK untuk PHP Ini memungkinkan Anda menggunakan titik akses ARNs di bidang bucket untuk operasi API, bukan menentukan nama bucket secara eksplisit. Rincian lebih lanjut tentang bagaimana titik akses dan ARNs pekerjaan S3 dapat ditemukan [di sini](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html). Contoh berikut menunjukkan cara:
+ Gunakan [GetObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)dengan titik akses ARN untuk mengambil objek dari ember.
+ Gunakan [PutObject](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)dengan titik akses ARN untuk menambahkan objek ke ember.
+ Konfigurasikan klien S3 untuk menggunakan wilayah ARN alih-alih wilayah klien.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensyal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

 **Impor** 

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

use Aws\S3\S3Client;
```

## Dapatkan objek
<a name="get-object"></a>

Pertama buat layanan klien AWS.S3 yang menentukan wilayah dan versi. AWS Kemudian panggil `getObject` metode dengan kunci Anda dan titik akses S3 ARN di `Bucket` lapangan, yang akan mengambil objek dari ember yang terkait dengan titik akses itu.

 **Kode Sampel** 

```
$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'
]);
```

## Masukkan benda ke dalam ember
<a name="put-an-object-in-a-bucket"></a>

Pertama buat layanan klien AWS.S3 yang menentukan Wilayah dan versi. AWS Kemudian panggil `putObject` metode dengan kunci yang diinginkan, file tubuh atau sumber, dan titik akses S3 ARN di `Bucket` lapangan, yang akan menempatkan objek di ember yang terkait dengan titik akses itu.

 **Kode Sampel** 

```
$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'
]);
```

## Konfigurasikan klien S3 untuk menggunakan wilayah ARN alih-alih wilayah klien
<a name="configure-the-s3-client-to-use-the-arn-region-instead-of-the-client-region"></a>

Saat menggunakan titik akses S3 ARN dalam operasi klien S3, secara default klien akan memastikan bahwa wilayah ARN cocok dengan wilayah klien, melempar pengecualian jika tidak. Perilaku ini dapat diubah untuk menerima wilayah ARN di atas wilayah klien dengan menyetel opsi `use_arn_region` konfigurasi ke. `true` Secara default, opsi diatur ke`false`.

 **Kode Sampel** 

```
$s3 = new S3Client([
    'version'        => 'latest',
    'region'         => 'us-west-2',
    'use_arn_region' => true
]);
```

Klien juga akan memeriksa variabel lingkungan dan opsi file konfigurasi, dalam urutan prioritas berikut:

1. Opsi klien`use_arn_region`, seperti pada contoh di atas.

1. Variabel lingkungan `AWS_S3_USE_ARN_REGION` 

```
export AWS_S3_USE_ARN_REGION=true
```

1. Variabel konfigurasi `s3_use_arn_region` dalam file konfigurasi AWS bersama (secara default di`~/.aws/config`).

```
[default]
s3_use_arn_region = true
```

# Gunakan Titik Akses Multi-Wilayah Amazon S3 dengan Versi 3 AWS SDK untuk PHP
<a name="s3-multi-region-access-points"></a>

[Amazon Simple Storage Service (S3) Titik Akses Multi-Wilayah menyediakan titik](https://docs.aws.amazon.com//AmazonS3/latest/userguide/MultiRegionAccessPoints.html) akhir global untuk merutekan lalu lintas permintaan Amazon S3 di antaranya. Wilayah AWS

Anda dapat membuat Titik Akses Multi-Region [menggunakan SDK for PHP, SDK](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-s3control-2018-08-20.html#createmultiregionaccesspoint) AWS lain, [konsol S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/multi-region-access-point-create-examples.html), atau CLI, AWS 

**penting**  
Untuk menggunakan Multi-Region Access Points dengan SDK for PHP, lingkungan PHP Anda harus memiliki AWS ekstensi [Common Runtime AWS (CRT](guide_crt.md)) diinstal.

Saat Anda membuat Titik Akses Multi-Wilayah, Amazon S3 menghasilkan Nama Sumber Daya Amazon (ARN) yang memiliki format berikut: 

`arn:aws:s3::account-id:accesspoint/MultiRegionAccessPoint_alias`

Anda dapat menggunakan ARN yang dihasilkan sebagai pengganti nama bucket untuk `[getObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#getobject)` dan `[putObject()](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-s3-2006-03-01.html#putobject)` metode.

```
<?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";
```

# Mengelola rahasia menggunakan Secrets Manager API dan AWS SDK untuk PHP Versi 3
<a name="secretsmanager-examples-manage-secret"></a>

AWS Secrets Manager menyimpan dan mengelola rahasia bersama seperti kata sandi, kunci API, dan kredenal basis data. Dengan layanan Secrets Manager, pengembang dapat mengganti kredensi hard-code dalam kode yang diterapkan dengan panggilan tertanam ke Secrets Manager.

Secrets Manager secara native mendukung rotasi kredenal terjadwal otomatis untuk database Amazon Relational Database Service (Amazon RDS), meningkatkan keamanan aplikasi. Secrets Manager juga dapat dengan mulus memutar rahasia untuk database lain dan layanan pihak ketiga yang digunakan AWS Lambda untuk mengimplementasikan detail khusus layanan.

Contoh berikut menunjukkan cara:
+ Buat rahasia menggunakan [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret).
+ Ambil rahasia menggunakan [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue).
+ Daftar semua rahasia yang disimpan oleh Secrets Manager menggunakan [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets).
+ Dapatkan detail tentang penggunaan rahasia tertentu [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret).
+ Perbarui rahasia tertentu menggunakan [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue).
+ Siapkan rotasi rahasia menggunakan [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret).
+ Tandai rahasia untuk penghapusan menggunakan. [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat rahasia di Secrets Manager
<a name="create-a-secret-in-asm"></a>

Untuk membuat rahasia di Secrets Manager, gunakan [CreateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#createsecret)operasi.

Dalam contoh ini, nama pengguna dan kata sandi disimpan sebagai string JSON.

 **Impor** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengambil rahasia dari Secrets Manager
<a name="retrieve-a-secret-from-asm"></a>

Untuk mengambil nilai rahasia yang disimpan di Secrets Manager, gunakan [GetSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#getsecretvalue)operasi.

Dalam contoh berikut, `secret` adalah string yang berisi nilai yang disimpan. Jika nilai untuk `username` is `<<USERNAME>>` dan nilai untuk `password` is`<<PASSWORD>>`, output dari `secret` adalah:

```
{"username":"<<USERNAME>>","password":"<<PASSWORD>>"}
```

Gunakan `json_decode($secret, true)` untuk mengakses nilai array.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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;
```

## Daftar rahasia yang disimpan di Secrets Manager
<a name="list-secrets-stored-in-asm"></a>

Dapatkan daftar semua rahasia yang disimpan oleh Secrets Manager menggunakan [ListSecrets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#listsecrets)operasi.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Ambil detail tentang rahasia
<a name="retrieve-details-about-a-secret"></a>

Rahasia yang disimpan berisi metadata tentang aturan rotasi, saat terakhir diakses atau diubah, tag yang dibuat pengguna, dan Nama Sumber Daya Amazon (ARN). Untuk mendapatkan detail rahasia tertentu yang disimpan di Secrets Manager, gunakan [DescribeSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#describesecret)operasi.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Perbarui nilai rahasia
<a name="update-the-secret-value"></a>

Untuk menyimpan nilai rahasia terenkripsi baru di Secrets Manager, gunakan operasi. [PutSecretValue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#putsecretvalue)

Ini menciptakan versi baru dari rahasia. Jika versi rahasia sudah ada, tambahkan `VersionStages` parameter dengan nilai `AWSCURRENT` untuk memastikan bahwa nilai baru digunakan saat mengambil nilai.

 **Impor** 

```
require 'vendor/autoload.php';
use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Putar nilai ke rahasia yang ada di Secrets Manager
<a name="rotate-the-value-to-an-existing-secret-in-asm"></a>

Untuk memutar nilai rahasia yang ada yang disimpan di Secrets Manager, gunakan fungsi rotasi Lambda dan operasi. [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)

Sebelum Anda mulai, buat fungsi Lambda untuk memutar rahasia Anda. [Katalog Contoh AWS Kode](https://docs.aws.amazon.com/code-samples/latest/catalog/code-catalog-lambda_functions-secretsmanager.html) saat ini berisi beberapa contoh kode Lambda untuk memutar kredensil database Amazon RDS.

**catatan**  
Untuk informasi selengkapnya tentang memutar rahasia, lihat [Memutar AWS Secrets Manager Rahasia Anda](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html) di AWS Secrets Manager Panduan Pengguna.

Setelah Anda mengatur fungsi Lambda Anda, konfigurasikan rotasi rahasia baru.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

Ketika rotasi dikonfigurasi, Anda dapat menerapkan rotasi menggunakan [RotateSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#rotatesecret)operasi.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus rahasia dari Secrets Manager
<a name="delete-a-secret-from-asm"></a>

Untuk menghapus rahasia tertentu dari Secrets Manager, gunakan [DeleteSecret](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-secretsmanager-2017-10-17.html#deletesecret)operasi. Untuk mencegah penghapusan rahasia secara tidak sengaja, DeletionDate stempel secara otomatis ditambahkan ke rahasia yang menentukan jendela waktu pemulihan di mana Anda dapat membalikkan penghapusan. Jika waktu tidak ditentukan untuk jendela pemulihan, jumlah waktu default adalah 30 hari.

 **Impor** 

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

use Aws\SecretsManager\SecretsManagerClient;
use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Informasi terkait
<a name="related-information"></a>

 AWS SDK untuk PHP Contoh menggunakan operasi REST berikut dari Referensi AWS Secrets Manager API:
+  [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) 

Untuk informasi selengkapnya tentang penggunaan AWS Secrets Manager, lihat [Panduan AWS Secrets Manager Pengguna](https://docs.aws.amazon.com/secretsmanager/latest/userguide/).

# Contoh Amazon SES menggunakan AWS SDK untuk PHP Versi 3
<a name="ses-examples"></a>

Amazon Simple Email Service (Amazon SES) adalah platform email yang menyediakan cara yang mudah dan hemat uang bagi Anda untuk mengirim dan menerima email menggunakan alamat email dan domain Anda sendiri. Untuk informasi selengkapnya tentang Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

AWS [menawarkan dua versi layanan Amazon SES dan, dengan demikian, SDK for PHP menawarkan dua versi klien [SesClient](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Ses.SesClient.html): dan Sesv2Client.](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.SesV2.SesV2Client.html) Fungsionalitas klien tumpang tindih dalam banyak kasus meskipun cara metode dipanggil atau hasilnya mungkin berbeda. Keduanya APIs juga menawarkan fitur eksklusif, sehingga Anda dapat menggunakan kedua klien untuk mengakses semua fungsionalitas.

Contoh di bagian ini semua menggunakan yang asli,`SesClient`. 

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Memverifikasi alamat email](ses-verify.md)
+ [Bekerja dengan template email](ses-template.md)
+ [Mengelola filter email](ses-filters.md)
+ [Menggunakan aturan email](ses-rules.md)
+ [Pantau aktivitas pengiriman Anda](ses-send-email.md)
+ [Mengotorisasi pengirim](ses-sender-policy.md)

# Memverifikasi identitas email menggunakan Amazon SES API dan AWS SDK untuk PHP Versi 3
<a name="ses-verify"></a>

Saat pertama kali mulai menggunakan akun Amazon Simple Email Service (Amazon SES), semua pengirim dan penerima harus diverifikasi di Wilayah AWS yang sama dengan tempat Anda mengirim email. Untuk informasi selengkapnya tentang mengirim email, lihat [Mengirim Email dengan Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-email.html).

Contoh berikut menunjukkan cara:
+ Verifikasi alamat email menggunakan [VerifyEmailIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifyemailidentity).
+ Verifikasi domain email menggunakan [VerifyDomainIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#verifydomainidentity).
+ Daftar semua alamat email menggunakan [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Daftar semua domain email menggunakan [ListIdentities](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentities).
+ Hapus alamat email menggunakan [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).
+ Hapus domain email menggunakan [DeleteIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentity).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Verifikasi alamat email
<a name="verifying-email-addresses"></a>

Amazon SES hanya dapat mengirim email dari alamat email atau domain yang diverifikasi. Dengan memverifikasi alamat email, Anda menunjukkan bahwa Anda adalah pemilik alamat tersebut dan ingin mengizinkan Amazon SES mengirim email dari alamat tersebut.

Saat Anda menjalankan contoh kode berikut, Amazon SES mengirimkan email ke alamat yang Anda tentukan. Ketika Anda (atau penerima email) mengklik tautan di email, alamat tersebut diverifikasi.

Untuk menambahkan alamat email ke akun Amazon SES Anda, gunakan [VerifyEmailIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyEmailIdentity.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Verifikasi domain email
<a name="verify-an-email-domain"></a>

Amazon SES hanya dapat mengirim email dari alamat email atau domain yang diverifikasi. Dengan memverifikasi domain, Anda menunjukkan bahwa Anda adalah pemilik domain tersebut. Saat Anda memverifikasi domain, Anda mengizinkan Amazon SES mengirim email dari alamat mana pun di domain itu.

Saat Anda menjalankan contoh kode berikut, Amazon SES memberi Anda token verifikasi. Anda harus menambahkan token ke konfigurasi DNS domain Anda. Untuk informasi selengkapnya, lihat [Memverifikasi Domain dengan Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domain-procedure.html) di Panduan Pengembang Layanan Email Sederhana Amazon.

Untuk menambahkan domain pengiriman ke akun Amazon SES Anda, gunakan [VerifyDomainIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_VerifyDomainIdentity.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Daftar alamat email
<a name="list-email-addresses"></a>

Untuk mengambil daftar alamat email yang dikirimkan di AWS Wilayah saat ini, terlepas dari status verifikasi, gunakan [ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Daftar domain email
<a name="list-email-domains"></a>

Untuk mengambil daftar domain email yang dikirimkan di AWS Wilayah saat ini, terlepas dari status verifikasi, gunakan operasi. [ListIdentities](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentities.html)

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menghapus alamat email
<a name="delete-an-email-address"></a>

Untuk menghapus alamat email terverifikasi dari daftar identitas, gunakan [DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Menghapus domain email
<a name="delete-an-email-domain"></a>

Untuk menghapus domain email terverifikasi dari daftar identitas terverifikasi, gunakan [DeleteIdentity](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentity.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Membuat template email khusus menggunakan Amazon SES API dan AWS SDK untuk PHP Versi 3
<a name="ses-template"></a>

Amazon Simple Email Service (Amazon SES) memungkinkan Anda mengirim email yang dipersonalisasi untuk setiap penerima dengan menggunakan templat. Template mencakup baris subjek dan teks dan bagian HTML dari badan email. Bagian subjek dan tubuh juga dapat berisi nilai unik yang dipersonalisasi untuk setiap penerima.

Untuk informasi selengkapnya, lihat [Mengirim Email yang Dipersonalisasi Menggunakan Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html) di Panduan Pengembang Layanan Email Sederhana Amazon.

Contoh berikut menunjukkan cara:
+ Buat template email menggunakan [CreateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createtemplate).
+ Daftar semua template email menggunakan [ListTemplates](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listtemplates).
+ Ambil template email menggunakan [GetTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#gettemplate).
+ Perbarui template email menggunakan [UpdateTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updateTemplate).
+ Hapus template email menggunakan [DeleteTemplate](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletetemplate).
+ Kirim email template menggunakan [SendTemplatedEmail](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#sendtemplatedemail).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Buat template email
<a name="create-an-email-template"></a>

Untuk membuat template untuk mengirim pesan email yang dipersonalisasi, gunakan [CreateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateTemplate.html)operasi. Template dapat digunakan oleh akun apa pun yang berwenang untuk mengirim pesan di AWS Wilayah tempat templat ditambahkan.

**catatan**  
Amazon SES tidak memvalidasi HTML Anda, jadi pastikan *HtmlPart*itu valid sebelum mengirim email.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Dapatkan template email
<a name="get-an-email-template"></a>

Untuk melihat konten untuk template email yang ada termasuk baris subjek, isi HTML, dan teks biasa, gunakan [GetTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetTemplate.html)operasi. Hanya TemplateName diperlukan.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Daftar semua template email
<a name="list-all-email-templates"></a>

Untuk mengambil daftar semua template email yang terkait dengan Anda Akun AWS di AWS Wilayah saat ini, gunakan [ListTemplates](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListTemplates.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Perbarui template email
<a name="update-an-email-template"></a>

Untuk mengubah konten untuk template email tertentu termasuk baris subjek, isi HTML, dan teks biasa, gunakan [UpdateTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdadteTemplate.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus template email
<a name="delete-an-email-template"></a>

Untuk menghapus template email tertentu, gunakan [DeleteTemplate](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteTemplate.html)operasi. Yang Anda butuhkan hanyalah TemplateName.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Kirim email dengan template
<a name="send-an-email-with-a-template"></a>

Untuk menggunakan templat untuk mengirim email ke penerima, gunakan [SendTemplatedEmail](https://docs.aws.amazon.com/ses/latest/APIReference/API_SendTemplatedEmail.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Mengelola filter email menggunakan Amazon SES API dan AWS SDK untuk PHP Versi 3
<a name="ses-filters"></a>

Selain mengirim email, Anda juga dapat menerima email dengan Amazon Simple Email Service (Amazon SES). Filter alamat IP memungkinkan Anda menentukan secara opsional apakah akan menerima atau menolak email yang berasal dari alamat IP atau rentang alamat IP. Untuk informasi selengkapnya, lihat [Mengelola Filter Alamat IP untuk Menerima Email Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html).

Contoh berikut menunjukkan cara:
+ Buat filter email menggunakan [CreateReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptfilter).
+ Daftar semua filter email menggunakan [ListReceiptFilters](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptfilters).
+ Hapus filter email menggunakan [DeleteReceiptFilter](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptfilter).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Buat filter email
<a name="create-an-email-filter"></a>

Untuk mengizinkan atau memblokir email dari alamat IP tertentu, gunakan [CreateReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html)operasi. Berikan alamat IP atau rentang alamat dan nama unik untuk mengidentifikasi filter ini.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Daftar semua filter email
<a name="list-all-email-filters"></a>

Untuk membuat daftar filter alamat IP yang terkait dengan Anda Akun AWS di AWS Wilayah saat ini, gunakan [ListReceiptFilters](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptFilters.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus filter email
<a name="delete-an-email-filter"></a>

Untuk menghapus filter yang ada untuk alamat IP tertentu gunakan [DeleteReceiptFilter](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptFilter.html)operasi. Berikan nama filter unik untuk mengidentifikasi filter tanda terima yang akan dihapus.

Jika Anda perlu mengubah rentang alamat yang difilter, Anda dapat menghapus filter tanda terima dan membuat yang baru.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Membuat dan mengelola aturan email menggunakan Amazon SES API dan AWS SDK untuk PHP Versi 3
<a name="ses-rules"></a>

Selain mengirim email, Anda juga dapat menerima email dengan Amazon Simple Email Service (Amazon SES). Aturan tanda terima memungkinkan Anda menentukan apa yang Amazon SES lakukan dengan email yang diterimanya untuk alamat email atau domain yang Anda miliki. Aturan dapat mengirim email ke AWS layanan lain termasuk namun tidak terbatas pada Amazon S3, Amazon SNS, atau. AWS Lambda

Untuk selengkapnya, lihat [Mengelola kumpulan aturan tanda terima untuk Menerima Email Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html) dan [Mengelola Aturan Tanda Terima untuk Penerimaan Email Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html).

Contoh berikut menunjukkan cara:
+ Buat aturan tanda terima yang ditetapkan menggunakan [CreateReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptruleset).
+ Buat aturan tanda terima menggunakan [CreateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createreceiptrule).
+ Jelaskan aturan tanda terima yang ditetapkan menggunakan [DescribeReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptruleset).
+ Jelaskan aturan tanda terima menggunakan [DescribeReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#describereceiptrule).
+ Buat daftar semua set aturan tanda terima menggunakan [ListReceiptRuleSets](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listreceiptrulesets).
+ Perbarui aturan tanda terima menggunakan [UpdateReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#updatereceiptrule).
+ Hapus aturan tanda terima menggunakan [DeleteReceiptRule](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptrule).
+ Hapus aturan tanda terima yang ditetapkan menggunakan [DeleteReceiptRuleSet](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deletereceiptruleset).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Buat set aturan tanda terima
<a name="create-a-receipt-rule-set"></a>

Set aturan tanda terima berisi kumpulan aturan tanda terima. Anda harus memiliki setidaknya satu set aturan tanda terima yang terkait dengan akun Anda sebelum Anda dapat membuat aturan tanda terima. Untuk membuat set aturan tanda terima, berikan yang unik RuleSetName dan gunakan [CreateReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Buat aturan penerimaan
<a name="create-a-receipt-rule"></a>

Kontrol email masuk Anda dengan menambahkan aturan tanda terima ke set aturan tanda terima yang ada. Contoh ini menunjukkan cara membuat aturan tanda terima yang mengirim pesan masuk ke bucket Amazon S3, tetapi Anda juga dapat mengirim pesan ke Amazon SNS dan. AWS Lambda Untuk membuat aturan tanda terima, berikan aturan RuleSetName dan [CreateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRule.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Jelaskan set aturan tanda terima
<a name="describe-a-receipt-rule-set"></a>

Sekali per detik, kembalikan detail set aturan tanda terima yang ditentukan. Untuk menggunakan [DescribeReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRuleSet.html)operasi, berikan RuleSetName.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Jelaskan aturan tanda terima
<a name="describe-a-receipt-rule"></a>

Kembalikan detail aturan tanda terima yang ditentukan. Untuk menggunakan [DescribeReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRule.html)operasi, berikan RuleName dan RuleSetName.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Cantumkan semua set aturan tanda terima
<a name="list-all-receipt-rule-sets"></a>

Untuk mencantumkan kumpulan aturan tanda terima yang ada Akun AWS di bawah AWS Wilayah Anda saat ini, gunakan [ListReceiptRuleSets](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptRuleSets.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Perbarui aturan tanda terima
<a name="update-a-receipt-rule"></a>

Contoh ini menunjukkan cara memperbarui aturan tanda terima yang mengirim pesan masuk ke suatu AWS Lambda fungsi, tetapi Anda juga dapat mengirim pesan ke Amazon SNS dan Amazon S3. Untuk menggunakan [UpdateReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateReceiptRule.html)operasi, berikan aturan tanda terima baru dan RuleSetName.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus set aturan tanda terima
<a name="delete-a-receipt-rule-set"></a>

Hapus kumpulan aturan tanda terima tertentu yang saat ini tidak dinonaktifkan. Ini juga menghapus semua aturan tanda terima yang dikandungnya. Untuk menghapus set aturan tanda terima, berikan RuleSetName ke [DeleteReceiptRuleSet](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRuleSet.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

## Hapus aturan tanda terima
<a name="delete-a-receipt-rule"></a>

Untuk menghapus aturan tanda terima yang ditentukan, berikan RuleName dan RuleSetName ke [DeleteReceiptRule](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRule.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
```

 **Kode Sampel** 

```
$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";
}
```

# Memantau aktivitas pengiriman Anda menggunakan Amazon SES API dan AWS SDK untuk PHP Versi 3
<a name="ses-send-email"></a>

Amazon Simple Email Service (Amazon SES) menyediakan metode untuk memantau aktivitas pengiriman Anda. Kami menyarankan Anda menerapkan metode ini sehingga Anda dapat melacak langkah-langkah penting, seperti bouncing akun, keluhan, dan tingkat penolakan. Tingkat pentalan dan keluhan yang terlalu tinggi dapat membahayakan kemampuan Anda untuk mengirim email menggunakan Amazon SES.

Contoh berikut menunjukkan cara:
+ Periksa kuota pengiriman Anda menggunakan [GetSendQuota](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendquota).
+ Pantau aktivitas pengiriman Anda menggunakan [GetSendStatistics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getsendstatistics).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensional Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Periksa kuota pengiriman Anda
<a name="check-your-sending-quota"></a>

Anda dibatasi untuk mengirim hanya sejumlah pesan tertentu dalam satu periode 24 jam. Untuk memeriksa berapa banyak pesan yang masih diizinkan untuk Anda kirim, gunakan [GetSendQuota](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendQuota.html)operasi. Untuk informasi selengkapnya, lihat [Mengelola Batas Pengiriman Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html) Anda.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

## Pantau aktivitas pengiriman Anda
<a name="monitor-your-sending-activity"></a>

Untuk mengambil metrik pesan yang telah Anda kirim dalam dua minggu terakhir, gunakan operasi. [GetSendStatistics](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetSendStatistics.html) Contoh ini mengembalikan jumlah upaya pengiriman, pantulan, keluhan, dan pesan yang ditolak dalam kenaikan 15 menit.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

# Mengotorisasi pengirim menggunakan Amazon SES API dan Versi 3 AWS SDK untuk PHP
<a name="ses-sender-policy"></a>

Untuk mengaktifkan AWS Identity and Access Management pengguna Akun AWS, pengguna, atau AWS layanan lain mengirim email melalui Amazon Simple Email Service (Amazon SES) atas nama Anda, Anda membuat kebijakan otorisasi pengiriman. Ini adalah dokumen JSON yang Anda lampirkan ke identitas yang Anda miliki.

Kebijakan ini secara tegas mencantumkan siapa yang Anda izinkan untuk dikirim untuk identitas itu, dan dalam kondisi apa. Semua pengirim, selain Anda dan entitas yang Anda berikan izin secara eksplisit dalam kebijakan, tidak diizinkan mengirim email. Identitas dapat tidak memiliki kebijakan, satu kebijakan, atau beberapa kebijakan yang terlampir padanya. Anda juga dapat memiliki satu kebijakan dengan beberapa pernyataan untuk mencapai efek dari beberapa kebijakan.

Untuk informasi selengkapnya, lihat [Menggunakan Otorisasi Mengirim dengan Amazon SES.](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html)

Contoh berikut menunjukkan cara:
+ Buat pengirim resmi menggunakan [PutIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#createidentitypolicy).
+ Ambil kebijakan untuk pengirim yang berwenang menggunakan. [GetIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#getidentitypolicies)
+ Daftar pengirim resmi menggunakan [ListIdentityPolicies](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#listidentitypolicies).
+ Mencabut izin untuk pengirim yang berwenang menggunakan. [DeleteIdentityPolicy](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-email-2010-12-01.html#deleteidentitypolicy)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

Untuk informasi selengkapnya tentang penggunaan Amazon SES, lihat [Panduan Pengembang Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/).

## Buat pengirim resmi
<a name="create-an-authorized-sender"></a>

Untuk mengizinkan orang lain Akun AWS mengirim email atas nama Anda, gunakan kebijakan identitas untuk menambah atau memperbarui otorisasi untuk mengirim email dari alamat email atau domain terverifikasi Anda. Untuk membuat kebijakan identitas, gunakan [PutIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_PutIdentityPolicy.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

## Mengambil kebijakan untuk pengirim resmi
<a name="retrieve-polices-for-an-authorized-sender"></a>

Kembalikan kebijakan otorisasi pengiriman yang terkait dengan identitas email atau identitas domain tertentu. Untuk mendapatkan otorisasi pengiriman untuk alamat email atau domain tertentu, gunakan [GetIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_GetIdentityPolicy.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

## Daftar pengirim resmi
<a name="list-authorized-senders"></a>

Untuk mencantumkan kebijakan otorisasi pengiriman yang terkait dengan identitas email atau identitas domain tertentu di AWS Wilayah saat ini, gunakan [ListIdentityPolicies](https://docs.aws.amazon.com/ses/latest/APIReference/API_ListIdentityPolicies.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

## Mencabut izin untuk pengirim yang berwenang
<a name="revoke-permission-for-an-authorized-sender"></a>

Hapus otorisasi pengiriman Akun AWS untuk orang lain untuk mengirim email dengan identitas email atau identitas domain dengan menghapus kebijakan identitas terkait dengan operasi. [DeleteIdentityPolicy](https://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteIdentityPolicy.html)

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Ses\SesClient;
```

 **Kode Sampel** 

```
$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";
}
```

# Contoh Amazon SNS menggunakan Versi 3 AWS SDK untuk PHP
<a name="sns-examples"></a>

Amazon Simple Notification Service (Amazon SNS) adalah layanan web yang mengoordinasikan dan mengelola pengiriman atau pengiriman pesan untuk berlangganan titik akhir atau klien.

Di Amazon SNS, ada dua jenis klien: penerbit (juga disebut sebagai produsen) dan pelanggan (juga disebut sebagai konsumen). Penerbit berkomunikasi secara asinkron dengan pelanggan dengan memproduksi dan mengirim pesan ke suatu topik, yang merupakan jalur akses logis dan saluran komunikasi. Pelanggan (server web, alamat email, antrian Amazon SQS, AWS Lambda fungsi) mengkonsumsi atau menerima pesan atau pemberitahuan melalui salah satu protokol yang didukung (Amazon SQS,, AWS SMS email,, Lambda) ketika mereka berlangganan topik. HTTP/HTTPS URLs

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Mengelola topik](sns-examples-managing-topics.md)
+ [Mengelola langganan](sns-examples-subscribing-unsubscribing-topics.md)
+ [Mengirim pesan SMS amazon](sns-examples-sending-sms.md)

# Mengelola topik di Amazon SNS dengan Versi 3 AWS SDK untuk PHP
<a name="sns-examples-managing-topics"></a>

Untuk mengirim notifikasi ke Amazon Simple Queue Service (Amazon SQS) HTTP/HTTPS URLs,, email, AWS Lambda atau AWS SMS, Anda harus terlebih dahulu membuat topik yang mengelola pengiriman pesan ke pelanggan mana pun dari topik tersebut.

Dalam hal pola desain pengamat, topik seperti subjek. Setelah topik dibuat, Anda menambahkan pelanggan yang diberi tahu secara otomatis saat pesan dipublikasikan ke topik tersebut.

Pelajari lebih lanjut tentang berlangganan topik di [Mengelola Langganan di Amazon AWS SDK untuk PHP SNS](sns-examples-subscribing-unsubscribing-topics.md) dengan Versi 3.

Contoh berikut menunjukkan cara:
+ Buat topik untuk mempublikasikan notifikasi untuk digunakan [CreateTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#createtopic).
+ Kembalikan daftar topik pemohon menggunakan [ListTopics](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listtopic).
+ Hapus topik dan semua langganannya menggunakan [DeleteTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#deletetopic).
+ Kembalikan semua properti topik menggunakan [GetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#gettopicattributes).
+ Izinkan pemilik topik untuk menyetel atribut topik ke nilai baru menggunakan [SetTopicAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#settopicattributes).

Untuk informasi selengkapnya tentang menggunakan Amazon SNS, lihat [Atribut Topik Amazon SNS untuk](https://docs.aws.amazon.com/sns/latest/dg/sns-topic-attributes.html) Status Pengiriman Pesan.

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredensil Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Buat topik
<a name="create-a-topic"></a>

Untuk membuat topik, gunakan [CreateTopic](https://docs.aws.amazon.com/sns/latest/api/API_CreateTopic.html)operasi.

Setiap nama topik dalam Anda Akun AWS harus unik.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Buat daftar topik Anda
<a name="list-your-topics"></a>

Untuk membuat daftar hingga 100 topik yang ada di AWS Wilayah saat ini, gunakan [ListTopics](https://docs.aws.amazon.com/sns/latest/api/API_ListTopics.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Hapus topik
<a name="delete-a-topic"></a>

Untuk menghapus topik yang ada dan semua langganannya, gunakan [DeleteTopic](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)operasi.

Setiap pesan yang belum dikirim ke pelanggan juga akan dihapus.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Dapatkan atribut topik
<a name="get-topic-attributes"></a>

Untuk mengambil properti dari satu topik yang ada, gunakan [GetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Tetapkan atribut topik
<a name="set-topic-attributes"></a>

Untuk memperbarui properti dari satu topik yang ada, gunakan [SetTopicAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)operasi.

Anda hanya dapat mengatur`Policy`,`DisplayName`, dan `DeliveryPolicy` atribut.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Mengelola langganan di Amazon SNS AWS SDK untuk PHP dengan Versi 3
<a name="sns-examples-subscribing-unsubscribing-topics"></a>

Gunakan topik Amazon Simple Notification Service (Amazon SNS) untuk mengirim notifikasi ke Amazon Simple Queue Service (Amazon SQS), HTTP/HTTPS, alamat email, (), atau. AWS Server Migration Service AWS SMS AWS Lambda

Langganan dilampirkan ke topik yang mengelola pengiriman pesan ke pelanggan. Pelajari lebih lanjut cara membuat topik di [Mengelola Topik di Amazon SNS dengan AWS SDK untuk PHP Versi 3](sns-examples-managing-topics.md).

Contoh berikut menunjukkan cara:
+ Berlangganan topik yang ada menggunakan [Berlangganan](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#subscribe).
+ Verifikasi langganan menggunakan [ConfirmSubscription](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#confirmsubscription).
+ Buat daftar langganan yang ada menggunakan [ListSubscriptionsByTopic](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listsubscriptionsbytopic).
+ Hapus langganan menggunakan [Berhenti Berlangganan](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#unsubscribe).
+ Kirim pesan ke semua pelanggan topik menggunakan [Publikasikan](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Untuk informasi selengkapnya tentang menggunakan Amazon SNS, lihat [Menggunakan Amazon SNS for Messaging](https://docs.aws.amazon.com/sns/latest/dg/sns-system-to-system-messaging.html). System-to-System

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Berlangganan alamat email ke suatu topik
<a name="subscribe-an-email-address-to-a-topic"></a>

Untuk memulai langganan ke alamat email, gunakan operasi [Berlangganan](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Anda dapat menggunakan metode berlangganan untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan. Ini ditunjukkan dalam contoh lain dalam topik ini.

Dalam contoh ini, titik akhir adalah alamat email. Token konfirmasi dikirim ke email ini. Verifikasi langganan dengan token konfirmasi ini dalam waktu tiga hari sejak diterimanya.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Berlangganan titik akhir aplikasi ke suatu topik
<a name="subscribe-an-application-endpoint-to-a-topic"></a>

Untuk memulai langganan ke aplikasi web, gunakan operasi [Berlangganan](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Anda dapat menggunakan metode berlangganan untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan. Ini ditunjukkan dalam contoh lain dalam topik ini.

Dalam contoh ini, titik akhir adalah URL. Token konfirmasi dikirim ke alamat web ini. Verifikasi langganan dengan token konfirmasi ini dalam waktu tiga hari sejak diterimanya.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Berlangganan fungsi Lambda ke suatu topik
<a name="subscribe-a-lam-function-to-a-topic"></a>

Untuk memulai langganan ke fungsi Lambda, gunakan operasi Berlangganan[.](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)

Anda dapat menggunakan metode berlangganan untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan. Ini ditunjukkan dalam contoh lain dalam topik ini.

Dalam contoh ini, titik akhir adalah fungsi Lambda. Token konfirmasi dikirim ke fungsi Lambda ini. Verifikasi langganan dengan token konfirmasi ini dalam waktu tiga hari sejak diterimanya.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Berlangganan SMS teks ke suatu topik
<a name="subscribe-a-text-sms-to-a-topic"></a>

Untuk mengirim pesan SMS ke beberapa nomor telepon secara bersamaan, berlangganan setiap nomor ke topik.

Untuk memulai langganan ke nomor telepon, gunakan operasi [Berlangganan](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html).

Anda dapat menggunakan metode berlangganan untuk berlangganan beberapa titik akhir yang berbeda ke topik Amazon SNS, tergantung pada nilai yang digunakan untuk parameter yang diteruskan. Ini ditunjukkan dalam contoh lain dalam topik ini.

Dalam contoh ini, titik akhir adalah nomor telepon dalam format E.164, standar untuk telekomunikasi internasional.

Token konfirmasi dikirim ke nomor telepon ini. Verifikasi langganan dengan token konfirmasi ini dalam waktu tiga hari sejak diterimanya.

Untuk cara alternatif untuk mengirim pesan SMS dengan Amazon SNS, lihat [Mengirim Pesan SMS di Amazon SNS dengan AWS SDK untuk PHP](sns-examples-sending-sms.md) Versi 3.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Konfirmasikan langganan ke suatu topik
<a name="confirm-subscription-to-a-topic"></a>

Untuk benar-benar membuat langganan, pemilik titik akhir harus mengakui maksud untuk menerima pesan dari topik menggunakan token yang dikirim saat langganan dibuat pada awalnya, seperti yang dijelaskan sebelumnya. Token konfirmasi berlaku selama tiga hari. Setelah tiga hari, Anda dapat mengirim ulang token dengan membuat langganan baru.

Untuk mengonfirmasi langganan, gunakan [ConfirmSubscription](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Daftar langganan ke suatu topik
<a name="list-subscriptions-to-a-topic"></a>

Untuk membuat daftar hingga 100 langganan yang ada di AWS Wilayah tertentu, gunakan [ListSubscriptions](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptions.html)operasi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Berhenti berlangganan dari suatu topik
<a name="unsubscribe-from-a-topic"></a>

Untuk menghapus titik akhir yang berlangganan topik, gunakan operasi [Berhenti](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html) berlangganan.

Jika langganan memerlukan otentikasi untuk dihapus, hanya pemilik langganan atau pemilik topik yang dapat berhenti berlangganan, dan tanda tangan diperlukan. AWS Jika panggilan berhenti berlangganan tidak memerlukan otentikasi dan pemohon bukan pemilik langganan, pesan pembatalan akhir akan dikirimkan ke titik akhir.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Publikasikan pesan ke topik Amazon SNS
<a name="publish-a-message-to-an-sns-topic"></a>

[Untuk mengirimkan pesan ke setiap titik akhir yang berlangganan topik Amazon SNS, gunakan operasi Publikasikan.](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

Buat objek yang berisi parameter untuk menerbitkan pesan, termasuk teks pesan dan Nama Sumber Daya Amazon (ARN) dari topik Amazon SNS.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Mengirim pesan SMS di Amazon SNS dengan Versi 3 AWS SDK untuk PHP
<a name="sns-examples-sending-sms"></a>

Anda dapat menggunakan Amazon Simple Notification Service (Amazon SNS) untuk mengirim pesan teks, atau pesan SMS, ke perangkat berkemampuan SMS. Anda dapat mengirim pesan langsung ke sebuah nomor telepon, atau Anda dapat mengirim pesan ke beberapa nomor telepon sekaligus dengan berlangganan topik untuk nomor telepon tersebut dan mengirim pesan Anda ke topik tersebut.

Gunakan Amazon SNS untuk menentukan preferensi untuk pesan SMS, seperti bagaimana pengiriman Anda dioptimalkan (untuk biaya atau untuk pengiriman yang andal), batas pengeluaran bulanan Anda, cara pengiriman pesan dicatat, dan apakah akan berlangganan laporan penggunaan SMS harian. Preferensi ini diambil dan ditetapkan sebagai atribut SMS untuk Amazon SNS.

Saat Anda mengirim pesan SMS, tentukan nomor telepon menggunakan format E.164. E.164 adalah standar untuk struktur nomor telepon yang digunakan untuk telekomunikasi internasional. Nomor telepon yang mengikuti format ini dapat terdiri dari maksimum 15 digit bersama dengan prefiks tanda tambah (\$1) dan kode negara. Misalnya, nomor telepon AS dalam format E.164 akan muncul sebagai XXX555 \$11001 0100.

Contoh berikut menunjukkan cara:
+ Ambil pengaturan default untuk mengirim pesan SMS dari akun Anda menggunakan [Get SMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#getsmsattributes).
+ Perbarui pengaturan default untuk mengirim pesan SMS dari akun Anda menggunakan [Set SMSAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#setsmsattributes).
+ Temukan apakah pemilik nomor telepon tertentu telah memilih untuk tidak menerima pesan SMS dari akun Anda menggunakan [CheckIfPhoneNumberISOptedKeluar](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#checkifphonenumberisoptedout).
+ Buat daftar nomor telepon di mana pemilik telah memilih untuk tidak menerima pesan SMS dari akun Anda menggunakan [ListPhoneNumberOptedOut](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#listphonenumbersoptedout).
+ Kirim pesan teks (pesan SMS) langsung ke nomor telepon menggunakan [Publikasikan](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sns-2010-03-31.html#publish).

Untuk informasi selengkapnya tentang menggunakan Amazon SNS, lihat [Menggunakan Amazon SNS untuk Pemberitahuan Pengguna dengan Nomor Ponsel sebagai Pelanggan (Kirim SMS](https://docs.aws.amazon.com/sns/latest/dg/sns-mobile-phone-number-as-subscriber.html)).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Dapatkan atribut SMS
<a name="get-sms-attributes"></a>

Untuk mengambil pengaturan default untuk pesan SMS, gunakan SMSAttributes operasi [Dapatkan](https://docs.aws.amazon.com/sns/latest/api/API_GetSMSAttributes.html).

Contoh ini mendapatkan `DefaultSMSType` atribut. Atribut ini mengontrol apakah pesan SMS dikirim sebagai`Promotional`, yang mengoptimalkan pengiriman pesan untuk dikenakan biaya terendah, atau as`Transactional`, yang mengoptimalkan pengiriman pesan untuk mencapai keandalan tertinggi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Atur atribut SMS
<a name="set-sms-attributes"></a>

Untuk memperbarui pengaturan default untuk pesan SMS, gunakan SMSAttributes operasi [Set](https://docs.aws.amazon.com/sns/latest/api/API_SetSMSAttributes.html).

Contoh ini menetapkan `DefaultSMSType` atribut ke`Transactional`, yang mengoptimalkan pengiriman pesan untuk mencapai keandalan tertinggi.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Periksa apakah nomor telepon telah memilih keluar
<a name="check-if-a-phone-number-has-opted-out"></a>

Untuk menentukan apakah pemilik nomor telepon tertentu telah memilih untuk tidak menerima pesan SMS dari akun Anda, gunakan [CheckIfPhoneNumberIsOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_CheckIfPhoneNumberIsOptedOut.html)operasi.

Dalam contoh ini, nomor telepon dalam format E.164, standar untuk telekomunikasi internasional.

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Cantumkan nomor telepon yang dipilih
<a name="list-opted-out-phone-numbers"></a>

Untuk mengambil daftar nomor telepon di mana pemilik telah memilih untuk tidak menerima pesan SMS dari akun Anda, gunakan operasi. [ListPhoneNumbersOptedOut](https://docs.aws.amazon.com/sns/latest/api/API_ListPhoneNumbersOptedOut.html)

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Publikasikan ke pesan teks (pesan SMS)
<a name="publish-to-a-text-message-sms-message"></a>

Untuk mengirimkan pesan teks (pesan SMS) langsung ke nomor telepon, gunakan operasi [Publikasikan](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html).

Dalam contoh ini, nomor telepon dalam format E.164, standar untuk telekomunikasi internasional.

Pesan SMS dapat berisi hingga 140 byte. Batas ukuran untuk satu tindakan publikasi SMS adalah 1.600 byte.

Untuk detail selengkapnya tentang mengirim pesan SMS, lihat [Mengirim Pesan SMS](https://docs.aws.amazon.com/sns/latest/dg/sms_publish-to-phone.html).

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sns\SnsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Contoh Amazon SQS menggunakan Versi 3 AWS SDK untuk PHP
<a name="sqs-examples"></a>

Amazon Simple Queue Service (SQS) adalah layanan antrian pesan yang cepat, andal, terukur, dan dikelola sepenuhnya. Amazon SQS memungkinkan Anda memisahkan komponen aplikasi cloud. Amazon SQS mencakup antrian standar dengan throughput dan at-least-once pemrosesan tinggi, dan antrian FIFO yang menyediakan pengiriman FIFO (first>-in, first>-out) dan pemrosesan tepat sekali.

Semua kode contoh untuk AWS SDK untuk PHP Versi 3 tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

**Topics**
+ [Mengaktifkan polling panjang](sqs-examples-enable-long-polling.md)
+ [Mengelola batas waktu visibilitas](sqs-examples-managing-visibility-timeout.md)
+ [Mengirim dan menerima pesan](sqs-examples-send-receive-messages.md)
+ [Menggunakan antrean surat mati](sqs-examples-dead-letter-queues.md)
+ [Menggunakan antrian](sqs-examples-using-queues.md)

# Mengaktifkan polling panjang di Amazon AWS SDK untuk PHP SQS dengan Versi 3
<a name="sqs-examples-enable-long-polling"></a>

Polling panjang mengurangi jumlah respons kosong dengan mengizinkan Amazon SQS menunggu waktu tertentu agar pesan tersedia dalam antrian sebelum mengirim respons. Selain itu, polling panjang menghilangkan respons kosong palsu dengan menanyakan semua server alih-alih pengambilan sampel server. Untuk mengaktifkan polling panjang, tentukan waktu tunggu bukan nol untuk pesan yang diterima. Untuk mempelajari lebih lanjut, lihat [SQS Long Polling](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html).

Contoh berikut menunjukkan cara:
+ Tetapkan atribut pada antrean Amazon SQS untuk mengaktifkan polling panjang, menggunakan. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)
+ Ambil satu atau beberapa pesan dengan polling panjang menggunakan. [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage)
+ Buat antrian polling panjang menggunakan. [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Tetapkan atribut pada antrian untuk mengaktifkan polling panjang
<a name="set-attributes-on-a-queue-to-enable-long-polling"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Ambil pesan dengan polling panjang
<a name="retrieve-messages-with-long-polling"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Buat antrian dengan polling panjang
<a name="create-a-queue-with-long-polling"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Mengelola batas waktu visibilitas di Amazon AWS SDK untuk PHP SQS dengan Versi 3
<a name="sqs-examples-managing-visibility-timeout"></a>

Batas waktu visibilitas adalah periode waktu di mana Amazon SQS mencegah komponen konsumsi lainnya menerima dan memproses pesan. Untuk mempelajari lebih lanjut, lihat Batas [Waktu Visibilitas](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html).

Contoh berikut menunjukkan cara:
+ Ubah batas waktu visibilitas pesan tertentu dalam antrian ke nilai baru, menggunakan. [ChangeMessageVisibilityBatch](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#changemessagevisibilitybatch)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Mengubah batas waktu visibilitas beberapa pesan
<a name="change-the-visibility-timeout-of-multiple-messages"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Mengirim dan menerima pesan di Amazon SQS dengan AWS SDK untuk PHP Versi 3
<a name="sqs-examples-send-receive-messages"></a>

Untuk mempelajari tentang pesan Amazon SQS, lihat [Mengirim Pesan ke Antrian SQS [dan Menerima serta Menghapus Pesan dari Antrian SQS di Panduan Pengguna Service Quotas](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-receive-delete-message.html.html)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-send-message.html).

Contoh berikut menunjukkan cara:
+ Mengirimkan pesan ke antrian tertentu menggunakan [SendMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#sendmessage).
+ Ambil satu atau beberapa pesan (hingga 10) dari antrian tertentu menggunakan. [ReceiveMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#receivemessage)
+ Menghapus pesan dari antrian menggunakan [DeleteMessage](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletemessage).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Kirim pesan
<a name="send-a-message"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Menerima dan menghapus pesan
<a name="receive-and-delete-messages"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Menggunakan antrian huruf mati di Amazon SQS dengan Versi 3 AWS SDK untuk PHP
<a name="sqs-examples-dead-letter-queues"></a>

Antrian huruf mati adalah antrian (sumber) lain yang dapat ditargetkan untuk pesan yang tidak dapat diproses dengan sukses. Anda dapat menyisihkan dan mengisolasi pesan-pesan ini dalam antrian huruf mati untuk menentukan mengapa pemrosesan mereka tidak berhasil. Anda harus mengkonfigurasi secara individual setiap antrian sumber yang mengirim pesan ke antrian huruf mati. Beberapa antrian dapat menargetkan antrian huruf mati tunggal.

Untuk mempelajari lebih lanjut, lihat [Menggunakan Antrian Surat Mati SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html).

Contoh berikut menunjukkan cara:
+ Aktifkan antrian huruf mati menggunakan. [SetQueueAttributes](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#setqueueattributes)

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Aktifkan antrian huruf mati
<a name="enable-a-dead-letter-queue"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Menggunakan antrian di Amazon AWS SDK untuk PHP SQS dengan Versi 3
<a name="sqs-examples-using-queues"></a>

Untuk mempelajari antrian Amazon SQS, lihat [Cara](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-how-it-works.html) Kerja Antrian SQS.

Contoh berikut menunjukkan cara:
+ Kembalikan daftar antrian Anda menggunakan. [ListQueues](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#listqueues)
+ Buat antrian baru menggunakan [CreateQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#createqueue).
+ Kembalikan URL antrian yang ada menggunakan [GetQueueUrl](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#getqueueurl).
+ Hapus antrian tertentu menggunakan [DeleteQueue](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sqs-2012-11-05.html#deletequeue).

Semua kode contoh untuk AWS SDK untuk PHP tersedia [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/php/example_code).

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

Sebelum menjalankan kode contoh, konfigurasikan AWS kredenal Anda, seperti yang dijelaskan dalam. [Mengautentikasi dengan AWS menggunakan AWS SDK untuk PHP Versi 3](credentials.md) Kemudian impor AWS SDK untuk PHP, seperti yang dijelaskan dalam[Menginstal AWS SDK untuk PHP Versi 3](getting-started_installation.md).

## Kembalikan daftar antrian
<a name="return-a-list-of-queues"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Membuat antrean
<a name="create-a-queue"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Kembalikan URL antrian
<a name="return-the-url-of-a-queue"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

## Hapus antrian
<a name="delete-a-queue"></a>

 **Impor** 

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

use Aws\Exception\AwsException;
use Aws\Sqs\SqsClient;
```

 **Kode Sampel** 

```
$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());
}
```

# Kirim acara ke titik akhir EventBridge global Amazon menggunakan AWS SDK untuk PHP Versi 3
<a name="eventbridge-examples"></a>

Anda dapat menggunakan [titik akhir EventBridge global Amazon](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html) untuk meningkatkan ketersediaan dan keandalan aplikasi berbasis peristiwa.

Setelah endpoint EventBridge global [diatur](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-global-endpoints.html#eb-ge-create-endpoint), Anda dapat mengirim acara ke sana dengan menggunakan SDK for PHP.

**penting**  
Untuk menggunakan endpoint EventBridge global dengan SDK for PHP, lingkungan PHP Anda harus memiliki AWS ekstensi [Common Runtime AWS (CRT](guide_crt.md)) yang diinstal.

Contoh berikut menggunakan [PutEvents](https://docs.aws.amazon.com//aws-sdk-php/v3/api/api-eventbridge-2015-10-07.html#putevents)metode `EventBridgeClient` untuk mengirim peristiwa tunggal ke endpoint EventBridge global.

```
<?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]
]);
```

[Posting blog ini](https://aws.amazon.com/blogs//compute/introducing-global-endpoints-for-amazon-eventbridge/) berisi informasi lebih lanjut tentang titik akhir EventBridge global.