

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

# Menggunakan penyedia kredensi AWS SDK untuk PHP Versi 3
<a name="guide_credentials"></a>

Untuk informasi referensi tentang mekanisme kredensional yang tersedia AWS SDKs, lihat [Kredensial dan akses](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) di Panduan Referensi Alat *AWS SDKs dan* Alat.

**penting**  
Untuk keamanan, kami *sangat menyarankan* Anda untuk **tidak** menggunakan akun root untuk AWS akses. Selalu lihat [praktik terbaik Keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di *Panduan Pengguna IAM* untuk rekomendasi keamanan terbaru.

Peran penyedia kredensial di AWS SDK untuk PHP Versi 3 adalah untuk mencari dan menyediakan kredensil ke klien SDK. Layanan AWS SDK menggunakan kredensil yang disumberkannya untuk mengautentikasi dengan layanan dengan menandatangani setiap permintaan secara kriptografis. Kredensil biasanya terdiri dari kunci akses—ID kunci akses dan kunci akses rahasia bersama-sama. 

Saat Anda menggunakan kredensil sementara, seperti saat Anda [menyiapkan autentikasi Pusat Identitas IAM](credentials.md#use-idc-for-auth) atau mengonfigurasi runtime Anda untuk [mengambil peran IAM](assumerole-provider.md), token sesi ditambahkan ke kunci akses, menyediakan akses terbatas waktu ke sumber daya. AWS 

## Apa yang dimaksud dengan penyedia kredensi di AWS SDK untuk PHP versi 3?
<a name="cred-provider-defn-php"></a>

Penyedia kredensi adalah fungsi yang mengembalikan a `GuzzleHttp\Promise\PromiseInterface` yang dipenuhi dengan `Aws\Credentials\CredentialsInterface` instance atau ditolak dengan. `Aws\Exception\CredentialsException` [SDK menyediakan beberapa implementasi](built-in-providers-in-the-sdk.md) fungsi penyedia kredensi atau Anda dapat [menerapkan logika kustom Anda sendiri](creating-a-custom-provider.md) untuk membuat kredensil atau untuk mengoptimalkan pemuatan kredenal.

Penyedia kredensi diteruskan ke opsi konstruktor `credentials` klien. Penyedia kredensi bersifat asinkron, yang memaksa mereka untuk dievaluasi secara malas setiap kali operasi API dipanggil. Dengan demikian, meneruskan fungsi penyedia kredensi ke konstruktor klien SDK tidak segera memvalidasi kredensialnya. Jika penyedia kredensi tidak mengembalikan objek kredensial, operasi API akan ditolak dengan file. `Aws\Exception\CredentialsException`

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the ECS credential provider. 
$provider = CredentialProvider::ecsCredentials();
// Be sure to memoize the credentials.
$memoizedProvider = CredentialProvider::memoize($provider);

// Pass the provider to the client
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
```

# Memahami rantai penyedia kredensi default di AWS SDK untuk PHP Versi 3
<a name="guide_credentials_default_chain"></a>

Rantai penyedia kredenal default terdiri dari serangkaian penyedia kredensi bawaan yang dipanggil SDK. Ini diimplementasikan oleh fungsi [penyedia kredensi DefaultProvider](defaultprovider-provider.md) tanpa parameter. Setelah kredensi yang valid ditemukan, pencarian dihentikan.

Penyedia kredensi AWS SDK untuk PHP mengeksekusi dengan urutan sebagai berikut:
+ [**`env`provider**](env-provider.md) - SDK mencari [kunci AWS akses yang telah ditetapkan sebagai variabel lingkungan](https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html).
+ [**`assumeRoleWithWebIdentityCredentialProvider`penyedia**](assume-role-with-web-identity-provider.md) - SDK mencari peran IAM dan pengaturan file token identitas web.
+ Pada titik ini dalam rantai, SDK mencari konfigurasi dalam file bersama AWS `config` dan `credentials` file. SDK mencari konfigurasi di bawah profil “default”, tetapi jika variabel `AWS_PROFILE` lingkungan disetel, SDK menggunakan nilai profil bernama.
  +  [**`sso`penyedia**](sso-provider.md) - SDK mencari [pengaturan konfigurasi Pusat Identitas IAM](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#sso-token-config) di file bersama`config`.
  +  [**`login provider`**](login-provider.md)- SDK mencari pengaturan konfigurasi sesi login AWS konsol di `config` file bersama.
  + [**`process`penyedia**](process-provider.md) - SDK mencari `credential_process` pengaturan dalam `credentials` file bersama.
  + [**`ini`penyedia**](ini-provider.md) - SDK mencari AWS kredensi atau informasi peran IAM dalam file bersama. `credentials`
  + [**`process`penyedia**](process-provider.md) - SDK mencari `credential_process` pengaturan dalam `config` file bersama.
  + [**`ini`penyedia**](ini-provider.md) - SDK mencari AWS kredensi atau informasi peran IAM dalam file bersama. `config`
+ [**`ecsCredentials`penyedia**](ecscredentials-provider.md) - SDK mencari variabel lingkungan `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ` atau `AWS_CONTAINER_CREDENTIALS_FULL_URI` yang memberikan informasi untuk memperoleh kredensi sementara.
+ [**`instanceProfile`penyedia**](instanceprofile-provider.md) - SDK menggunakan layanan Metadata Instans EC2 untuk mendapatkan peran IAM yang ditentukan dalam profil instance. Dengan menggunakan informasi peran, SDK memperoleh kredensi sementara.

**catatan**  
Hasil dari penyedia default secara otomatis memoisasi.

Anda dapat meninjau kode untuk rantai dalam [kode GitHub sumber](https://github.com/aws/aws-sdk-php/blob/0a99dab427f0a1c082775301141aeac3558691ad/src/Credentials/CredentialProvider.php#L77).

# Penyedia kredensi bawaan di AWS SDK untuk PHP Versi 3
<a name="built-in-providers-in-the-sdk"></a>

SDK menyediakan beberapa penyedia kredensi bawaan yang dapat Anda gunakan secara individual atau gabungkan dalam rantai penyedia [kredensi khusus](chaining-providers.md). 

Saat Anda menentukan penyedia kredensi selama pembuatan klien layanan, SDK mencoba memuat kredensi hanya dengan menggunakan penyedia kredensi yang ditentukan. Itu tidak menggunakan [rantai penyedia kredensi default](guide_credentials_default_chain.md). Jika Anda tahu bahwa Anda ingin klien layanan menggunakan `instanceProfile` penyedia, Anda dapat melakukan hubungan pendek rantai default dengan menentukan `instanceProfile` penyedia di konstruktor klien layanan:

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'credentials' => $memoizedProvider  // The default credential provider chain is not used.
]);
```

**penting**  
Penyedia kredensi dipanggil setiap kali operasi API dilakukan. Jika memuat kredensi adalah tugas yang mahal (misalnya, memuat dari disk atau sumber daya jaringan), atau jika kredenal tidak di-cache oleh penyedia Anda, pertimbangkan untuk membungkus penyedia kredensi Anda dalam suatu fungsi. `Aws\Credentials\CredentialProvider::memoize` Penyedia kredensi default yang digunakan oleh SDK secara otomatis memoisasi.

**Topics**
+ [`login`penyedia di SDK for PHP](login-provider.md)
+ [`assumeRole`penyedia di SDK for PHP](assumerole-provider.md)
+ [`sso`penyedia di SDK for PHP](sso-provider.md)
+ [`defaultProvider`penyedia di SDK for PHP](defaultprovider-provider.md)
+ [`ecsCredentials`penyedia di SDK for PHP](ecscredentials-provider.md)
+ [`env`penyedia di SDK for PHP](env-provider.md)
+ [`assumeRoleWithWebIdentityCredentialProvider`penyedia di SDK for PHP](assume-role-with-web-identity-provider.md)
+ [`ini`penyedia di SDK for PHP](ini-provider.md)
+ [`process`penyedia di SDK for PHP](process-provider.md)
+ [`instanceProfile`penyedia di SDK for PHP](instanceprofile-provider.md)

# `login`penyedia di SDK for PHP
<a name="login-provider"></a>

`Aws\Credentials\CredentialProvider::login`mencoba memuat kredenal yang dikonfigurasi oleh sesi login berbasis browser yang difasilitasi oleh alat seperti CLI. AWS Setelah otentikasi, buat AWS kredenal sementara yang berfungsi di seluruh lokal AWS SDKs dan alat.

Dengan proses ini, Anda dapat mengautentikasi menggunakan kredensi root yang dibuat selama pengaturan akun awal, pengguna IAM, atau identitas federasi dari penyedia identitas Anda, dan SDK for AWS PHP secara otomatis mengelola kredensi sementara untuk Anda. Pendekatan ini meningkatkan keamanan dengan menghilangkan kebutuhan untuk menyimpan kredensi jangka panjang secara lokal.

Ketika Anda menjalankan `aws login` perintah, Anda dapat memilih dari sesi konsol aktif Anda, atau masuk melalui alur otentikasi berbasis browser dan ini akan secara otomatis menghasilkan kredensi sementara. AWS SDK for PHP akan secara otomatis me-refresh kredenal ini, menggunakan layanan Sign-In, hingga 12 jam.

Penyedia login mencoba memuat token akses yang dihasilkan oleh alur kerja sesi login yang disebutkan sebelumnya, berdasarkan profil yang disediakan. Jika tidak ada profil yang disediakan saat memanggil penyedia, itu akan mencoba menyelesaikan profil dengan terlebih dahulu memeriksa variabel `AWS_PROFILE` lingkungan, sebelum kembali ke profil`default`. Konfigurasi dalam kode dapat diteruskan ke penyedia, di mana ia akan mencari `region` nilai untuk klien layanan Masuk yang digunakan untuk menyegarkan kredensional. Jika tidak ada wilayah yang disediakan dalam larik konfigurasi, penyedia akan mencoba menyelesaikan wilayah dengan memeriksa variabel `AWS_REGION` lingkungan, lalu nilai wilayah ditetapkan dalam profil yang diselesaikan. Jika tidak ada wilayah yang dapat ditemukan, penyedia akan mengembalikan janji yang ditolak dengan instruksi tentang cara mengonfigurasi wilayah.

Penyedia disebut sebagai bagian dari rantai default dan dapat dipanggil secara langsung.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::login(<profile_name>, ['region' => <region>]);
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region' => 'us-west-2',
    'credentials' => $provider
]);
```

Secara default, jika tidak ada konfigurasi kredensional yang disediakan pada klien layanan yang ingin Anda gunakan, penyedia ini akan dipanggil sebagai bagian dari rantai `defaultProvider()` kredensial. Dalam skenario ini, wilayah klien layanan secara otomatis diteruskan ke `login()` penyedia. Juga dalam skenario ini, nilai profil yang diteruskan ke penyedia login akan diselesaikan dengan memeriksa variabel `AWS_PROFILE` lingkungan, sebelum kembali ke profil`default`.

# `assumeRole`penyedia di SDK for PHP
<a name="assumerole-provider"></a>

Jika Anda menggunakan `Aws\Credentials\AssumeRoleCredentialProvider` untuk membuat kredensional dengan mengambil peran, Anda perlu memberikan `'client'` informasi dengan `StsClient` objek dan `'assume_role_params'` detail, seperti yang ditunjukkan.

**catatan**  
Untuk menghindari pengambilan AWS STS kredensi yang tidak perlu pada setiap operasi API, Anda dapat menggunakan `memoize` fungsi tersebut untuk menangani penyegaran kredenal secara otomatis saat kredensialnya kedaluwarsa. Lihat kode berikut sebagai contoh.

```
use Aws\Credentials\CredentialProvider;
use Aws\Credentials\InstanceProfileProvider;
use Aws\Credentials\AssumeRoleCredentialProvider;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;

