0
0

More than 5 years have passed since last update.

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

Posted at

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0