Ric*_*ang 15 python lambda amazon-s3 amazon-web-services serverless-framework
我曾尝试使用lambda函数将文件写入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)
Run Code Online (Sandbox Code Playgroud)
Tim*_*m B 27
我已成功将数据流传输到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)
Run Code Online (Sandbox Code Playgroud)
如果数据在文件中,您可以读取此文件并将其发送:
with open(filename) as f:
string = f.read()
encoded_string = string.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)
gre*_*pit 14
我的回答与 Tim B 非常相似,但最重要的部分是
\n\n1.进入S3存储桶并创建一个要写入的存储桶
\n\n2.按照以下步骤操作,否则 lambda 将因权限/访问而失败。我也为您复制并粘贴了链接内容,以防万一他们更改网址/将其移动到其他页面。
\n\nA。在 IAM 控制台中打开角色页面。
\n\nb. 选择创建角色。
\n\nC。创建具有以下属性的角色。
\n\n- 受信任实体 \xe2\x80\x93 AWS Lambda。
\n\n- 权限 \xe2\x80\x93 AWSLambdaExecute。
\n\n- 角色名称 \xe2\x80\x93 lambda-s3-role。
\n\nAWSLambdaExecute 策略具有该函数管理 Amazon S3 中的对象并将日志写入 CloudWatch Logs 所需的权限。
\n\n将其复制并粘贴到您的 Lambda python 函数中
\n\nimport json, boto3,os, sys, uuid\nfrom urllib.parse import unquote_plus\n\ns3_client = boto3.client(\'s3\')\n\ndef lambda_handler(event, context):\n some_text = "test"\n #put the bucket name you create in step 1\n bucket_name = "my_buck_name"\n file_name = "my_test_file.csv"\n lambda_path = "/tmp/" + file_name\n s3_path = "output/" + file_name\n os.system(\'echo testing... >\'+lambda_path)\n s3 = boto3.resource("s3")\n s3.meta.client.upload_file(lambda_path, bucket_name, file_name)\n\n return {\n \'statusCode\': 200,\n \'body\': json.dumps(\'file is created in:\'+s3_path)\n }\nRun Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
20253 次 |
| 最近记录: |