web-dev-qa-db-ja.com

aws lambdaを使用してs3(python)にファイルを書き込むにはどうすればよいですか?

ラムダ関数を使用してS3にファイルを書き込もうとしましたが、テストは「成功」を示しましたが、S3バケットには何も表示されませんでした。どうした?誰も私にいくつかのアドバイスや解決策を与えることができますか?どうもありがとう。これが私のコードです。

import json
import boto3

def lambda_handler(event, context):

string = "dfghj"

file_name = "hello.txt"
lambda_path = "/tmp/" + file_name
s3_path = "/100001/20180223/" + file_name

with open(lambda_path, 'w+') as file:
    file.write(string)
    file.close()

s3 = boto3.resource('s3')
s3.meta.client.upload_file(lambda_path, 's3bucket', s3_path)
15
Rick.Wang

S3へのデータのストリーミングに成功しました。これを行うにはエンコードする必要があります。

import boto3

def lambda_handler(event, context):
    string = "dfghj"
    encoded_string = string.encode("utf-8")

    bucket_name = "s3bucket"
    file_name = "hello.txt"
    lambda_path = "/tmp/" + file_name
    s3_path = "/100001/20180223/" + file_name

    s3 = boto3.resource("s3")
    s3.Bucket(bucket_name).put_object(Key=s3_path, Body=encoded_string)

データがファイル内にある場合、このファイルを読み取って送信できます。

with open(filename) as f:
    string = f.read()

encoded_string = string.encode("utf-8")
24
Tim B