// Passing Aws\Credentials\AssumeRoleCredentialProvider options directly
$profile = new InstanceProfileProvider();
$ARN = "arn:aws:iam::123456789012:role/xaccounts3access";
$sessionName = "s3-access-example";

$assumeRoleCredentials = new AssumeRoleCredentialProvider([
    'client' => new StsClient([
        'region' => 'us-east-2',
        'version' => '2011-06-15',
        'credentials' => $profile
    ]),
    'assume_role_params' => [
        'RoleArn' => $ARN,
        'RoleSessionName' => $sessionName,
    ],
]);

// To avoid unnecessarily fetching STS credentials on every API operation,
// the memoize function handles automatically refreshing the credentials when they expire
$provider = CredentialProvider::memoize($assumeRoleCredentials);

$client = new S3Client([
    'region'      => 'us-east-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

Untuk informasi lebih lanjut mengenai`'assume_role_params'`, lihat [AssumeRole](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sts-2011-06-15.html#assumerole).

# `sso`penyedia di SDK for PHP
<a name="sso-provider"></a>

`Aws\Credentials\CredentialProvider::sso`adalah penyedia kredensi masuk tunggal. Penyedia ini juga dikenal sebagai penyedia AWS IAM Identity Center kredensi.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$credentials = CredentialProvider::sso('profile default');

$s3 = new Aws\S3\S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => $credentials
]);
```

Jika Anda menggunakan profil bernama, ganti nama profil Anda dengan '`default`' pada contoh sebelumnya. Untuk mempelajari selengkapnya tentang menyiapkan profil bernama, lihat [Dibagikan `config` dan `credentials` file](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) di *Panduan Referensi Alat AWS SDKs dan Alat*. Atau, Anda dapat menggunakan variabel [https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)lingkungan untuk menentukan pengaturan profil mana yang akan digunakan. 

Untuk memahami lebih lanjut cara kerja penyedia Pusat Identitas IAM, lihat [Memahami autentikasi Pusat Identitas IAM](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html) di Panduan Referensi *Alat AWS SDKs dan Alat*.

# `defaultProvider`penyedia di SDK for PHP
<a name="defaultprovider-provider"></a>

 `Aws\Credentials\CredentialProvider::defaultProvider`adalah penyedia kredensi default dan juga disebut rantai [penyedia kredensi default](guide_credentials_default_chain.md). Penyedia ini digunakan jika Anda menghilangkan `credentials` opsi saat membuat klien. Misalnya, jika Anda membuat S3Client seperti yang ditunjukkan pada cuplikan berikut, SDK akan menggunakan penyedia default:

```
$client = new S3Client([
    'region' => 'us-west-2'
]);
```

Anda juga dapat menggunakan DefaultProvider dalam kode jika Anda ingin menyediakan parameter ke penyedia kredensi tertentu dalam rantai. Misalnya contoh berikut menyediakan batas waktu koneksi kustom dan pengaturan coba lagi jika fungsi `ecsCredentials` penyedia digunakan.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::defaultProvider([
    'timeout' => '1.5',
    'retries' => 5
]);

$client = new S3Client([
    'region' => 'us-west-2',
    'credentials' => $provider
]);
```

# `ecsCredentials`penyedia di SDK for PHP
<a name="ecscredentials-provider"></a>

 `Aws\Credentials\CredentialProvider::ecsCredentials`mencoba memuat kredensi dengan `GET` permintaan, yang URI-nya ditentukan oleh variabel lingkungan `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` dalam wadah.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ecsCredentials();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
```

# `env`penyedia di SDK for PHP
<a name="env-provider"></a>

Menggunakan variabel lingkungan untuk memuat kredensi Anda mencegah Anda berbagi kunci akses AWS rahasia secara tidak sengaja. Kami menyarankan Anda untuk tidak pernah menambahkan kunci AWS akses Anda langsung ke klien dalam file produksi apa pun.

Untuk mengautentikasi ke Amazon Web Services, SDK terlebih dahulu memeriksa kredensi di variabel lingkungan Anda. SDK menggunakan `getenv()` fungsi untuk mencari variabel`AWS_ACCESS_KEY_ID`,`AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` lingkungan. Kredensial ini disebut sebagai kredensial lingkungan. Untuk petunjuk tentang cara mendapatkan nilai ini, lihat [Mengautentikasi menggunakan kredensi jangka pendek di Panduan Referensi](https://docs.aws.amazon.com/sdkref/latest/guide/access-temp-idc.html) *Alat AWS SDKs dan Alat*.

Jika Anda meng-hosting aplikasi [AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP_eb.html), Anda dapat mengatur variabel`AWS_ACCESS_KEY_ID`,`AWS_SECRET_KEY`, dan `AWS_SESSION_TOKEN` lingkungan [melalui AWS Elastic Beanstalk konsol](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-softwaresettings.html#environments-cfg-softwaresettings-console) sehingga SDK dapat menggunakan kredenal tersebut secara otomatis.

Untuk informasi selengkapnya tentang cara mengatur variabel lingkungan, lihat [Dukungan variabel lingkungan](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) di *Panduan Referensi Alat AWS SDKs dan Alat*. Juga, untuk daftar semua variabel lingkungan yang didukung oleh sebagian besar AWS SDKs, lihat [Daftar variabel lingkungan](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html#EVarSettings).

Anda juga dapat mengatur variabel lingkungan di baris perintah, seperti yang ditunjukkan di sini.

 **Linux** 

```
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   # The access key for your Akun AWS.
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   # The secret access key for your Akun AWS.
$ export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
   # The temporary session key for your Akun AWS. 
   # The AWS_SECURITY_TOKEN environment variable can also be used, but is only supported for backward compatibility purposes.
   # AWS_SESSION_TOKEN is supported by multiple AWS SDKs other than PHP.
```

 **Windows** 

```
C:\> SET  AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
   # The access key for your Akun AWS.
C:\> SET  AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   # The secret access key for your Akun AWS.
C:\> SET AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of security token>
   # The temporary session key for your Akun AWS. 
   # The AWS_SECURITY_TOKEN environment variable can also be used, but is only supported for backward compatibility purposes.
   # AWS_SESSION_TOKEN is supported by multiple AWS SDKs besides PHP.
```

 `Aws\Credentials\CredentialProvider::env`mencoba memuat kredensi dari variabel lingkungan.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => CredentialProvider::env()
]);
```

# `assumeRoleWithWebIdentityCredentialProvider`penyedia di SDK for PHP
<a name="assume-role-with-web-identity-provider"></a>

 `Aws\Credentials\CredentialProvider::assumeRoleWithWebIdentityCredentialProvider`mencoba memuat kredensional dengan mengasumsikan peran. Jika variabel lingkungan `AWS_ROLE_ARN` dan `AWS_WEB_IDENTITY_TOKEN_FILE` ada, penyedia akan mencoba untuk mengambil peran yang ditentukan saat `AWS_ROLE_ARN` menggunakan token pada disk pada jalur lengkap yang ditentukan dalam`AWS_WEB_IDENTITY_TOKEN_FILE`. Jika variabel lingkungan digunakan, penyedia akan mencoba untuk mengatur sesi dari variabel `AWS_ROLE_SESSION_NAME` lingkungan.

Jika variabel lingkungan tidak disetel, penyedia akan menggunakan profil default, atau yang ditetapkan sebagai`AWS_PROFILE`. Penyedia membaca profil dari `~/.aws/credentials` dan secara `~/.aws/config` default, dan dapat membaca dari profil yang ditentukan dalam opsi `filename` konfigurasi. Penyedia akan mengambil peran dalam `role_arn` profil, membaca token dari jalur lengkap yang ditetapkan`web_identity_token_file`. `role_session_name`akan digunakan jika diatur pada profil.

Penyedia disebut sebagai bagian dari rantai default dan dapat dipanggil secara langsung.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::assumeRoleWithWebIdentityCredentialProvider();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

Secara default, penyedia kredensi ini akan mewarisi wilayah yang dikonfigurasi yang akan digunakan oleh StsClient untuk mengambil peran. Secara opsional, penuh StsClient dapat disediakan. Kredensi harus ditetapkan seperti `false` pada apa pun yang disediakan. StsClient

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;
use Aws\Sts\StsClient;

$stsClient = new StsClient([
    'region'      => 'us-west-2',
    'version'     => 'latest',
    'credentials' => false
])

$provider = CredentialProvider::assumeRoleWithWebIdentityCredentialProvider([
    'stsClient' => $stsClient
]);
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

# `ini`penyedia di SDK for PHP
<a name="ini-provider"></a>

 `Aws\Credentials\CredentialProvider::ini`mencoba memuat kredensional dari file bersama `config` dan`credentials`. Secara default, SDK mencoba memuat profil “default” dari AWS `credentials` file bersama yang terletak di`~/.aws/credentials`. Jika SDK menemukan variabel `AWS_SDK_LOAD_NONDEFAULT_CONFIG` lingkungan, SDK juga memeriksa profil “default” dalam AWS `config` file bersama yang terletak di`~/.aws/config`.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::ini();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

Anda dapat menggunakan profil kustom atau lokasi file.ini dengan memberikan argumen ke fungsi yang membuat penyedia.

```
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::ini($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

# `process`penyedia di SDK for PHP
<a name="process-provider"></a>

 `Aws\Credentials\CredentialProvider::process`mencoba memuat kredensi dengan mengeksekusi `credential_process` nilai yang ditentukan dalam profil dalam file konfigurasi [bersama AWS](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html). 

Secara default, SDK mencoba memuat profil “default” terlebih dahulu dari AWS `credentials` file bersama yang terletak di`~/.aws/credentials`. Jika profil “default” tidak ditemukan di `credentials` file bersama, SDK akan terlihat di `config` file bersama untuk profil default. Berikut ini adalah contoh konfigurasi untuk `credentials` file bersama.

```
[default]
credential_process = /path/to/file/credential_returning_executable.sh --custom-command custom_parameter
```

SDK akan memanggil `credential_process` perintah persis seperti yang diberikan dengan menggunakan `shell_exec` fungsi PHP dan kemudian membaca data JSON dari stdout. `credential_process`Harus menulis kredensi ke stdout dalam format berikut:

```
{
    "Version": 1,
    "AccessKeyId": "",
    "SecretAccessKey": "",
    "SessionToken": "",
    "Expiration": ""
}
```

 `SessionToken`dan `Expiration` bersifat opsional. Jika ada, kredensialnya akan diperlakukan sebagai sementara.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::process();
// Cache the results in a memoize function to avoid loading and parsing
// the ini file on every API operation
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

Anda dapat menggunakan profil kustom atau lokasi file.ini dengan memberikan argumen ke fungsi yang membuat penyedia.

```
$profile = 'production';
$path = '/full/path/to/credentials.ini';

$provider = CredentialProvider::process($profile, $path);
$provider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);
```

# `instanceProfile`penyedia di SDK for PHP
<a name="instanceprofile-provider"></a>

 `Aws\Credentials\CredentialProvider::instanceProfile`mencoba memuat kredensional untuk peran IAM yang ditentukan dalam profil instans Amazon EC2.

```
use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

