Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以使用AWS Amplify library(JavaScript)在没有cognito用户poool和身份池的情况下访问s3 bucket?_Javascript_Amazon Web Services_Amazon S3_Amazon Cognito_Aws Amplify - Fatal编程技术网

有没有一种方法可以使用AWS Amplify library(JavaScript)在没有cognito用户poool和身份池的情况下访问s3 bucket?

有没有一种方法可以使用AWS Amplify library(JavaScript)在没有cognito用户poool和身份池的情况下访问s3 bucket?,javascript,amazon-web-services,amazon-s3,amazon-cognito,aws-amplify,Javascript,Amazon Web Services,Amazon S3,Amazon Cognito,Aws Amplify,我试图使用amplify library(JavaScript)来访问s3 bucket,并使用STS生成的临时访问密钥和秘密访问密钥。但似乎我需要一个cognito用户池和身份池 import Amplify, { Storage } from 'aws-amplify'; Amplify.configure({ Storage: { region: 'ap-south-1', endpoint: "http://localhost:4572",

我试图使用amplify library(JavaScript)来访问s3 bucket,并使用STS生成的临时访问密钥和秘密访问密钥。但似乎我需要一个cognito用户池和身份池

import Amplify, { Storage } from 'aws-amplify';

Amplify.configure({
  Storage: {
    region: 'ap-south-1',
    endpoint: "http://localhost:4572",
    bucket: 'mybucket',
  }
})

Storage.list('photos/').then(res => console.log(res)).catch(err => console.log(err))
有没有一种不用AWS SDK就能实现的方法

[WARN] 56:56.803 AWSS3Provider - ensure credentials error No Cognito Identity pool provided for unauthenticated access
No credentials

您可以使用AWS SDK for javascript,该javascript在后台使用AWS API。在这种情况下,您需要将s3 bucket公开/向所有人开放,或者使用AWS IAM凭据,这不是一种安全的方式。

通常不建议在Amplify中直接使用IAM凭据,因为您需要自己进行身份验证/授权(决定是否授予STS证书的过程)是危险的

然而,这样做有很多正当的理由,所以这里说:是关于这个问题的,并且说你可以通过类似

AWS.config.update({
凭证:新AWS.credentials({
accessKeyId:'密钥',
secretAccessKey:“另一个密钥”
})
});

Amplify.configure()之前

我计划使用AWS STS生成临时AccessKeyId和SecretAccessKey。我之所以坚持使用amplify,是因为它为我提供了在blob级别配置访问级别以及上传和下载进度等功能的简单/干净的方法,但这也不是一种安全的方法。你需要一些标准a供STS决定谁将能够访问资源。仍然会收到相同的错误。我是否做错了什么??
从“AWS sdk”导入AWS;从“AWS Amplify”导入Amplify,{Storage,Auth};AWS.config.update({credentials:new AWS.credentials({accessKeyId:'the key',secretAccessKey:'the other key'}));放大。配置({存储:{区域:'ap-south-1',端点:'http://localhost:4572,bucket:'mybucket'}});Storage.list('/')。然后(res=>console.log(res)).catch(err=>console.log(err))