[ FranjoZG @ 26.03.2019. 22:05 ] @
Imam problem sa upload-om na cloud.
Našao sam na net-u proceduru:
Code:

   try

       Text_Stream:= TStringStream.Create;
       Text_Stream.LoadFromFile('C:\Projekti\XE\cloud\Popis.txt');
       //Text_Byte := Text_Stream.Bytes;
       ConAmazon := TAmazonConnectionInfo.Create(nil);
       ConAmazon.AccountKey := AcKey;
       ConAmazon.AccountName := AcName;
       ConAmazon.StorageEndpoint := 'eu-central-1.s3.amazonaws.com';

       Service := TAmazonStorageService.Create(ConAmazon);
       Response := TCloudResponseInfo.Create;

       buckets := TAmazonBucketResult.Create(bucket);
       buckets := service.GetBucket(bucket , nil, Response, amzrEUCentral1);
       for i := 0 to buckets.Objects.Count-1 do begin
          m.Lines.Append('Name: ' + buckets.Objects[i].Name + '; LastModified: ' + buckets.Objects[i].LastModified + '; Storageclass: '+ buckets.Objects[i].StorageClass);
       end;


       bResult:= Service.UploadObject(bucket, 'Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);
       if bResult = True then
          ShowMessage('Upload success'+#13+IntToStr(Response.StatusCode)+' -> ' + Response.StatusMessage)
       else
          ShowMessage('Upload fails'+#13+IntToStr(Response.StatusCode)+' -> ' + Response.StatusMessage);

       buckets := TAmazonBucketResult.Create(bucket);
       buckets := service.GetBucket(bucket , nil, Response, amzrEUCentral1);
       m.Lines.Append(' ******************* 2 **************');
       for i := 0 to buckets.Objects.Count-1 do begin
          m.Lines.Append('Name: ' + buckets.Objects[i].Name + '; LastModified: ' + buckets.Objects[i].LastModified + '; Storageclass: '+ buckets.Objects[i].StorageClass);
       end;

    Finally
       Text_Stream.Free;
       Service.Free;
       ConAmazon.Free;
       buckets.Free;
    end;


Dio koji čita sa cloud-a odradi posao, u memo dobijem pospis file-ova sa clouda.
UplodaObject ne napravi ništa, a poruka koju dobijem (Response) je:

404 -> Not Found - The bucket dos not exists (NoSuchBucket)

Kako nema bucket-a kad sa sa njega pročitao sadržaj?
U popisu mi daje za ime file-a na cloudu: dir1/dir2/file_name.ext Gdje upisati "dir1" i "dir1"? Da li umjesto "Popist.txt" upisati "dir1/dir2/Popis.txt" ?
[ savkic @ 26.03.2019. 23:02 ] @
Da li Delphi ima neke primere za to? Ili mozda sam amazon, neki swagger ili PostMan da mozes lako videti sta salje.
[ FranjoZG @ 27.03.2019. 11:49 ] @
Ono što sam našao na net-u ne radi. Tj. radi djelomično: mogu očitati sadržaj bucketa, ali ne i napraviti uploda file-a.

Kada izmjenim:
Code:

bResult:= Service.UploadObject(bucket, 'Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);


u
Code:

bResult:= Service.UploadObject(bucket, bucket + ':Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);


tada dobijem drugu obavijest o grešci:
„Forbiden – The requset signature we calculated does not match the signature you privede. Check your key and signing method. (SigrnatureDoesNotMatch)“
[ FranjoZG @ 27.03.2019. 12:31 ] @
Uspio sam rijšiti problem, možda će kome zatrebati:

Izmjenio sam liniju:
Code:

ConAmazon.StorageEndpoint := 'eu-central-1.s3.amazonaws.com';


tako da "s3" dođe na početak:

Code:

ConAmazon.StorageEndpoint := 's3-eu-central-1.amazonaws.com';


Isto tako, putanja na cloudu se navodi kao:
Code:

bResult:= Service.UploadObject(bucket, 'dir1/dir2/file.txt', Text_Byte, False, nil, Headers, amzbaPrivate, Response);