当前位置: 首页 > 知识库问答 >
问题:

在 AWS 中调用“启动对象”操作时的请求无效

万俟超
2023-03-14

我使用以下命令来验证我的用户是否可以访问 S3 存储桶:(基于此链接:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example1.html)

$ aws s3api put-object --bucket bymspsbucket --key AWS.png --body Desktop/AWS.png --profile spsadmin

但是我遇到了以下错误,并坚持下去,不知道出了什么问题…

调用 Put 对象操作时出错(无效请求):缺少此请求所需的标头:x-amz-内容-sha256”

我已经用--debug运行了命令

请在以下链接中查看调试输出文件:https://github.com/minafa/AWS/wiki

$ aws --version
aws-cli/1.10.59 Python/2.7.10 Darwin/15.0.0 botocore/1.4.49

我已经使用cmd: aws confiure配置了配置文件,结果如下:

#vim ./aws/credentials
[default]
aws_access_key_id =
aws_secret_access_key =
[spsadmin]
aws_access_key_id =
aws_secret_access_key =

#vim ./aws/config

已编辑:

因为凭证文件中没有区域,所以我手动修改了该文件。因此它可以用于putobject,但是get object给出了访问拒绝错误:

aws s3api get-object --bucket examplebucket --key AWS.png OutputFile.jpg --profile spsadmin

调用GetObject操作时出错(访问被拒绝):访问被拒绝

我在s3 bucket中设置的用户可以访问的权限如下:

"s3:GetBucketLocation",
"s3:ListBucket",
"s3:GetObject", 
"s3:PutObject"

它是否需要在我的用户帐户中附加相同的策略?在IAM的attach policy下,我只设置了“AmazonS3FullAccess ”,但它不应该是FullAccess,因为用户必须只能访问我分配的bucket。

任何帮助都将不胜感激。

共有1个答案

庞瀚
2023-03-14

我已按如下方式修复了我的问题:

>

  • put 对象不起作用,因为在配置/凭据文件中没有设置区域。因此,.aws/凭证是可调的。

    get-object 给出了 Access 被拒绝错误,因为它需要设置:

    “操作”:存储桶策略中的“s3: GetBucketAcl”。

    应创建一个策略(具有与bucket策略相同的操作),并将其附加到IAM用户,该指令基于以下链接:http://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html

    如果IAM用户想通过控制台查看S3存储桶并制作更多存储桶,则可以将Amazon S3FullAccess附加到他。否则它可能会被解附。

  •  类似资料:
    • 问题内容: 我有用于调用操作的代码,并且我需要声明运行时权限的最佳方式IVE我尝试了许多代码,但我始终会出错 这是我的基本代码,任何有关使其具有运行时权限的建议,请先谢谢 } 问题答案: 在您的方法中尝试此代码 现在,调用创建一个单独的方法: 添加以下两种用于运行时权限检查的方法: 还要确保将其添加到清单中: 碎片 如果您在中尝试使用此代码 ,请更改 至 并且也改变 至

    • 我试图在Ubuntu上使用AWS CLI查询我的AWS Cloudsearch(2013 API)域。当搜索被限制在一个特定的领域时,我无法让它成功工作。以下查询: ...返回以下错误: 调用搜索操作时出错(SearchException):q.options包含无效的javascript对象 如果我从上面的查询中删除参数,那么它就可以工作。在AWS CLI文档中,关于<代码>--查询选项<代码>

    • 我有一个循环,在循环中我正在做: 第二种方法使用EF获取实体,设置一些属性,并通过调用DbContext上的wait SaveChangesAsync()将实体保存回数据存储。 上面应该等待1s,然后继续第二种方法。通过上述实现,我得到以下异常: 在上一个异步操作完成之前,在此上下文上启动了第二个操作。使用“await”确保在该上下文上调用另一个方法之前已完成任何异步操作。任何实例成员都不能保证线

    • 问题内容: 所以这是我的passport-facebook策略配置: 这是facebookVerificationHandler: 有没有办法访问facebookVerificationHandler中的请求对象? 用户已使用LocalStrategy注册到我的网站,但是他们将能够添加其社交帐户并将这些帐户与本地帐户相关联。调用上面的回调时,req.user中已经有当前登录的用户,因此我需要访问r

    • 当前的请求对象由think\Request类负责,在很多场合下并不需要实例化调用,通常使用依赖注入即可。在其它场合(例如模板输出等)则可以使用think\facade\Request静态类操作。 [TOC=2,3] 请求对象调用 在控制器中通常情况下有两种方式进行依赖注入。 构造方法注入 <?php namespace app\index\controller; use think\Reque

    • Python请求从以下URL的AWS Lambda超时。 工作url-https://support.oneskyapp.com/hc/en-us/article_attachments/202761627/example_1.json 下面是我正在使用的代码。 我的Lambda使用的是Python3.7运行时,不与任何VPC关联,并且超时设置为1分钟。我试着用Lambda执行超时5分钟,还是没有