質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

14238閲覧

lambdaを使ってs3にcsvファイルを保存したい

hana2020

総合スコア5

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/08/22 08:58

編集2019/08/23 00:12

前提・実現したいこと

初めて質問させていただきます。

AWSのlambdaを使ってs3にcsvファイルを保存したいです
この後どうしてもpythonを用いるためpythonで実装したいです

プログラミング初心者なので根本的に間違っているところがあったら申し訳ないのですが、どうぞよろしくお願いします。

発生している問題・エラーメッセージ

文字列をcsv形式で保存することはうまくいくのですが、intやリストにするとうまくいきません

エラーメッセージ "errorMessage": "Parameter validation failed:\nInvalid type for parameter Body, value: 123, type: <class 'int'>, valid types: <class 'bytes'>, <class 'bytearray'>, file-like object",

該当のソースコード

python 3.7

import boto3 BUCKET_NAME = 'bucketname' FILENAME = "test.csv" def lambda_handler(event, context): s3 = boto3.resource('s3') bucket = s3.Bucket(BUCKET_NAME) FILE_CONTENTS = 123 ret = bucket.put_object( \ ACL='private', \ Body=FILE_CONTENTS, \ Key=FILENAME, \ ContentType='text/plain' \ ) return ret

試したこと

他のコードも調べて試してみましたが、intやリストにするとやはりうまく行きません
文字列にする、例えば
FILE_CONTENTS = u"test"
などにするとうまくいくのですが、なぜintやリストではダメなのかわかりません

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Bucket.put_object

こちらの put_object のところに、Body (bytes or seekable file-like object) -- Object data. と書かれています。
こちらを受けて、エラーメッセージの通り int で渡そうとするとエラーになってしまいます。
valid types: <class 'bytes'>, <class 'bytearray'>, file-like object のいずれかに変換してあげないといけないかと思います。

実際はCSVを書き出したいということでしたら、データとしては数字でも、文字列として書き出してあげるのはだめでしょうか?

投稿2019/08/23 01:07

suama

総合スコア1997

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hana2020

2019/08/23 01:35

ありがとうございます 結構条件厳しいんですね、、、 csvはリスト形式のデータを格納したかったので、この方法では無理そうです、、、 強引ですが、一度ローカルのtmpにcsv形式でデータを保存して、それをlambdaでs3に入れるだけにしたら上手くいったのでそちらの方法でやろうと思います
suama

2019/08/23 02:01

ファイルをいったん作成してアップする方法ですね。 よかったです。タイミングよく回答できずに失礼しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問