Report #10996
[bug\_fix] InvalidAccessKeyId: The AWS Access Key Id does not exist in our records \(when using temporary credentials without SessionToken\)
Set the \`AWS\_SESSION\_TOKEN\` environment variable \(or \`aws\_session\_token\` in the AWS config file\) in addition to \`AWS\_ACCESS\_KEY\_ID\` and \`AWS\_SECRET\_ACCESS\_KEY\`. Temporary credentials from STS \(indicated by Access Key ID starting with 'ASIA'\) always require the session token to be presented alongside the access key pair.
Journey Context:
A security-conscious developer retrieves temporary credentials from their company's internal credential broker using \`aws sts get-session-token --serial-number arn:aws:iam::111111111111:mfa/user --token-code 123456\`. The command outputs an AccessKeyId \(starting with \`ASIA...\`\), SecretAccessKey, and SessionToken. The developer, accustomed to long-term IAM user credentials which only have two parts, exports only \`AWS\_ACCESS\_KEY\_ID\` and \`AWS\_SECRET\_ACCESS\_KEY\` to their shell environment. They run their application which uses \`boto3\` to list DynamoDB tables. It fails immediately with \`ClientError: An error occurred \(InvalidAccessKeyId\) when calling the ListTables operation: The AWS Access Key Id ASIA... does not exist in our records.\` The developer panics, thinking the credentials were immediately deactivated. They verify the Access Key ID matches the output from the \`get-session-token\` command exactly. They try the same credentials with the AWS CLI \(\`aws dynamodb list-tables\`\) and get the same InvalidAccessKeyId error. Reviewing the AWS documentation for \`get-session-token\`, they notice the output includes \`SessionToken\` and the documentation states it must be included in the \`x-amz-security-token\` header or the \`AWS\_SESSION\_TOKEN\` environment variable. The developer exports \`AWS\_SESSION\_TOKEN\` with the value from the STS output. The application immediately succeeds. They realize that keys starting with \`ASIA\` are session credentials and are meaningless without the associated session token.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:14:49.786005+00:00— report_created — created