$provider = CredentialProvider::instanceProfile();
// Be sure to memoize the credentials
$memoizedProvider = CredentialProvider::memoize($provider);

$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $memoizedProvider
]);
```

Secara default, penyedia mencoba lagi mengambil kredensi hingga tiga kali. Jumlah percobaan ulang dapat diatur dengan `retries` opsi, dan dinonaktifkan sepenuhnya dengan mengatur opsi `0` seperti yang ditunjukkan pada kode berikut.

```
use Aws\Credentials\CredentialProvider;

$provider = CredentialProvider::instanceProfile([
    'retries' => 0
]);
$memoizedProvider = CredentialProvider::memoize($provider);
```

Jika variabel lingkungan `AWS_METADATA_SERVICE_NUM_ATTEMPTS` tersedia, nilainya lebih diutamakan daripada opsi 'coba ulang' yang ditunjukkan sebelumnya. 

**catatan**  
Anda dapat menonaktifkan upaya pemuatan ini dari profil instans Amazon EC2 dengan menyetel variabel `AWS_EC2_METADATA_DISABLED` lingkungan ke. `true`

# Merantai penyedia kredensi di SDK for PHP
<a name="chaining-providers"></a>

Anda dapat menghubungkan penyedia kredensi dengan menggunakan `Aws\Credentials\CredentialProvider::chain()` fungsi tersebut. Fungsi ini menerima sejumlah argumen variadik, yang masing-masing merupakan fungsi penyedia kredensi. Fungsi ini kemudian mengembalikan fungsi baru yang merupakan komposisi fungsi yang disediakan, sehingga mereka dipanggil satu demi satu sampai salah satu penyedia mengembalikan janji yang berhasil dipenuhi.

`defaultProvider`Menggunakan komposisi ini untuk memeriksa beberapa penyedia sebelum gagal. Sumber `defaultProvider` menunjukkan penggunaan `chain` fungsi.

```
// This function returns a provider
public static function defaultProvider(array $config = [])
{
    // This function is the provider, which is actually the composition
    // of multiple providers. Notice that we are also memoizing the result by
    // default.
    return self::memoize(
        self::chain(
            self::env(),
            self::ini(),
            self::instanceProfile($config)
        )
    );
}
```

# Membuat penyedia kredensi khusus untuk digunakan dengan SDK for PHP
<a name="creating-a-custom-provider"></a>

Penyedia kredensi hanyalah fungsi yang ketika dipanggil mengembalikan promise (`GuzzleHttp\Promise\PromiseInterface`) yang dipenuhi dengan `Aws\Credentials\CredentialsInterface` objek atau ditolak dengan. `Aws\Exception\CredentialsException`

Praktik terbaik untuk membuat penyedia adalah membuat fungsi yang dipanggil untuk membuat penyedia kredensi yang sebenarnya. Sebagai contoh, inilah sumber `env` penyedia (sedikit dimodifikasi untuk tujuan contoh). Perhatikan bahwa itu adalah fungsi yang mengembalikan fungsi penyedia yang sebenarnya. Ini memungkinkan Anda untuk dengan mudah membuat penyedia kredensi dan menyebarkannya sebagai nilai.

```
use GuzzleHttp\Promise;
use GuzzleHttp\Promise\RejectedPromise;

// This function CREATES a credential provider
public static function env()
{
    // This function IS the credential provider
    return function () {
        // Use credentials from environment variables, if available
        $key = getenv(self::ENV_KEY);
        $secret = getenv(self::ENV_SECRET);
        if ($key && $secret) {
            return Create::promise_for(
                new Credentials($key, $secret, getenv(self::ENV_SESSION))
            );
        }

        $msg = 'Could not find environment variable '
            . 'credentials in ' . self::ENV_KEY . '/' . self::ENV_SECRET;
        return new RejectedPromise(new CredentialsException($msg));
    };
}
```

# Memoisasi kredensi di SDK for PHP
<a name="memoizing-credentials"></a>

Terkadang Anda mungkin perlu membuat penyedia kredensi yang mengingat nilai pengembalian sebelumnya. Ini dapat berguna untuk kinerja saat memuat kredensil adalah operasi yang mahal atau saat menggunakan `Aws\Sdk` kelas untuk berbagi penyedia kredensi di beberapa klien. Anda dapat menambahkan memoisasi ke penyedia kredensi dengan membungkus fungsi penyedia kredensi dalam suatu fungsi. `memoize`

```
use Aws\Credentials\CredentialProvider;

$provider = CredentialProvider::instanceProfile();
// Wrap the actual provider in a memoize function
$provider = CredentialProvider::memoize($provider);

