Jos*_*per 4 amazon-web-services amazon-iam boto3 aws-lambda
我有一个lambda函数,用于进行s3 HeadObject调用。即使为此lambda函数制定了自定义策略,但每次进行此HeadObject调用时,我仍然会收到403错误。具体有;
An error occurred (403) when calling the HeadObject operation: Forbidden
Run Code Online (Sandbox Code Playgroud)
我的政策非常明确地允许GetObject调用有问题的存储桶。不确定是什么问题。我有三遍检查,以确保一切都排队。有问题的行是:
s3 = boto3.client('s3')
local_file_path = '/tmp/' + key_name.split('/')[-1] + '_REMOTE.json'
response = s3.head_object(Bucket=environ['OUTPUT_BUCKET'], Key=OUTPUT_FILE_NAME)
Run Code Online (Sandbox Code Playgroud)
让我知道是否可以提供更多信息以帮助您
由于您说过如果缺少s3:ListBucket权限,文件将丢失其预期的行为
您需要s3:GetObject权限才能执行此操作。有关更多信息,请转到Amazon Simple Storage Service开发人员指南中的在策略中指定权限。如果您请求的对象不存在,Amazon S3返回的错误取决于您是否还具有s3:ListBucket权限。
如果您对存储桶具有s3:ListBucket权限,Amazon S3将返回HTTP状态代码404(“无此类密钥”)错误。
如果您没有s3:ListBucket权限,Amazon S3将返回HTTP状态码403(“访问被拒绝”)错误。
链接到doco
上传对象HEAD 之前还有一个“不同的”最终一致性行为
Amazon S3数据一致性模型Amazon S3为所有区域的S3存储桶中的新对象的PUTS提供了写后读取一致性,但请注意。需要注意的是,如果在创建对象之前对键名称发出HEAD或GET请求(以查找对象是否存在),Amazon S3最终将为写后读取提供一致性。
| 归档时间: |
|
| 查看次数: |
2179 次 |
| 最近记录: |