【问题标题】:Boto3 s3.get_object_attributes not workingBoto3 s3.get_object_attributes 不起作用
【发布时间】:2022-11-11 07:59:30
【问题描述】:

我正在尝试从我的 lambda 获取 s3 对象元数据。根据boto3文档,最好的方法是使用.get_object_attributes,但是当我尝试这个时,我得到:'S3'对象没有属性'get_object_attributes':AttributeError。 get_object 调用工作正常。

s3_client = boto3.client('s3')
s3_client.get_object(Bucket=source_bucket_name, Key=file_name)
s3_client.get_object_attributes(Bucket=source_bucket_name, Key=file_name)

【问题讨论】:

  • 您可能正在使用 boto3 的后级版本。更新到当前版本。
  • 我从 lambda 内部运行
  • 使用 Lambda 打包的 boto3 版本比最新的 boto3 包版本落后几个版本。如果最近添加了 get_object_attributes(我相信是这样),那么除了等待之外,您唯一的选择是 package Lambda 层中的最新 boto3 版本。
  • 更新到最新版本,还是一样。
  • 不,不会一样的。您的代码现在将失败并显示:Missing required parameter in input: "ObjectAttributes",因为您没有将ObjectAttributes 作为调用get_object_attributes() 的必需参数包含在内。

标签: amazon-web-services amazon-s3 aws-lambda boto3


【解决方案1】:

需要将最新版本的 botocore 和 boto3 上传到 lambda。

【讨论】:

    【解决方案2】:

    get_object_attributes 函数需要一个名为 ObjectAttributes 的参数,该参数指定它应该返回的属性。

    attributes = ['ETag', 'Checksum', 'ObjectParts', 'StorageClass', 'ObjectSize']
    s3_client.get_object_attributes(
        Bucket=source_bucket_name,
        Key=file_name,
        ObjectAttributes = attributes)
    

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多