小编use*_*969的帖子

如何使用 AWS Lambda 通过创建临时文件将“文件”上传到 S3?

我正在编写一个 lambda 函数,其目标是从 s3 下载一个 .json 文件,修改其内容,然后在不同的密钥下重新上传到同一个存储桶。

所以在我的 s3 中,我有一个“云”存储桶 cloud/folder/foo.json

>>> foo.json
{
   "value1": "abc",
   "value2": "123"
}
Run Code Online (Sandbox Code Playgroud)

我想下载它,相应地更改一些内容并将其重新上传到与 bar.json 相同的位置

我有第一部分工作,因为它下载文件的内容并修改内容,但现在一切都是python字典对象。

import boto3
import json


def get_json():
    client = boto3.client('s3')
    response = client.get_object(Bucket='cloud', Key='folder/foo.json')
    data = response['Body'].read()
    bar = json.loads(data)
    bar["value-1"] = "do-re-mi"

    #TODO: implement uploading here   

def lambda_handler(event, context):
    get_json()
    return 'Hello from Lambda'
Run Code Online (Sandbox Code Playgroud)

所以现在...

>>> bar
{
   "value1": "do-re-mi",
   "value2": "123"
}
Run Code Online (Sandbox Code Playgroud)

bar 变量是正确的,但它是一个字典对象。我怎样才能直接上传到那个桶作为 bar.json?我在这里看到了其他示例,但我并不热衷于将我的 AWS 秘密或访问密钥放在任何地方。我假设因为我使用的是 lambda,所以当我尝试执行以下操作时,我无法在机器上创建文件:

g = open('myfile.json', 'w')
g.write(json.dumps(bar, indent=4, sort_keys=True))
g.close() …
Run Code Online (Sandbox Code Playgroud)

python lambda amazon-s3 boto3

5
推荐指数
2
解决办法
6969
查看次数

标签 统计

amazon-s3 ×1

boto3 ×1

lambda ×1

python ×1