当用户尝试使用 AWS 注册和创建新账户/相册时,我们收到错误。请参阅下面的终端消息



[AWS s3 undefined 0.006s 0 retries] headObject({ Bucket: 'mypicturebank', Key: 'testing' }) 创建相册时出错: TypeError [ERR_INVALID_ARG_TYPE]:"key"参数必须是字符串、TypedArray 或 DataView 类型之一。未定义的接收类型

@Ken G 我不确定您使用的是哪种语言或框架,尽管我刚才The "key" argument must be one of type string, TypedArray, or DataView. Received type undefined遇到了类似的错误消息。

就我和其他偶然发现此问题的人而言,这是因为我提供了从AWS STS.assumeRole返回的PascalCase AWS凭证,我需要在其中提供camelCase AWS凭证密钥:

import AWS from 'aws-sdk'
# Bad
const s3 = new AWS.S3({
credentials: {
AccessKeyId: process.env.AWS_ACCESS_KEY,
SecretAccessKey: process.env.AWS_SECRET_KEY,
},
...
})
# Good
const s3 = new AWS.S3({
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_KEY,
},
...
})

我在 macOS 上使用 aws-sdk for JavaScript 和 Node v10.16.2,目标是使用 s3.createPresignedPost。

可能相关,在运行节点 10.x 的 AWS Lambda 实例上,我看到相同代码的不同错误消息:Key must be a buffer.

此问题也可能是由以下原因引起的:如果您在代码中使用某些 env 变量并且它不存在于 env 文件中,或者其中未定义,就像我使用文件堆栈 api 所以需要共享密钥,而 env 文件中实际上缺少。

相关内容

最新更新