- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力掌握 amazonka图书馆。我想为 S3 预签名 PUT 请求。看着 example here ,我把下面的代码放在一起。尝试从客户端发送 JPEG 图像时它不起作用。 AWS 提示签名不正确。
我的客户端代码使用 nodejs aws sdk,所以我只能猜测我在这里配置不正确。
<Error>
<Code>
SignatureDoesNotMatch
</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<CanonicalRequest>
PUT
/my-bucket/test.jpg
X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=[MY_AWS_ACCESS_KEY]%2F20171010%2Feu-west-
1%2Fs3%2Faws4_request&X-Amz-Date=20171010T084724Z&X-Amz-
Expires=100000&X-Amz-SignedHeaders=expect%3Bhost
expect:
host:s3-eu-west-1.amazonaws.com
expect;host
UNSIGNED-PAYLOAD
</CanonicalRequest>
...
这是我的代码:
getS3UrlR :: Handler Value
getS3UrlR = do
y <- getYesod
let settings = appSettings y
env <- newEnv $ FromKeys (AccessKey $ encodeUtf8 $ appAwsAccessKey settings) (SecretKey $ encodeUtf8 $ appAwsSecretKey settings)
ts <- liftIO $ getCurrentTime
let b = BucketName $ appS3Bucket settings
k = ObjectKey "profile-pic-test"
url <- liftIO $ runResourceT . runAWST env . within Ireland $ presignURL ts 100000 (putObject b k (toBody ("" :: ByteString)))
return $ toJSON $ decodeUtf8 url
我该如何调试它?
注意 - putObject
需要一个 RqBody
参数,但我没有提供(因为客户端将提供请求主体)。所以我只提供了一个空字符串。这会是个问题吗?
编辑 - 我尝试签署 GET 请求以查看是否可行。它工作正常!但是 PUT 没有。这是可以正常工作的更改行:
url <- liftIO $ runResourceT . runAWST env . within Ireland $ presignURL ts 100000 (getObject b k)
最佳答案
我发现了 2 月的一个问题,这让我找到了解决方法。似乎 presignURL
正在向签名 URL 添加一个无关的 header 。当我重写请求以在签名之前删除 Expect
header 时,生成的 URL 使用简单的 PUT。
我的解决方法包含在 my comment on the github issue 中.
关于amazon-web-services - 如何使用amazonka presignURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604523/
我希望能够通过 Servant 作为响应主体流式传输 S3 存储桶对象内容。 我在处理程序中缺少 MonadResource 实例时遇到问题: src/Servant/Streaming/Exampl
我编写了下面的代码来模拟从 Lazy ByteString 上传到 S3(将通过网络套接字接收。在这里,我们通过读取文件来模拟大小~100MB)。下面代码的问题是它似乎强制将整个文件读取到内存中而不是
我正在尝试使用优秀的 AWS SDK amazonka在使用同样出色的 Web 框架构建的 API 的后端部分 yesod ,但是我很难让这两个库的依赖项一起工作。 我开始了脚手架 yesod 项目
我是一名优秀的程序员,十分优秀!