{"id":453,"date":"2026-10-14T12:11:37","date_gmt":"2026-10-14T12:11:37","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2015\/10\/27\/setup-aws-credentails-using-aws-command-line-interface\/"},"modified":"2026-10-14T12:11:37","modified_gmt":"2026-10-14T12:11:37","slug":"setup-aws-credentials-using-aws-command-line-interface","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/setup-aws-credentials-using-aws-command-line-interface\/","title":{"rendered":"AWS CLI Credentials Setup: Configure, Verify, and Secure Access"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Originally published on 2015-10-27; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide explains how to set up AWS credentials for the AWS CLI, verify that access works, and choose the right credential method for local work and automation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2015\/10\/setup-aws-credentails-using.png\" alt=\"Setup AWS credentials using AWS CLI\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Install and verify the AWS CLI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the AWS CLI is not installed yet, follow your platform-specific installation steps. After install, verify the CLI is available in your shell:<\/p>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">aws --version\naws help<\/code><\/span><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Configure credentials with aws configure<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Get an access key ID, secret access key, and preferred default region from your AWS account setup (commonly via IAM). Then run:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-selector-tag\">aws<\/span> <span class=\"hljs-selector-tag\">configure<\/span>\n<span class=\"hljs-selector-tag\">AWS<\/span> <span class=\"hljs-selector-tag\">Access<\/span> <span class=\"hljs-selector-tag\">Key<\/span> <span class=\"hljs-selector-tag\">ID<\/span> <span class=\"hljs-selector-attr\">&#91;None]<\/span>: <span class=\"hljs-selector-tag\">YOUR_ACCESS_KEY_ID<\/span>\n<span class=\"hljs-selector-tag\">AWS<\/span> <span class=\"hljs-selector-tag\">Secret<\/span> <span class=\"hljs-selector-tag\">Access<\/span> <span class=\"hljs-selector-tag\">Key<\/span> <span class=\"hljs-selector-attr\">&#91;None]<\/span>: <span class=\"hljs-selector-tag\">YOUR_SECRET_ACCESS_KEY<\/span>\n<span class=\"hljs-selector-tag\">Default<\/span> <span class=\"hljs-selector-tag\">region<\/span> <span class=\"hljs-selector-tag\">name<\/span> <span class=\"hljs-selector-attr\">&#91;None]<\/span>: <span class=\"hljs-selector-tag\">us-east-1<\/span>\n<span class=\"hljs-selector-tag\">Default<\/span> <span class=\"hljs-selector-tag\">output<\/span> <span class=\"hljs-selector-tag\">format<\/span> <span class=\"hljs-selector-attr\">&#91;None]<\/span>: <span class=\"hljs-selector-tag\">json<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Quick validation commands:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">aws sts <span class=\"hljs-keyword\">get<\/span>-caller-identity\naws s3 ls<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Where AWS CLI stores credentials and config<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">By default, AWS CLI stores secrets and settings in separate files. On Linux\/macOS\/Unix: <code>~\/.aws\/credentials<\/code> and <code>~\/.aws\/config<\/code>. On Windows: <code>C:\\Users\\USERNAME\\.aws\\credentials<\/code> and <code>C:\\Users\\USERNAME\\.aws\\config<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">cat ~\/.aws\/credentials\ncat ~\/.aws\/config\n\n<span class=\"hljs-comment\"># Example ~\/.aws\/credentials<\/span>\n&#91;<span class=\"hljs-keyword\">default<\/span>]\naws_access_key_id = YOUR_ACCESS_KEY_ID\naws_secret_access_key = YOUR_SECRET_ACCESS_KEY\n\n<span class=\"hljs-comment\"># Example ~\/.aws\/config<\/span>\n&#91;<span class=\"hljs-keyword\">default<\/span>]\nregion = us-east<span class=\"hljs-number\">-1<\/span>\noutput = json<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Credential methods compared<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Method<\/th><th>Where secrets live<\/th><th>Best for<\/th><th>Example<\/th><\/tr><\/thead><tbody><tr><td><code>aws configure<\/code> default profile<\/td><td><code>~\/.aws\/credentials<\/code><\/td><td>Simple single-account local setup<\/td><td><code>aws configure<\/code><\/td><\/tr><tr><td>Named profile<\/td><td><code>~\/.aws\/credentials<\/code> under profile name<\/td><td>Multiple AWS accounts\/environments<\/td><td><code>aws configure --profile dev<\/code><\/td><\/tr><tr><td>Environment variables<\/td><td>Shell\/process environment<\/td><td>CI jobs and short-lived sessions<\/td><td><code>export AWS_ACCESS_KEY_ID=...<\/code><\/td><\/tr><tr><td>Instance or workload role<\/td><td>No static key in local files<\/td><td>EC2, ECS, EKS runtime access<\/td><td>CLI uses attached role credentials automatically<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Use environment variables when needed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Environment variables override file-based configuration in many workflows and are common in CI\/CD. Example for a Unix-like shell:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\"><span class=\"hljs-keyword\">export<\/span> AWS_ACCESS_KEY_ID=<span class=\"hljs-string\">\"YOUR_ACCESS_KEY_ID\"<\/span>\n<span class=\"hljs-keyword\">export<\/span> AWS_SECRET_ACCESS_KEY=<span class=\"hljs-string\">\"YOUR_SECRET_ACCESS_KEY\"<\/span>\n<span class=\"hljs-keyword\">export<\/span> AWS_DEFAULT_REGION=<span class=\"hljs-string\">\"us-east-1\"<\/span>\n\naws sts <span class=\"hljs-keyword\">get<\/span>-caller-identity\n\n# Clear variables after use\nunset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_DEFAULT_REGION<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Credential setup workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Install AWS CLI] --> B[Run aws help]\n    B --> C[Create or get access key]\n    C --> D[Run aws configure]\n    D --> E[Credentials and config files saved]\n    E --> F[Run sts get caller identity]\n    F --> G{Access works}\n    G -- yes --> H[Run AWS service commands]\n    G -- no --> I[Check profile region and IAM permissions]\n    I --> F\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Validate and troubleshoot<\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">aws configure <span class=\"hljs-keyword\">list<\/span>\naws sts get-caller-identity --profile <span class=\"hljs-keyword\">default<\/span>\naws ec2 describe-instances --region us-west<span class=\"hljs-number\">-2<\/span> --output table<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">If commands fail, check the active profile, configured region, and IAM permissions for the identity being used.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Never commit <code>~\/.aws\/credentials<\/code> or raw keys to Git.<\/li><li>Use named profiles instead of constantly overwriting the default profile.<\/li><li>Prefer role-based access for compute workloads to avoid long-lived static keys.<\/li><li>Use least-privilege IAM policies and rotate keys regularly.<\/li><li>Validate identity early with <code>aws sts get-caller-identity<\/code> before running destructive commands.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/www.devopsschool.com\/tutorial\/aws\/how-to-do\/install-and-configure-aws-cli.html\">DevOpsSchool tutorial: Install and configure AWS CLI<\/a><\/li><li><a href=\"http:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/installing.html\">AWS CLI User Guide: Installing<\/a><\/li><li><a href=\"http:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-getting-started.html\">AWS CLI User Guide: Getting started<\/a><\/li><li><a href=\"https:\/\/www.devopsschool.com\/blog\/setup-aws-credentials-using-aws-command-line-interface\/\">Original article permalink<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to configure AWS credentials with the AWS CLI, verify your identity, and understand where credentials are stored. This updated guide also compares profiles, environment variables, and role-based access.<\/p>\n","protected":false},"author":1,"featured_media":3103,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5633],"tags":[944,162,1392,1389,1394,1393,333,1390,1122,545,593,230,1391,732,104],"class_list":["post-453","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","tag-amazon-aws","tag-aws","tag-aws-cli","tag-aws-credentials","tag-aws-guide","tag-aws-tutorials","tag-command","tag-command-line-interface","tag-guide","tag-how","tag-process","tag-setup","tag-setup-aws-credentials","tag-steps","tag-tutorials"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=453"}],"version-history":[{"count":8,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/453\/revisions"}],"predecessor-version":[{"id":79329,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/453\/revisions\/79329"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3103"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}