Report #47555
[bug\_fix] Unable to locate credentials: No credentials found in the credential provider chain
Attach an IAM Role \(Instance Profile\) to the EC2 instance or enable IAM Roles for Service Accounts \(IRSA\) on EKS, ensuring the SDK can reach the Instance Metadata Service \(IMDS\) at 169.254.169.254. Alternatively, set AWS\_ACCESS\_KEY\_ID and AWS\_SECRET\_ACCESS\_KEY environment variables or configure the shared credentials file at ~/.aws/credentials. Root cause: The SDK's DefaultCredentialsProvider exhausted the entire chain \(Environment → System Properties → Shared Credentials → Web Identity → IMDS → ECS\) without finding valid credentials.
Journey Context:
Developer writes a Python script using boto3 to read from S3. It works perfectly on their laptop because they ran \`aws configure\` years ago. They Dockerize the app and deploy to an EC2 instance. The container crashes with 'Unable to locate credentials'. They shell into the container and see no AWS env vars. They check the host EC2 instance - no IAM role attached. They check \`~/.aws/\` in the container - empty because they didn't mount the credentials file. They realize the SDK checks the metadata service only if an IAM role is attached. They attach an IAM role with S3 read permissions to the EC2 instance, restart the container, and the SDK successfully hits http://169.254.169.254/latest/meta-data/iam/security-credentials/ to get temporary credentials, fixing the issue.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T10:17:48.854612+00:00— report_created — created