回答編集履歴

2 ごみがのこるかもね

matobaa

matobaa score 1921

2016/08/25 18:40  投稿

`u'...'` という表記は、[Python2.xにおけるUnicode文字列](https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange)を意味しています。
この質問の場合、path_savefile に Unicode文字列が格納されているんでしょう。あまり気にしなくていいかと思います。
----
エラーの原因については TaichiYanagiya さんも言及していますが、おそらく `open(path_savefile = u'/read_csv/write.csv', "w") as f2` で書こうとしたディレクトリがないことが原因でしょう。
[よくある質問#Lambda関数](https://aws.amazon.com/jp/lambda/faqs/) によれば
> Q: AWS Lambda 関数のためにディスクにスクラッチスペースが必要な場合はどうすればよいですか?
> A: 各 Lambda 関数では /tmp ディレクトリに 500 MB の容量を割り当てることができます。
とのことなので、つまり、path_savefile を /tmp/write.csv.cloned のように作ればよいでしょう。
----
しかし、単にS3オブジェクトを別のバケットや別キーとしてコピーしたいだけなら、[S3.Client.copy_object](http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy_object) を使えばいいでしょう。一時ファイルを作ってコピーしようとした場合、作業領域が500MBなので、その半分のサイズしか使えないですし、複数の処理が同時に走った場合など、もっと狭くなってしまう可能性がありますが、このAPIであれば、そんなサイズの制約を受けずにつかえるかと。
しかし、単にS3オブジェクトを別のバケットや別キーとしてコピーしたいだけなら、[S3.Client.copy_object](http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy_object) を使えばいいでしょう。一時ファイルを作ってコピーしようとした場合、作業領域が500MBなので、その半分のサイズしか使えないですし、複数の処理が同時に走った場合など、もっと狭くなってしまう可能性がありますし、質問にあるプログラムだと掃除してないのでゴミも溜まってしまうでしょうけれど、このAPIであれば、そんなサイズの制約を受けずにつかえるかと。
1 API

matobaa

matobaa score 1921

2016/08/25 17:35  投稿

`u'...'` という表記は、[Python2.xにおけるUnicode文字列](https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange)を意味しています。
この質問の場合、path_savefile に Unicode文字列が格納されているんでしょう。あまり気にしなくていいかと思います。
----
エラーの原因については TaichiYanagiya さんも言及していますが、おそらく `open(path_savefile = u'/read_csv/write.csv', "w") as f2` で書こうとしたディレクトリがないことが原因でしょう。
[よくある質問#Lambda関数](https://aws.amazon.com/jp/lambda/faqs/) によれば
> Q: AWS Lambda 関数のためにディスクにスクラッチスペースが必要な場合はどうすればよいですか?
> A: 各 Lambda 関数では /tmp ディレクトリに 500 MB の容量を割り当てることができます。
とのことなので、つまり、path_savefile を /tmp/write.csv.cloned のように作ればよいでしょう。
----
しかし、単にS3オブジェクトを別のバケットや別キーとしてコピーしたいだけなら、[S3.Client.copy_object](http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy_object) を使えばいいでしょう。
しかし、単にS3オブジェクトを別のバケットや別キーとしてコピーしたいだけなら、[S3.Client.copy_object](http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.copy_object) を使えばいいでしょう。一時ファイルを作ってコピーしようとした場合、作業領域が500MBなので、その半分のサイズしか使えないですし、複数の処理が同時に走った場合など、もっと狭くなってしまう可能性がありますが、このAPIであれば、そんなサイズの制約を受けずにつかえるかと。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る