【问题标题】:How to read and write to a .txt file located on a s3 bucket?如何读取和写入位于 s3 存储桶上的 .txt 文件?
【发布时间】:2019-12-15 11:27:38
【问题描述】:

我有一个挑战,要求我用下一个素数更新 .txt 文件中的数字。问题是它必须在 s3 存储桶内更新,我真的不知道如何使用 nodeJS 在 s3 中读取/写入文件。我正在使用 Lambda 函数来执行此操作。

我尝试在 AWS SDK S3 文档中搜索以获取一些输入,但没有成功。我是云新手,所以我很难理解一些 概念。

我使用 fs 读取/写入本地文件:

var fs = require("fs");

var calculateNextPrime = function (currentNumber) {
    var divisor = 0;
    var isTrue = false;
    currentNumber++;

    while (isTrue === false) {
        for (var i = 1; i <= currentNumber; i++) {
            if (currentNumber % i === 0) {
                divisor++;   
            }
        }
        if (divisor === 2) {
            isTrue = true;
        } else {
            currentNumber += 1;
            divisor = 0;

        }
    }
    return currentNumber;
}


var fileContent = fs.readFileSync('file.txt', 'utf8');
fileContent = Number(fileContent);

var newFileContent = insertNextPrime(fileContent);
fs.writeFileSync('file.txt', newFileContent);

【问题讨论】:

  • 一些我认为可以改进您的代码的小 cmets:更喜欢 let/constvar,使用 if (x)if (!x) 而不是比较布尔值与真或假,isTrue变量名没有传达任何有用的含义,使用 break 而不是简单地引入新的布尔值来退出循环,您的 calculateNextPrime() 方法不是最佳的,但可能工作正常。

标签: node.js amazon-web-services rest amazon-s3 aws-lambda


【解决方案1】:

您无法就地更新 S3 对象。您必须替换整个对象。为此,请使用putObject

【讨论】:

    【解决方案2】:

    试试这个写入txt文件

    import boto3
    
    def lambda_handler(event, context):
        string = "Hello world"
        encoded_string = string.encode("utf-8")
    
        bucket_name = "s3bucketName"
        file_name = "abc.txt"
        lambda_path = "/tmp/" + file_name
        s3_path = "pathToFileName/" + file_name
    
        s3 = boto3.resource("s3")
        s3.Bucket(bucket_name).put_object(Key=s3_path, Body=encoded_string)
    

    从txt读取数据你可以使用这个

    with open(filename) as f:
        string = f.read()
    
    encoded_string = string.encode("utf-8")
    print(encoded_string )
    

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      相关资源
      最近更新 更多