多くのURLからコンテンツを取得し、AWS S3に保存する必要があります。私は機能する関数を作成しました。しかし、私はを探しています。これは、httpクライアント接続を再利用してAWS sessionを再利用することで、より高速で効率的になります。さらに私は、一度に5人ずつ同時に実行するようにしています。HTTPフェッチとセッションを共有してS3操作に保存するにはどうすればいいですか?
func fetchPut(fromURL string, toS3 string) error {
start := time.Now()
resp, err := http.Get(fromURL)
if err != nil {
return err
}
defer resp.Body.Close()
sess := session.Must(session.Must(session.NewSession()))
s3svc := s3.New(sess)
s3URL, _ := url.Parse(toS3)
byteArray, _ := ioutil.ReadAll(resp.Body)
fetchElapsed := time.Since(start).Seconds()
start = time.Now()
input := &s3.PutObjectInput{
Body: bytes.NewReader(byteArray),
Bucket: aws.String(s3URL.Host),
Key: aws.String(s3URL.Path),
}
_, err = s3svc.PutObject(input)
putElapsed := time.Since(start).Seconds()
return err
}
は、私が理解していないことは、私はセッションを再使用する方法である(両方のhttp & AWS)。いくつかのグローバル変数に含めることはできますか?それとも、何らかのコンテキストを作成する必要がありますか?
このような使用例の良い例がありますか?
私は時間のロジックがベンチマーク用であると仮定していますか? – Dale
はい、申し訳ありませんが、コンパクトに保つためにログ行を削除しました。 – hendry
接続と認証はどのくらいプロセス全体にかかるのですか? – zerkms