Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

kai_kou
2004年からWeb系のシステムエンジニアとして開発、運用、マネジメントを経験。現在はアイレット(クラウドパック)に所属。 べ、別にいいね貰えたからってモチベーションが上がって記事とコードの品質があがるわけじゃないんだからね///
https://twitter.com/k_aik_ou
cloudpack
Amazon Web Services (AWS) の導入設計、環境構築、運用・保守をサポートするマネジドホスティングサービス
https://cloudpack.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away