2 min read | by Jordi Prats
With the .aws/config and .aws/credentials files we can are used for configuring and authenticating for the AWS cli or any tool that uses the AWS SDK with AWS.
Each file has a different purpose:
~/.aws/config: This file stores configuration settings for AWS CLI and SDKs, including profiles, regions, output format, and roles to assume.~/.aws/credentials: This file holds AWS access key IDs and secret access keys.To configure an account, first we'll need to add the credentials to the ~/.aws/credentials file, giving it a name and the access key and secret key:
[prod] aws_access_key_id = YOUR_ADMIN_ACCESS_KEY_ID aws_secret_access_key = YOUR_ADMIN_SECRET_ACCESS_KEY
If we can use the IAMUser directly, without assuming any role, we can just add the profile to the ~/.aws/config file with any settings we want to use by default, for example:
[default] output=json region = us-west-2 [profile prod] region = us-east-1
If we nee to assume a role, we can use the role_arn setting to assume the role:
[profile prod-demo] region = us-east-1 role_arn = arn:aws:iam::123456789012:role/demo-role source_profile = prod
Given the case that we need to assume a specific role that cannot be assumed directly, we can use a chain of profiles to do so. For example, first-role will use the credentials to assume the role. We can then use the previous profile, first-role, to define the second role to assume:
[profile first-role] region=eu-west-2 role_arn=arn:aws:iam::123456789012:role/first-role source_profile=prod [profile second-role] region=eu-west-2 role_arn=arn:aws:iam::123456789012:role/second-role source_profile=first-role
Once we have the profiles configured, we can use the --profile flag if available or the AWS_PROFILE environment variable to use the profile we want to use:
AWS_PROFILE=second-role aws s3 ls
Posted on 04/09/2024