CredentialProvider
in package
Credential providers are functions that accept no arguments and return a promise that is fulfilled with an {@see \Aws\Credentials\CredentialsInterface} or rejected with an {@see \Aws\Exception\CredentialsException}.
use Aws\Credentials\CredentialProvider;
$provider = CredentialProvider::defaultProvider();
// Returns a CredentialsInterface or throws.
$creds = $provider()->wait();
Credential providers can be composed to create credentials using conditional logic that can create different credentials in different environments. You can compose multiple providers into a single provider using CredentialProvider::chain. This function accepts providers as variadic arguments and returns a new function that will invoke each provider until a successful set of credentials is returned.
// First try an INI file at this location.
$a = CredentialProvider::ini(null, '/path/to/file.ini');
// Then try an INI file at this location.
$b = CredentialProvider::ini(null, '/path/to/other-file.ini');
// Then try loading from environment variables.
$c = CredentialProvider::env();
// Combine the three providers together.
$composed = CredentialProvider::chain($a, $b, $c);
// Returns a promise that is fulfilled with credentials or throws.
$promise = $composed();
// Wait on the credentials to resolve.
$creds = $promise->wait();
Table of Contents
Constants
- ENV_ACCOUNT_ID = 'AWS_ACCOUNT_ID'
- ENV_ARN = 'AWS_ROLE_ARN'
- ENV_KEY = 'AWS_ACCESS_KEY_ID'
- ENV_PROFILE = 'AWS_PROFILE'
- ENV_ROLE_SESSION_NAME = 'AWS_ROLE_SESSION_NAME'
- ENV_SECRET = 'AWS_SECRET_ACCESS_KEY'
- ENV_SESSION = 'AWS_SESSION_TOKEN'
- ENV_SHARED_CREDENTIALS_FILE = 'AWS_SHARED_CREDENTIALS_FILE'
- ENV_TOKEN_FILE = 'AWS_WEB_IDENTITY_TOKEN_FILE'
Methods
- assumeRole() : callable
- Credential provider that creates credentials using assume role
- assumeRoleWithWebIdentityCredentialProvider() : callable
- Credential provider that creates credentials by assuming role from a Web Identity Token
- cache() : callable
- Wraps a credential provider and saves provided credentials in an instance of Aws\CacheInterface. Forwards calls when no credentials found in cache and updates cache with the results.
- chain() : callable
- Creates an aggregate credentials provider that invokes the provided variadic providers one after the other until a provider returns credentials.
- defaultProvider() : callable
- Create a default credential provider that first checks for environment variables, then checks for assumed role via web identity, then checks for cached SSO credentials from the CLI, then check for credential_process in the "default" profile in ~/.aws/credentials, then checks for the "default" profile in ~/.aws/credentials, then for credential_process in the "default profile" profile in ~/.aws/config, then checks for "profile default" profile in ~/.aws/config (which is the default profile of AWS CLI), then tries to make a GET Request to fetch credentials if ECS environment variable is presented, finally checks for EC2 instance profile credentials.
- ecsCredentials() : EcsCredentialProvider
- Credential provider that creates credentials using ecs credentials by a GET request, whose uri is specified by environment variable
- env() : callable
- Provider that creates credentials from environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN.
- fromCredentials() : callable
- Create a credential provider function from a set of static credentials.
- getCredentialsFromSource() : mixed
- ini() : callable
- Credentials provider that creates credentials using an ini file stored in the current user's home directory. A source can be provided in this file for assuming a role using the credential_source config option.
- instanceProfile() : InstanceProfileProvider
- Credential provider that creates credentials using instance profile credentials.
- memoize() : callable
- Wraps a credential provider and caches previously provided credentials.
- process() : callable
- Credentials provider that creates credentials using a process configured in ini file stored in the current user's home directory.
- shouldUseEcs() : bool
- sso() : callable
- Credential provider that retrieves cached SSO credentials from the CLI
Constants
ENV_ACCOUNT_ID
public
mixed
ENV_ACCOUNT_ID
= 'AWS_ACCOUNT_ID'
ENV_ARN
public
mixed
ENV_ARN
= 'AWS_ROLE_ARN'
ENV_KEY
public
mixed
ENV_KEY
= 'AWS_ACCESS_KEY_ID'
ENV_PROFILE
public
mixed
ENV_PROFILE
= 'AWS_PROFILE'
ENV_ROLE_SESSION_NAME
public
mixed
ENV_ROLE_SESSION_NAME
= 'AWS_ROLE_SESSION_NAME'
ENV_SECRET
public
mixed
ENV_SECRET
= 'AWS_SECRET_ACCESS_KEY'
ENV_SESSION
public
mixed
ENV_SESSION
= 'AWS_SESSION_TOKEN'
ENV_SHARED_CREDENTIALS_FILE
public
mixed
ENV_SHARED_CREDENTIALS_FILE
= 'AWS_SHARED_CREDENTIALS_FILE'
ENV_TOKEN_FILE
public
mixed
ENV_TOKEN_FILE
= 'AWS_WEB_IDENTITY_TOKEN_FILE'
Methods
assumeRole()
Credential provider that creates credentials using assume role
public
static assumeRole([array<string|int, mixed> $config = [] ]) : callable
Parameters
- $config : array<string|int, mixed> = []
-
Array of configuration data
Tags
Return values
callableassumeRoleWithWebIdentityCredentialProvider()
Credential provider that creates credentials by assuming role from a Web Identity Token
public
static assumeRoleWithWebIdentityCredentialProvider([array<string|int, mixed> $config = [] ]) : callable
Parameters
- $config : array<string|int, mixed> = []
-
Array of configuration data
Tags
Return values
callablecache()
Wraps a credential provider and saves provided credentials in an instance of Aws\CacheInterface. Forwards calls when no credentials found in cache and updates cache with the results.
public
static cache(callable $provider, CacheInterface $cache[, string|null $cacheKey = null ]) : callable
Parameters
- $provider : callable
-
Credentials provider function to wrap
- $cache : CacheInterface
-
Cache to store credentials
- $cacheKey : string|null = null
-
(optional) Cache key to use
Return values
callablechain()
Creates an aggregate credentials provider that invokes the provided variadic providers one after the other until a provider returns credentials.
public
static chain() : callable
Return values
callabledefaultProvider()
Create a default credential provider that first checks for environment variables, then checks for assumed role via web identity, then checks for cached SSO credentials from the CLI, then check for credential_process in the "default" profile in ~/.aws/credentials, then checks for the "default" profile in ~/.aws/credentials, then for credential_process in the "default profile" profile in ~/.aws/config, then checks for "profile default" profile in ~/.aws/config (which is the default profile of AWS CLI), then tries to make a GET Request to fetch credentials if ECS environment variable is presented, finally checks for EC2 instance profile credentials.
public
static defaultProvider([array<string|int, mixed> $config = [] ]) : callable
This provider is automatically wrapped in a memoize function that caches previously provided credentials.
Parameters
- $config : array<string|int, mixed> = []
-
Optional array of ecs/instance profile credentials provider options.
Return values
callableecsCredentials()
Credential provider that creates credentials using ecs credentials by a GET request, whose uri is specified by environment variable
public
static ecsCredentials([array<string|int, mixed> $config = [] ]) : EcsCredentialProvider
Parameters
- $config : array<string|int, mixed> = []
-
Array of configuration data.
Tags
Return values
EcsCredentialProviderenv()
Provider that creates credentials from environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, and AWS_SESSION_TOKEN.
public
static env() : callable
Return values
callablefromCredentials()
Create a credential provider function from a set of static credentials.
public
static fromCredentials(CredentialsInterface $creds) : callable
Parameters
- $creds : CredentialsInterface
Return values
callablegetCredentialsFromSource()
public
static getCredentialsFromSource([mixed $profileName = '' ][, mixed $filename = '' ][, mixed $config = [] ]) : mixed
Parameters
- $profileName : mixed = ''
- $filename : mixed = ''
- $config : mixed = []
ini()
Credentials provider that creates credentials using an ini file stored in the current user's home directory. A source can be provided in this file for assuming a role using the credential_source config option.
public
static ini([string|null $profile = null ][, string|null $filename = null ][, array<string|int, mixed>|null $config = [] ]) : callable
Parameters
- $profile : string|null = null
-
Profile to use. If not specified will use the "default" profile in "~/.aws/credentials".
- $filename : string|null = null
-
If provided, uses a custom filename rather than looking in the home directory.
- $config : array<string|int, mixed>|null = []
-
If provided, may contain the following: preferStaticCredentials: If true, prefer static credentials to role_arn if both are present disableAssumeRole: If true, disable support for roles that assume an IAM role. If true and role profile is selected, an error is raised. stsClient: StsClient used to assume role specified in profile
Return values
callableinstanceProfile()
Credential provider that creates credentials using instance profile credentials.
public
static instanceProfile([array<string|int, mixed> $config = [] ]) : InstanceProfileProvider
Parameters
- $config : array<string|int, mixed> = []
-
Array of configuration data.
Tags
Return values
InstanceProfileProvidermemoize()
Wraps a credential provider and caches previously provided credentials.
public
static memoize(callable $provider) : callable
Ensures that cached credentials are refreshed when they expire.
Parameters
- $provider : callable
-
Credentials provider function to wrap.
Return values
callableprocess()
Credentials provider that creates credentials using a process configured in ini file stored in the current user's home directory.
public
static process([string|null $profile = null ][, string|null $filename = null ]) : callable
Parameters
- $profile : string|null = null
-
Profile to use. If not specified will use the "default" profile in "~/.aws/credentials".
- $filename : string|null = null
-
If provided, uses a custom filename rather than looking in the home directory.
Return values
callableshouldUseEcs()
public
static shouldUseEcs() : bool
Return values
boolsso()
Credential provider that retrieves cached SSO credentials from the CLI
public
static sso([mixed $ssoProfileName = 'default' ][, mixed $filename = null ][, mixed $config = [] ]) : callable
Parameters
- $ssoProfileName : mixed = 'default'
- $filename : mixed = null
- $config : mixed = []