1

タスク: .NET Core の AWSSDK.S3 パッケージを使用して、圧縮済みのファイルを Amazon AWS S3 バケットにアップロードし、Content-Encoding ヘッダーを「gzip」に設定します。

アップロードしようとしている S3 バケットがあります。データに IO ストリームを使用していますが、アップロード プロセス中にアイテムの Content-Encoding を設定する方法がありません。これは、S3 サービスによって提供されるときにアイテムに設定するヘッダーです (アップロード自体の Content-Encoding ではありません)。

TransferUtility および TransferUtilityUploadRequest オブジェクトを使用しています。Content-Type は問題なく設定できますが (以下を参照)、Content-Encoding を設定するプロパティはありません。Metadata.Add 関数を使用すると、Content-Encoding がカスタムの「x-amz-meta-content-encoding」キーに自動的に書き換えられますが、これはもちろん役に立ちません。

私が理解していることから、オブジェクトをコピーするか、自分で手動で行う以外は、事後に S3 にメタデータを設定することはできません (これは私には不可能であり、ファイルが多すぎます)。オブジェクトをコピーしても、とにかくメタデータを設定できるかどうかはわかりません。

            var s3Client = new AmazonS3Client(awsCreden‌​tials, bucketRegion);
            var fileTransferUtility = new TransferUtility(s3Client);

            byte[] compressedDataArray = <some compressed data>;
            using (MemoryStream memoryStream = new MemoryStream(compressedDataArray)) {
                var fileTransferUtilityRequest = new TransferUtilityUploadRequest {
                    BucketName = bucketName,
                    ContentType = "application/json",
                    StorageClass = S3StorageClass.Standard,
                    Key = fileKey + ".gz",
                    CannedACL = S3CannedACL.PublicRead,
                    InputStream = memoryStream,
                    AutoCloseStream = true
                };
                fileTransferUtilityRequest.Metadata.Add("Content-Encoding", "gzip");
                fileTransferUtility.Upload(fileTransferUtilityRequest);
            }

S3 の新しいファイルにアップロードされますが、Content-Encoding ヘッダーは設定されません。

誰でも助けてください!ありがとう!

4

1 に答える 1