// Pass the provider into the Sdk class and share the provider
// across multiple clients. Each time a new client is constructed,
// it will use the previously returned credentials as long as
// they haven't yet expired.
$sdk = new Aws\Sdk(['credentials' => $provider]);

$s3 = $sdk->getS3(['region' => 'us-west-2', 'version' => 'latest']);
$ec2 = $sdk->getEc2(['region' => 'us-west-2', 'version' => 'latest']);

assert($s3->getCredentials() === $ec2->getCredentials());
```

Saat kredensil yang dimemoisasi kedaluwarsa, pembungkus memoize memanggil penyedia yang dibungkus dalam upaya untuk menyegarkan kredensil.

# Asumsikan peran IAM menggunakan AWS SDK untuk PHP Versi 3
<a name="guide_credentials_assume_role"></a>

## Menggunakan peran IAM untuk kredenal variabel instans Amazon EC2
<a name="instance-profile-credentials"></a>

Jika Anda menjalankan aplikasi di instans Amazon EC2, cara yang lebih disukai untuk memberikan kredensi untuk melakukan panggilan AWS adalah dengan menggunakan [peran IAM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) untuk mendapatkan kredenal keamanan sementara.

Saat Anda menggunakan peran IAM, Anda tidak perlu khawatir tentang manajemen kredensi dari aplikasi Anda. Mereka mengizinkan instance untuk “mengambil” peran dengan mengambil kredenal sementara dari server metadata instans Amazon EC2.

Kredensial sementara, sering disebut sebagai **kredensial profil instance**, memungkinkan akses ke tindakan dan sumber daya yang diizinkan oleh kebijakan peran tersebut. Amazon EC2 menangani semua kerja keras untuk mengautentikasi instans secara aman ke layanan IAM untuk mengambil peran, dan menyegarkan kredenal peran yang diambil secara berkala. Ini membuat aplikasi Anda aman dengan hampir tidak ada pekerjaan di pihak Anda. *Untuk daftar layanan yang menerima kredenal keamanan sementara, lihat [AWS layanan yang bekerja dengan IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).*

**catatan**  
Untuk menghindari menekan layanan metadata setiap saat, Anda dapat meneruskan instance `Aws\CacheInterface` in sebagai `'credentials'` opsi ke konstruktor klien. Ini memungkinkan SDK menggunakan kredenal profil instans cache sebagai gantinya. Untuk detailnya, lihat [Konfigurasi untuk AWS SDK untuk PHP Versi 3](guide_configuration.md).

*Untuk informasi selengkapnya tentang mengembangkan aplikasi Amazon EC2 menggunakan SDKs, lihat [Menggunakan peran IAM untuk instans Amazon EC2](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html) di Panduan Referensi Alat dan Alat.AWS SDKs *

### Membuat dan menetapkan peran IAM ke instans Amazon EC2
<a name="create-and-assign-an-iam-role-to-an-ec2-instance"></a>

1. Buat klien IAM.

    **Impor** 

   ```
   require 'vendor/autoload.php';
   
   use Aws\Iam\IamClient;
   ```

    **Kode Sampel** 

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

1. Buat peran IAM dengan izin untuk tindakan dan sumber daya yang akan Anda gunakan.

    **Kode Sampel** 

   ```
   $result = $client->createRole([
       'AssumeRolePolicyDocument' => 'IAM JSON Policy', // REQUIRED
       'Description' => 'Description of Role',
       'RoleName' => 'RoleName', // REQUIRED
   ]);
   ```

1. Buat profil instans IAM dan simpan Amazon Resource Name (ARN) dari hasilnya.
**catatan**  
Jika Anda menggunakan konsol IAM alih-alih AWS SDK untuk PHP, konsol akan membuat profil instance secara otomatis dan memberinya nama yang sama dengan peran yang sesuai dengannya.  
 **Kode Sampel**   

   ```
   $IPN = 'InstanceProfileName';
   
   $result = $client->createInstanceProfile([
       'InstanceProfileName' => $IPN ,
   ]);
   
   $ARN = $result['Arn'];
   $InstanceID =  $result['InstanceProfileId'];
   ```

1. Buat klien Amazon EC2.

    **Impor** 

   ```
   require 'vendor/autoload.php';
   
   use Aws\Ec2\Ec2Client;
   ```

    **Kode Sampel** 

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

1. Tambahkan profil instans ke instans Amazon EC2 yang sedang berjalan atau dihentikan. Gunakan nama profil instance peran IAM Anda.

    **Kode Sampel** 

   ```
    $result = $ec2Client->associateIamInstanceProfile([
       'IamInstanceProfile' => [
           'Arn' => $ARN,
           'Name' => $IPN,
       ],
       'InstanceId' => $InstanceID
   ]);
   ```

Untuk informasi lebih lanjut, lihat [Peran IAM untuk Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) dalam *Panduan Pengguna Amazon EC2*.

## Menggunakan peran IAM untuk tugas Amazon ECS
<a name="ecs-credentials"></a>

Tugas di Amazon Elastic Container Service (Amazon ECS) dapat mengambil peran IAM untuk melakukan panggilan API. AWS Ini adalah strategi untuk mengelola kredensional untuk digunakan aplikasi Anda, mirip dengan cara profil instans Amazon EC2 memberikan kredensional ke instans Amazon EC2.

[Alih-alih membuat dan mendistribusikan AWS kredensi jangka panjang ke container atau menggunakan peran instans Amazon EC2, Anda dapat mengaitkan peran IAM yang menggunakan kredenal sementara dengan definisi tugas ECS atau operasi API. `RunTask`](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ecs-2014-11-13.html#runtask) 

Untuk informasi selengkapnya tentang penggunaan peran IAM yang dapat diasumsikan oleh tugas container, lihat topik [peran IAM Tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) di Panduan Pengembang *Amazon ECS.* Untuk contoh penggunaan peran IAM tugas dalam bentuk definisi tugas `taskRoleArn` dalam, lihat [Contoh definisi tugas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-example-taskdefs.html) juga di Panduan *Pengembang Amazon ECS*.

## Dengan asumsi peran IAM di yang lain Akun AWS
<a name="assuming-an-iam-role-in-another-aws-account"></a>

Ketika Anda bekerja di Akun AWS (Akun A) dan ingin mengambil peran di akun lain (Akun B), Anda harus terlebih dahulu membuat peran IAM di Akun B. Peran ini memungkinkan entitas di akun Anda (Akun A) untuk melakukan tindakan tertentu di Akun B. Untuk informasi selengkapnya tentang akses lintas akun, lihat [Tutorial: Mendelegasikan Akses di Seluruh AWS Akun Menggunakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html) Peran IAM.

Setelah Anda membuat peran di Akun B, catat ARN Peran. Anda akan menggunakan ARN ini ketika Anda mengambil peran dari Akun A. Anda mengambil peran menggunakan AWS kredenal yang terkait dengan entitas Anda di Akun A.

Buat AWS STS klien dengan kredensi untuk Anda. Akun AWS Berikut ini, kami menggunakan profil kredensial, tetapi Anda dapat menggunakan metode apa pun. Dengan AWS STS klien yang baru dibuat, panggil assume-role dan berikan SessionName kustom. Ambil kredensi sementara baru dari hasilnya. Kredenal bertahan satu jam secara default.

 **Kode Sampel** 

```
$stsClient = new Aws\Sts\StsClient([
    'profile' => 'default',
    'region' => 'us-east-2',
    'version' => '2011-06-15'
]);

