Go での io.WriterAt のバッファ実装
aws-sdk を使用して Amazon S3 からファイルをダウンロードする場合、一般的な問題は次のとおりです。 io.WriterAt インターフェイスを実装するオブジェクトの要件。ただし、Go の bytes.Buffer タイプはこの機能を提供しません。
この問題を解決するには、aws パッケージの aws.WriteAtBuffer タイプを使用することをお勧めします。このタイプは、AWS SDK オペレーションに関係するユースケース向けに特別に設計されています。
ここでは、aws.WriteAtBuffer を使用して S3 オブジェクトをメモリに直接ダウンロードする方法の例を示します。
import ( "context" "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func main() { // Create a new session object with the default options. sess := session.Must(session.NewSession()) // Create a new S3 client. client := s3.New(sess) // Prepare the request input with the bucket and key of the object to download. requestInput := &s3.GetObjectInput{ Bucket: aws.String("my-bucket"), Key: aws.String("my-file"), } // Create a new aws.WriteAtBuffer to receive the downloaded object data. buf := aws.NewWriteAtBuffer([]byte{}) // Download the object into the buffer. if _, err := client.GetObjectWithContext(context.Background(), requestInput, buf); err != nil { fmt.Printf("Error downloading file: %v", err) return } // Print the number of bytes downloaded. fmt.Printf("Downloaded %v bytes", len(buf.Bytes())) }
aws.WriteAtBuffer を使用すると、ローカル システム上に基礎となるファイルを必要とせずに、S3 オブジェクトをメモリに直接簡単にダウンロードできます。
以上がGo で S3 オブジェクトを効率的にダウンロードするために io.WriterAt を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。