ays*_*ysh 2 python amazon-s3 aws-lambda
Dynamo 数据库有一个表员工主键作为 id
csvdynamo
下面是bucket中上传的data.csv
存储桶名称 = csvdynamo
id,name,co
20,AB,PC
21,CD,PC
22,EF,MC
23,GH,MC
Run Code Online (Sandbox Code Playgroud)
需要将以上csv插入dynamodb
伪代码
for emp in employees:
emp_data= emp.split(',')
print (emp_data)
try:
table.put_item(
Item = {
"emp_id": int(emp_data[0]),
"Name": emp_data[1],
"Company": emp_data[2]
}
)
except Exception as e:
pass
Run Code Online (Sandbox Code Playgroud)
这是一个有效的lambda 函数示例,我使用自己的函数、csv 文件和 dynamodb 对其进行了验证。我认为代码是不言自明的。这应该是您最终用例的良好开端。
import boto3
import json
import os
bucket_name = os.environ['BUCKET_NAME']
csv_key = os.environ['CSV_KEY_NAME'] # csvdynamo.csv
table_name = os.environ['DDB_TABLE_NAME']
# temprorary file to store csv downloaded from s3
tmp_csv_file = '/tmp/' + csv_key
s3 = boto3.resource('s3')
db_table = boto3.resource('dynamodb').Table(table_name)
def save_to_dynamodb(id, name, co):
return db_table.put_item(
Item={
'emp_id': int(id),
'Name': name,
'Company': co
})
def lambda_handler(event, context):
s3.meta.client.download_file(
bucket_name,
csv_key,
tmp_csv_file)
with open(tmp_csv_file, 'r') as f:
next(f) # skip header
for line in f:
id, name, co = line.rstrip().split(',')
result = save_to_dynamodb(id, name, co)
print(result)
return {'statusCode': 200}
Run Code Online (Sandbox Code Playgroud)