これは実例かもしれませんが、一時的なAccessKeyId/SecretAccessKeyでCognito IDを取得した理由がS3などのAWSサービスにアクセスできない理由を理解しようとしています。ノード・アプリケーションからCognito AccessKeyId/SecretAccessKeyを使用してAWSサービスにアクセスする
(https://github.com/aws/amazon-cognito-identity-jsに記載されているように)、私はこのようなユーザを認証しています:
var authenticationData = {
Username : params.Username,
Password : params.Password,
};
var authenticationDetails = new AWSCognito.AuthenticationDetails(authenticationData);
var poolData = {
UserPoolId : params.UserPoolId,
ClientId : params.ClientId
};
var userPool = new AWSCognito.CognitoUserPool(poolData);
var userData = {
Username : params.Username,
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoUser(userData);
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) {
cognitoUserPoolLoginProvider = 'cognito-idp.' + params.AWSRegion + '.amazonaws.com/' + params.UserPoolId;
var logins = {};
logins[cognitoUserPoolLoginProvider] = result.getIdToken().getJwtToken();
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId : params.IdentityPoolId,
Logins : logins
});
AWS.config.update({region: params.AWSRegion});
AWS.config.credentials.get(function(err) {
if (err) {
callback(err, null);
console.log(AWS.config.credentials);
} else {
var creds = {
AccessKeyId: AWS.config.credentials.accessKeyId,
SecretAccessKey: AWS.config.credentials.secretAccessKey,
SessionToken: AWS.config.credentials.sessionToken,
}
callback(null, creds);
}
});
},
onFailure: function(err) {
callback(err, null);
},
});
私のアイデンティティプールのユーザの有効なユーザ名/パスワードを提供する場合、私は与えられています:
- accessKeyId
- secretAccessKey
- はsessionToken
これまでのところとても良いです。
accessKeyId
とsecretAccessKey
は、そのユーザーのサービスにアクセスするために使用できる一時的な(時間制限のある)AWS資格情報であると想定しました。私はAWSのサービスにアクセスするために私のAWS CLI(aws configure
)を設定するとき
はしかし、私は次のエラーを取得しています:
{ [InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.]
message: 'The AWS Access Key Id you provided does not exist in our records.',
code: 'InvalidAccessKeyId',
region: null,
time: Sat Jan 28 2017 11:52:10 GMT+0100 (CET),
requestId: '68BB8C46F7BC195D',
extendedRequestId: '4Z6d+MCRIiZ1CtApQfphbkWPBCO/jpI0DXqyfK5/5yKaYqwDj/OAhCgy6UJdACyuIs5UxqLPfZk=',
cfId: undefined,
statusCode: 403,
retryable: false,
retryDelay: 90.96230010036379 }
このAWSアクセスキーは有効なキーとはみなされていないのはなぜ?