You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to use S3 Select to get filtered data from an S3 object using my Flutter app.
I'm loading temporary IAM credentials from a successful Cognito login using Amplify Auth. These credentials work with the S3 Client to listObjectsV2 and getObject, but there is an issue with selectObjectContent. From scouring StackOverflow, this error usually occurs with bad credentials, but the credentials are working for everything but this particular method.
This error occurs even when I try to selectObjectContent on a bucket that I don't have permission to access, and for objects that don't exist. Something is wrong with the signed request.
import'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import'package:amplify_flutter/amplify_flutter.dart';
import'package:aws_client/s3_2006_03_01.dart';
/// Getting credentials from my sessionfinal cognitoPlugin =Amplify.Auth.getPlugin(AmplifyAuthCognito.pluginKey);
final result =await cognitoPlugin.fetchAuthSession();
final accessKeyId = result.credentialsResult.value.accessKeyId;
final secretAccessKey = result.credentialsResult.value.secretAccessKey;
final sessionToken = result.credentialsResult.value.sessionToken;
final expiration = result.credentialsResult.value.expiration;
/// Create s3 client
s3Client =S3(
region: region,
credentials:AwsClientCredentials(
accessKey: accessKeyId,
secretKey: secretAccessKey,
sessionToken: sessionToken,
// expiration: expiration,
),
);
/// Try to selectObjectContentfinal response =await s3Client.selectObjectContent(
key: fileKey,
bucket: ftpBucketName,
expression:r"Select * from S3Object",
expressionType:ExpressionType.sql,
inputSerialization:InputSerialization(
// compressionType: CompressionType.gzip,
csv:CSVInput(
fileHeaderInfo:FileHeaderInfo.use,
recordDelimiter:r"\n",
fieldDelimiter:",",
quoteCharacter:'"',
quoteEscapeCharacter:'"',
comments:"#",
),
),
outputSerialization:OutputSerialization(
csv:CSVOutput(
quoteFields:QuoteFields.asneeded,
recordDelimiter:r"\n",
fieldDelimiter:",",
quoteCharacter:'"',
quoteEscapeCharacter:'"',
),
),
);
Output:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: SignatureDoesNotMatch null: The request signature we calculated does not match the signature you provided. Check your key and signing method.#0 RestXmlProtocol.sendRaw (package:aws_client/src/shared/src/protocol/rest_xml.dart:100:9)<asynchronous suspension>#1 S3.selectObjectContent (package:aws_client/src/generated/s3/v2006_03_01.dart:11444:21)<asynchronous suspension>#2 AWSUtils.selectDataFromFile (package:web_app/network/aws.dart:99:22)<asynchronous suspension>#3 _FileViewerState._loadCSV (package:web_app/ui/file_list_page.dart:83:22)<asynchronous suspension>
The text was updated successfully, but these errors were encountered:
wcheek
changed the title
S3 selectObjectContent SignatureDoesNotMatch error
S3 selectObjectContent SignatureDoesNotMatch error
Jan 22, 2024
I'm trying to use S3 Select to get filtered data from an S3 object using my
Flutter
app.I'm loading temporary IAM credentials from a successful
Cognito
login usingAmplify Auth
. These credentials work with theS3 Client
tolistObjectsV2
andgetObject
, but there is an issue withselectObjectContent
. From scouring StackOverflow, this error usually occurs with bad credentials, but the credentials are working for everything but this particular method.This error occurs even when I try to
selectObjectContent
on a bucket that I don't have permission to access, and for objects that don't exist. Something is wrong with the signed request.Output:
The text was updated successfully, but these errors were encountered: