簡體   English   中英

使用臨時安全憑證使用Delphi將文件上載到Amazon S3

[英]Upload files to Amazon S3 with Delphi using temporary security credentials

我有一個AWS S3帳戶,並獲得了SecretAccessKey,SessionToken,Expiration,AccessKeyId項目。 我想以最簡單的方式將一些文件上傳到雲端。

已經閱讀了一些關於授權標題的文檔( http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html )但仍然不了解如何構建它們))

另外,看了一下Indy的另一個例子,所以,請幫助用我擁有的這些項構建授權頭:SecretAccessKey,SessionToken,Expiration,AccessKeyId。 可以使用“在單個塊中傳輸有效負載”模式+“簽名有效負載選項”。

  FS := TFileStream.Create('c:\myfile.txt', fmOpenRead or fmShareDenyWrite);
  try
    IdHTTP1.Request.CustomHeaders.Values['Authorization'] := ...; // please help
    IdHTTP1.Request.BasicAuthentication := False;
    IdHTTP1.Request.Date := ...;   //what should I enter here?
    IdHTTP1.Request.Expect := '100-continue';
    IdHTTP1.Request.ProtocolVersion := pv1_1;
    ...
    IdHTTP1.Put('http://'+BucketName+'.s3.amazonaws.com/myfile.txt', FS);
  finally
    FS.Free;
  end;

謝謝!

以下是使用雲組件將文件上傳到Amazon的常規操作:

function UploadFile(File: TBytes; FileName: string; Bucket: string): boolean;
var Service: TAmazonStorageService;
    ConAmazon: TAmazonConnectionInfo;
begin
  try
    ConAmazon := TAmazonConnectionInfo.Create(nil);
    ConAmazon.AccountKey := 'Dih71bG09****************';
    ConAmazon.AccountName := 'AKIA***********';
    ConAmazon.QueueEndpoint := 'queue.amazonaws.com';
    ConAmazon.StorageEndpoint := 's3-eu-west-1.amazonaws.com';
    ConAmazon.TableEndpoint := 'sdb.amazonaws.com';
    ConAmazon.UseDefaultEndpoints := False;
    Service := TAmazonStorageService.Create(ConAmazon);
    Result := Service.UploadObject(Bucket, FileName, File, TRUE, nil, nil, amzbaPrivate, nil);
  finally
    ConAmazon.Free;
    Service.Free;
  end;
end;

好的,所以,最后我們解決了這個問題:

1.應使用來自Delphi10.1 Berlin的Data.Cloud。 它支持Amazon AWS4安全標准。 2.應該通過添加以下代碼來修補TAmazonStorageService.InitHeaders:在標頭中啟用臨時會話令牌使用:

...    
Result.Values['x-amz-security-token'] := //your session_token string; 
...

從多方面測試它,現在工作正常:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM