Using the AWS Credentials File and Credential Profiles

The AWS CLI stores configuration and credential in plain text files.

The format of the AWS credentials file should look something like the following.

; ~/.aws/credentials [default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [project1] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Each section represents a credential Profile which can be referenced in the Configuration

use AsyncAws\Core\AwsClientFactory; $client = new AwsClientFactory([ 'profile' => 'project1' ]);

Note: When not defined, AsyncAws will use the profile named default.

The profile can refer to a Role and specify the source of another profile that contains the IAM user credentials with permission to use the role.

; ~/.aws/config: [profile user1] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [profile marketing] role_arn = arn:aws:iam::123456789012:role/marketing source_profile = user1

AWS also store Credentials in the config file that should like.

; ~/.aws/config: [profile default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region=eu-west-1 [profile project2] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region=us-west-2

The path to the credentials and config file can be optionally configured either with Configuration or env variables.

export AWS_SHARED_CREDENTIALS_FILE=/path/to/shared_credentials_file export AWS_CONFIG_FILE=/path/to/config_file
use AsyncAws\Core\AwsClientFactory; $client = new AwsClientFactory([ 'sharedCredentialsFile' => '/path/to/shared_credentials_file', 'sharedConfigFile' => '/path/to/config_file', ]);