$ARN = "arn:aws:iam::123456789012:role/xaccounts3access";
$sessionName = "s3-access-example";

$result = $stsClient->AssumeRole([
      'RoleArn' => $ARN,
      'RoleSessionName' => $sessionName,
]);

 $s3Client = new S3Client([
    'version'     => '2006-03-01',
    'region'      => 'us-west-2',
    'credentials' =>  [
        'key'    => $result['Credentials']['AccessKeyId'],
        'secret' => $result['Credentials']['SecretAccessKey'],
        'token'  => $result['Credentials']['SessionToken']
    ]
]);
```

Untuk informasi selengkapnya, lihat [Menggunakan Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html) atau [AssumeRole](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sts-2011-06-15.html#assumerole)di Referensi AWS SDK untuk PHP API.

## Menggunakan peran IAM dengan identitas web
<a name="using-an-iam-role-with-web-identity"></a>

Federasi Identitas Web memungkinkan pelanggan untuk menggunakan penyedia identitas pihak ketiga untuk otentikasi saat mengakses sumber daya. AWS Sebelum Anda dapat mengambil peran dengan identitas web, Anda harus membuat peran IAM dan mengonfigurasi penyedia identitas web (iDP). Untuk informasi selengkapnya, lihat [Membuat Peran untuk Identitas Web atau Federasi OpenID Connect (Konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html).

Setelah [membuat penyedia identitas](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html) dan [membuat peran untuk identitas web Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html), gunakan AWS STS klien untuk mengautentikasi pengguna. Berikan webIdentityToken dan ProviderId untuk identitas Anda, dan ARN Peran untuk peran IAM dengan izin untuk pengguna.

 **Kode Sampel** 

```
$stsClient = new Aws\Sts\StsClient([
    'profile' => 'default',
    'region' => 'us-east-2',
    'version' => '2011-06-15'
]);

