[英]Different behavior for “aws s3 ls” and “aws s3api list-objects”
[英]Difference between the APIs `aws s3` and `aws s3api` when granting permissions to a canonical ID
為了將文件上傳到s3存儲桶,我們使用以下CLI命令(該命令可以正常運行):
aws s3api put-object --grant-full-control id=e2cxxxxxxxxx --bucket my_bucket --key folder/filename --body filename
aws s3api
不支持上傳大於5GB的文件,我們將不得不盡快開始支持。 我嘗試使用aws s3
(高級API)進行上傳。 現在,命令如下所示:
aws s3 cp filename s3://my_bucket/folder/filename --grants full=id=e2cxxxxxxxxx
但是,此命令引發An error occurred (AccessDenied) when calling the UploadPart operation: Access Denied
我試圖了解兩者之間的區別,以及為什么一個拋出AccessDenied
而另一個沒有拋出。
s3api
命令集是與低級S3 API的1:1映射。 s3
命令集增加了一些更高級別的功能,例如同步 。 為此,它通常需要多個API級權限。 因此,在后台,一個簡單的aws s3 cp
命令可能會使用多個低級API,並且調用者需要每個API的權限。
您需要在IAM策略的“操作”部分中添加所有低級API。
沒有簡單的方法來檢查高級命令使用的低級API的列表是什么。 在您的示例中,看起來好像缺少了UploadPart 。 您應該嘗試將其添加到用戶/角色/組策略中,然后重試直到獲得所有這些( "Actions" : ["s3:Uploadpart", ...]
)您也可以嘗試具有管理員權限的用戶( "Actions" : "s3:*"
),並將Cloudtrail配置為從日志中分析一個特定命令使用的所有S3 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.