C++
AWS
S3
aws-sdkC++

AWS SDK for C++でS3にファイル作成する

AWSにあるS3利用のサンプルは、ローカルファイルをアップロードするものでしたが、プログラム上で直接ファイルの内容を生成してPUTするにはどうしたらよいのか調べてみました。

通常のファイルアップロードは公式のサンプルが参考になります。

put_object.cpp - AWS Code Sample

https://docs.aws.amazon.com/ja_jp/code-samples/latest/catalog/cpp-s3-put_object.cpp.html


サンプルがありました

あれこれ調べてたらGitHubのAWS公式?アカウントでリポジトリが公開されていました。

aws-doc-sdk-examples/cpp at master · awsdocs/aws-doc-sdk-examples

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/cpp

こちらのC++のS3利用サンプルにput_object_buffer.cpp がありました。ありがたや

aws-doc-sdk-examples/put_object_buffer.cpp at master · awsdocs/aws-doc-sdk-examples https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/cpp/example_code/s3/put_object_buffer.cpp


put_object_buffer.cpp_一部抜粋

  const std::shared_ptr<Aws::IOStream> input_data =

Aws::MakeShared<Aws::StringStream>("");
*input_data << object_contents.c_str();
object_request.SetBody(input_data);

*input_data << "hoge"; でファイル内容を追加できるみたいです。改行は\n で。

ここで利用されているAws::StringStream ですが、あまり情報がなくAWS公式サイトでソースコードが確認できるくらいでした。やっぱりC++はソースコード読めって感じなのかなぁ。怖い

AWS SDK for C++: aws-cpp-sdk-core/include/aws/core/utils/memory/stl/AWSStringStream.h Source File

https://sdk.amazonaws.com/cpp/api/LATEST/_a_w_s_string_stream_8h_source.html


参考

put_object.cpp - AWS Code Sample

https://docs.aws.amazon.com/ja_jp/code-samples/latest/catalog/cpp-s3-put_object.cpp.html

aws-doc-sdk-examples/cpp at master · awsdocs/aws-doc-sdk-examples

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/cpp

AWS SDK for C++: aws-cpp-sdk-core/include/aws/core/utils/memory/stl/AWSStringStream.h Source File

https://sdk.amazonaws.com/cpp/api/LATEST/_a_w_s_string_stream_8h_source.html