【问题标题】:Invalid type for parameter Body in Amazon S3Amazon S3 中参数 Body 的类型无效
【发布时间】:2021-10-30 12:06:55
【问题描述】:

我正在尝试使用 Glue 将 python 列表 data_issues<class 'list'> 类型)保存到 Amazon S3 存储桶,但出现以下错误:

Parameter validation failed:
Invalid type for parameter Body, value: 

[('document_entity_sdi', Exception("For column, int and YES don't match.")), 
    ('account_status_sdi', Py4JJavaError('An error occurred while calling o80.getCatalogSink.\n', JavaObject id=o654)), 
    ('account_transaction_fcs_status', Py4JJavaError('An error occurred while calling o80.getCatalogSink.\n', JavaObject id=o797)),
    ('purchase_order_agreement', Py4JJavaError('An error occurred while calling o80.getCatalogSink.\n', JavaObject id=o21565))], 

type: <class 'list'>, valid types: <class 'bytes'>, <class 'bytearray'>, file-like object

我尝试了这种解决方法来转换列表 bytes(data_issues) 但不起作用:

BUCKET = 'bucket_name'
s3 = boto3.client('s3')
keyid = 'keyID'

print("Uploading S3 object with SSE-KMS")
s3.put_object(Bucket=BUCKET,
          Key='encrypt-key',
          Body=bytes(data_issues),
          ServerSideEncryption='aws:kms',
          SSEKMSKeyId=keyid)
print("Saving to S3, Done")

【问题讨论】:

  • data_issues 是我要打印的列表。 data_issues = [('value', Exception("text value")), ('value', {values, values})]

标签: python amazon-web-services amazon-s3 aws-glue


【解决方案1】:

您的data_issues 似乎是一个字符串列表。您可以通过多种方式将其转换为字节。一种方法是先将其制作成 json,然后将其转换为 bytes

Body=bytes(json.dumps(data_issues).encode())

更新:

如果你有非字符串值,你可以这样做:

Body=bytes(json.dumps(data_issues, default=str).encode())

根据您想要做什么,您也可以pickle 您的有效载荷。如果数据不适合 json 格式,这将允许您稍后重建数据。

【讨论】:

  • 遇到错误Object of type Exception is not JSON serializable
  • @marcin2x4 data_issues 到底是什么?您的代码显示它只是字符串列表:['value', 'value2', ... 'valueN']。如果不是,那么您的问题不代表您的实际代码,并且无法为您提供帮助。
  • data_issues&lt;class 'list'&gt;
  • @marcin2x4 我的意思是,它到底是什么? data_issues 中的元素是什么。它们真的只是你问题中的字符串吗? ['value', 'value2', ... 'valueN']
  • Body=bytes(json.dumps(data_issues, default=str).encode()) 成功了!我还必须修复 S3 路径语法,缺少最后一个 / 导致 access denied 错误。
猜你喜欢
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多