使用 boto3 授予对 S3 对象上的 Elasticache 的读取权限

Grant read to Elasticache on S3 object with boto3

我有一个脚本可以将文件上传到 S3,然后启动一个带有该文件的 Elasticache 服务器。 Elasticache documentation 表示向 540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353 提供读取和读取许可权限,它代表除 GovCloud 或中国以外的任何区域的规范 ID。

这是我的代码:

import boto3
s3_cl = boto3.client('s3')
s3_cl.put_object_acl(Bucket='bucket-name', Key='file.rdb', GrantRead='540804c33a284a299d2547575ce1010f2312ef3da9b3a053c8bc45bf233e4353')

这是我得到的错误:

ClientError: An error occurred (InvalidArgument) when calling the PutObjectAcl operation: Argument format not recognized

我应该向 GrantRead 提供什么参数?我的理解是它是一个受让人,可以是一个规范的 ID,所以我做错了什么?

我认为您应该以下列格式之一提供受助人:

  • id=<被授权者的规范用户 ID>
  • email=<受助人的电子邮件地址>
  • uri=<被授权者组的 URI>
  • displayname=<受助人的屏幕名称>
  • type=<受让人类型>

我从 awscli put-object-acl 文档中推断出此信息。