$ARN = "arn:aws:iam::123456789012:role/xaccounts3access";
$sessionName = "s3-access-example";
$duration = 3600;

$result = $stsClient->AssumeRoleWithWebIdentity([
      'WebIdentityToken' => "FACEBOOK_ACCESS_TOKEN",
      'ProviderId' => "graph.facebook.com",
      'RoleArn' => $ARN,
      'RoleSessionName' => $sessionName,
]);

 $s3Client = new S3Client([
    'version'     => '2006-03-01',
    'region'      => 'us-west-2',
    'credentials' =>  [
        'key'    => $result['Credentials']['AccessKeyId'],
        'secret' => $result['Credentials']['SecretAccessKey'],
        'token'  => $result['Credentials']['SessionToken']
    ]
]);
```

Untuk informasi selengkapnya, lihat [AssumeRoleWithWebIdentity—Federasi Melalui Penyedia Identitas Berbasis Web](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html#api_assumerolewithwebidentity.html) atau [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-sts-2011-06-15.html#assumerolewithwebidentity)di Referensi AWS SDK untuk PHP API.

## Asumsikan peran dengan profil
<a name="assume-role-with-profile"></a>

### Tentukan profil di `~/.aws/credentials`
<a name="assume-role-profile-credentials-file"></a>

Anda dapat mengonfigurasi AWS SDK untuk PHP untuk menggunakan peran IAM dengan mendefinisikan profil di. `~/.aws/credentials`

Buat profil baru dengan `role_arn` pengaturan untuk peran yang ingin Anda asumsikan. Sertakan juga `source_profile` pengaturan untuk profil lain dengan kredensional yang memiliki izin untuk mengambil peran IAM. Untuk detail selengkapnya tentang setelan konfigurasi ini, lihat [Mengasumsikan kredensi peran di Panduan](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html) *Referensi Alat AWS SDKs dan Alat*.

Misalnya, dalam hal berikut`~/.aws/credentials`, `project1` profil menetapkan `role_arn` dan menentukan `default` profil sebagai sumber kredensi untuk memverifikasi bahwa entitas yang terkait dengannya dapat mengambil peran tersebut.

```
[project1]
role_arn = arn:aws:iam::123456789012:role/testing
source_profile = default
role_session_name = OPTIONAL_SESSION_NAME

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
aws_session_token= YOUR_AWS_SESSION_TOKEN
```

Jika Anda menyetel variabel `AWS_PROFILE` lingkungan, atau Anda menggunakan `profile` parameter saat membuat instance klien layanan, peran yang ditentukan akan `project1` diasumsikan, menggunakan `default` profil sebagai kredenal sumber.

Cuplikan berikut menunjukkan penggunaan `profile` parameter dalam konstruktor. `S3Client` `S3Client`Akan memiliki izin yang terkait dengan peran yang terkait dengan `project1` profil.

```
$s3 = new Aws\S3\S3Client([
    'region' => 'us-east-1',
    'version' => '2006-03-01',
    'profile' => 'project1'
]);
```

### Tentukan profil di `~/.aws/config`
<a name="assume-role-profile-config-file"></a>

`~/.aws/config`File ini juga dapat berisi profil yang ingin Anda asumsikan. Jika Anda mengatur variabel lingkungan`AWS_SDK_LOAD_NONDEFAULT_CONFIG`, SDK for PHP memuat profil dari file`config`. Bila `AWS_SDK_LOAD_NONDEFAULT_CONFIG` disetel, SDK memuat profil dari keduanya `~/.aws/config` dan`~/.aws/credentials`. Profil dari `~/.aws/credentials` dimuat terakhir dan diutamakan daripada profil dari `~/.aws/config` dengan nama yang sama. Profil dari salah satu lokasi dapat berfungsi sebagai `source_profile` atau profil yang akan diasumsikan.

Contoh berikut menggunakan `project1` profil yang ditentukan dalam `config` file dan `default` profil dalam `credentials` file. `AWS_SDK_LOAD_NONDEFAULT_CONFIG`Ini juga diatur.

```
# Profile in ~/.aws/config.

