

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

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