J'ai essayé d'utiliser la fonction lambda pour écrire un fichier sur S3, puis les tests de test "ont réussi", mais rien n'est apparu dans mon compartiment S3. Qu'est-il arrivé? Est-ce que quelqu'un peut me donner des conseils ou des solutions? Merci beaucoup. Voici mon code.
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)
J'ai eu du succès en streaming des données vers S3, il doit être encodé pour faire ceci:
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)
Si les données sont dans un fichier, vous pouvez lire ce fichier et l'envoyer:
with open(filename) as f:
string = f.read()
encoded_string = string.encode("utf-8")