[profile project1]
role_arn = arn:aws:iam::123456789012:role/testing
source_profile = default
role_session_name = OPTIONAL_SESSION_NAME
```

```
# Profile in ~/.aws/credentials.

[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
aws_session_token= YOUR_AWS_SESSION_TOKEN
```

Saat `S3Client` konstruktor berjalan yang ditampilkan cuplikan berikut, peran yang ditentukan dalam `project1` profil akan diasumsikan menggunakan kredenal yang terkait dengan profil. `default`

```
$s3 = new Aws\S3\S3Client([
    'region' => 'us-east-1',
    'version' => '2006-03-01',
    'profile' => 'project1'
]);
```

# Menggunakan kredensial sementara dari AWS STS SDK for PHP
<a name="guide_credentials_temporary"></a>

 AWS Security Token Service (AWS STS) memungkinkan Anda untuk meminta hak istimewa terbatas, **kredensi sementara** untuk pengguna IAM, atau untuk pengguna yang Anda autentikasi melalui federasi identitas. Untuk pemahaman yang lebih dalam, lihat [Kredensial Keamanan Sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) di Panduan Pengguna *IAM*. Anda dapat menggunakan kredensi keamanan sementara untuk mengakses sebagian besar AWS layanan. *Untuk daftar layanan yang menerima kredenal keamanan sementara, lihat [AWS layanan yang bekerja dengan IAM di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).*

[Salah satu kasus penggunaan umum untuk kredensi sementara adalah memberikan akses aplikasi seluler atau sisi klien ke AWS sumber daya dengan mengautentikasi pengguna melalui penyedia identitas pihak ketiga (lihat Federasi Identitas Web).](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html)

## Mendapatkan kredensi sementara
<a name="getting-temporary-credentials"></a>

AWS STS memiliki beberapa operasi yang mengembalikan kredensi sementara, tetapi `GetSessionToken` operasi ini adalah yang paling sederhana untuk ditunjukkan. Cuplikan berikut mengambil kredensi sementara dengan memanggil `getSessionToken` metode klien STS PHP SDK.

```
$sdk = new Aws\Sdk([
    'region'   => 'us-east-1',
]);

$stsClient = $sdk->createSts();

$result = $stsClient->getSessionToken();
```

Hasil untuk `GetSessionToken` dan AWS STS operasi lainnya selalu mengandung `'Credentials'` nilai. Jika Anda mencetak `$result` (misalnya dengan menggunakan`print_r($result)`), terlihat seperti berikut ini.

```
Array
(
    ...
    [Credentials] => Array
    (
        [SessionToken] => '<base64 encoded session token value>'
        [SecretAccessKey] => '<temporary secret access key value>'
        [Expiration] => 2013-11-01T01:57:52Z
        [AccessKeyId] => '<temporary access key value>'
    )
    ...
)
```

## Memberikan kredensi sementara ke AWS SDK untuk PHP
<a name="providing-temporary-credentials-to-the-sdk-php"></a>

Anda dapat menggunakan kredensi sementara dengan AWS klien lain dengan membuat instance klien dan meneruskan nilai yang diterima secara langsung. AWS STS 

```
use Aws\S3\S3Client;

$result = $stsClient->getSessionToken();

$s3Client = new S3Client([
    'version'     => '2006-03-01',
    'region'      => 'us-west-2',
    'credentials' => [
        'key'    => $result['Credentials']['AccessKeyId'],
        'secret' => $result['Credentials']['SecretAccessKey'],
        'token'  => $result['Credentials']['SessionToken']
    ]
]);
```

Anda juga dapat membuat `Aws\Credentials\Credentials` objek dan menggunakannya saat membuat instance klien.

```
use Aws\Credentials\Credentials;
use Aws\S3\S3Client;

$result = $stsClient->getSessionToken();

$credentials = new Credentials(
    $result['Credentials']['AccessKeyId'],
    $result['Credentials']['SecretAccessKey'],
    $result['Credentials']['SessionToken']
);

$s3Client = new S3Client([
    'version'     => '2006-03-01',
    'region'      => 'us-west-2',
    'credentials' => $credentials
]);
```

Namun, cara *terbaik* untuk memberikan kredensi sementara adalah dengan menggunakan metode `createCredentials()` pembantu yang disertakan dengan. `StsClient` Metode ini mengekstrak data dari AWS STS hasil dan menciptakan `Credentials` objek untuk Anda.

```
$result = $stsClient->getSessionToken();
$credentials = $stsClient->createCredentials($result);

$s3Client = new S3Client([
    'version'     => '2006-03-01',
    'region'      => 'us-west-2',
    'credentials' => $credentials
]);
```

Untuk informasi selengkapnya tentang alasan Anda mungkin perlu menggunakan kredensial sementara dalam aplikasi atau proyek, lihat [Skenario untuk Memberikan Akses Sementara dalam dokumentasi](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html). AWS STS 

# Buat klien anonim di SDK for PHP
<a name="guide_credentials_anonymous"></a>

Dalam beberapa kasus, Anda mungkin ingin membuat klien yang tidak terkait dengan kredensi apa pun. Ini memungkinkan Anda untuk membuat permintaan anonim ke layanan.

Misalnya, Anda dapat mengonfigurasi objek Amazon S3 dan CloudSearch domain Amazon untuk memungkinkan akses anonim.

Untuk membuat klien anonim, Anda mengatur `'credentials'` opsi ke`false`.

```
$s3Client = new S3Client([
    'version'     => 'latest',
    'region'      => 'us-west-2',
    'credentials' => false
]);

// Makes an anonymous request. The object would need to be publicly
// readable for this to succeed.
$result = $s3Client->getObject([
    'Bucket' => 'amzn-s3-demo-bucket',
    'Key'    => 'my-key',
]);
```