【发布时间】:2019-12-31 20:41:25
【问题描述】:
当我尝试测试用 Python 3.7 boto3 AWS SDK 编写的以下 lambda 函数时,我遇到了以下代码行(lambda 代码块中的最后一行)的问题。 lambda 函数删除 S3 存储桶中的对象,迭代存储桶中的每个对象。
client.Object(bucket, key).delete()
当我保存并运行代码时,我在上述行中遇到的错误,也是下面 lambda 函数代码块中的最后一行,如下所示。请求帮助。
“errorMessage”:“预期的字符串或字节类对象”,“errorType”:“TypeError”
【Lambda函数代码块】
import boto3
import json
import uuid
import csv
def lambda_handler(event, context):
recordId = str(uuid.uuid4())
print (recordId)
client = boto3.resource(
's3',
region_name='us-east-1',
aws_access_key_id='XXXXXXXXXXXXXXX' ,
aws_secret_access_key='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
)
bucket = client.Bucket('my_bucket')
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('my_dynamo')
for obj in bucket.objects.all():
key = obj.key
body = obj.get()['Body'].read()
data = body.decode("utf-8")
data1 = data.split('\n')
client.Object(bucket, key).delete()
【问题讨论】:
-
能否请您添加代码sn -p 会更好理解。除此之外,尝试将参数显式类型转换为抛出错误的字符串。
-
我加了sn-p的代码,请指教!非常感谢。
-
你必须使用
client.Object(bucket.name, key).delete(),bucket.name是标识符
标签: python amazon-web-services amazon-s3 aws-lambda boto3