Java AWS Amazon s3 GetObjectRequest (InvalidAccessKeyId)

Я пытаюсь получить файлы в репозитории Amazon S3, как вопрос. Я получил сообщение от Amazon «InvalidAccessKeyId».

The AWS Access Key Id you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID: 62781C914754D8ED; S3 Extended Request ID: +fhv2t247XoEK99IZ6/f8lcWUz7IWlGybGfb2HRNrWpCG+EbeSupSREmcseyBcJQ3VybXizwVTg=)

Прокомментируйте, что сервер не предоставил мне разрешения listBucket, поэтому я помещаю путь как backet (я также пытался поместить ведро и путь в ключ String bucketName = "my_bucket"; Строковый ключ = "папка / папка1 / example.xml"; ):

String accesKey= "my_access_key";
String secretKey= "my_secret_key";
String bucketName= "my_bucket/folder/folder1/";
String key= "example.xml";

BasicAWSCredentials creds = new BasicAWSCredentials(accesKey, secretKey); 
AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).withRegion(Regions.EU_WEST_1).build();
s3.getObject(new GetObjectRequest(bucketName, key)

Ошибка кажется вполне понятной. Что вы имеете в виду под "сервером не предоставлено разрешение listBucket"?

Jacob 01.08.2018 13:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
545
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Имя сегмента должно быть просто my_bucket. И ключ будет folder / folder1 / example.xml

А также попробуй,

AmazonS3Client aws3 = new AmazonS3Client(accesKey, secretKey, 
RegionEndpoint.your_region_endpoint);

string content = null;
        var response = aws3.GetObjectAsync(new GetObjectRequest
        {
            BucketName = bucketName,
            Key = key,
        }).Result;
        using (var s = new StreamReader(response.ResponseStream))
        {
            content = s.ReadToEnd();
        }
Ответ принят как подходящий

Похоже, есть несколько проблем Проблема 1:

bucketName : only a bucket name
keyName: will have dir structure/filename

Проблема 2:
Проблема с секретным ключом / ключом доступа Посмотрите, как api ищет учетные данные

Другие вопросы по теме