javascript - 在浏览器 (javascript) 中将 Cognito 凭据与 AWS 结合使用时,不断出现 "missing credentials"错误

标签 javascript amazon-web-services amazon-s3 amazon-cognito aws-sdk

我正在尝试使用 AWS 的 JavaScript SDK 从 Web 浏览器将文件上传到我的 S3 存储桶。我的代码如下所示:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    AccountId: 'dfhgdh',
    IdentityPoolId: 'fdagsd',
    RoleArn: 'fdafds'
});

var bucket = new AWS.S3({params: {Bucket: 'test-bucket'}});
var pdfUpload = document.getElementById('pdf-uploads').files[0];

var params = {Key: pdfUpload.name, ContentType: pdfUpload.type, Body: pdfUpload};
bucket.putObject(params, function (error, data) {
    if (error) {
        console.log(error);
    } else {
        console.log(data);
    }
});

但是,每当它到达 putObject 命令时,我都会从 AWS 返回一个错误:

“错误:配置中缺少凭据{消息:“配置中缺少凭据”,代码:“CredentialsError”...”

我确定我在这里遗漏了一些简单而愚蠢的东西,但我无法弄清楚我的生活是什么。 (当我尝试硬编码一个伪造的 key 或其他东西时,我得到了一个不同的错误,所以我很确定它与我尝试设置认知凭证的方式有关。)

最佳答案

事实证明,在调试 JavaScript AWS SDK 之后,问题是我在设置凭据之前没有设置区域...出于某种原因,我还需要使用更新方法。我认为这似乎是 SDK 的错误,但以下 AWS.config 设置解决了我的问题:

AWS.config.region = 'us-east-1';
AWS.config.update({
    credentials: new AWS.CognitoIdentityCredentials({
        AccountId: '43243243243',
        RoleArn: 'arn:aws:iam::970123460807:role/Cognito_RigUpWebUnauth_DefaultRole',
        IdentityPoolId: 'us-east-1:432432-432432432-4324323423-423243'
    })
});

关于javascript - 在浏览器 (javascript) 中将 Cognito 凭据与 AWS 结合使用时,不断出现 "missing credentials"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27499629/

相关文章:

javascript - 保持纵横比自动调整图像大小的更好方法?

javascript - Angular 自定义服务调用失败

amazon-web-services - Cloudformation yaml 中的 RequestMappingTemplate

python - 如何生成没有过期的文件链接?

ruby - 如何在 s3 上使用 ruby​​ aws-sdk 创建目录结构?

javascript - 使用 Javascript 或 Jquery 将参数传递给 url

javascript - 使用 javascript 创建 Instagram 风格的过滤器?

amazon-web-services - Terraform:具有指定可用区的 ElastiCache Redis 集群?

android - Proguard 使用适用于 Android 的 AWS SDK 给出错误

amazon-s3 - HaProxy透明代理到AWS S3静态网站页面