亚马逊S3上传失败 - 访问被拒绝

问题描述 投票:0回答:1

我想通过AWS中扩增文件上传到现有的S3桶。 我没有使用AWS使用MobileHub。 我根据this guide和到底这是我对这个角色的策略创建新的身份游泳池:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "mobileanalytics:PutEvents",
                "cognito-sync:*"
            ],
            "Resource": "*"
        }
    ]
}

在我的代码,我配置中扩增如下:

Amplify.configure({
  'aws_cognito_identity_pool_id': 'us-east-2:f37baa...',
  'aws_cognito_region': 'us-east-2',
  'aws_user_files_s3_bucket': 'demo',
  'aws_user_files_s3_bucket_region': 'us-east-1',
});

而我得到的错误:

Error: Access Denied
    at Request.extractError (s3.js:580)
    at Request.callListeners (aws-sdk-core-react-native.js:3610)
    at Request.emit (aws-sdk-core-react-native.js:3582)
    at Request.emit (aws-sdk-core-react-native.js:7723)
    at Request.transition (aws-sdk-core-react-native.js:7062)
    at AcceptorStateMachine.runTo (aws-sdk-core-react-native.js:7867)
    at aws-sdk-core-react-native.js:7879
    at Request.<anonymous> (aws-sdk-core-react-native.js:7078)
    at Request.<anonymous> (aws-sdk-core-react-native.js:7725)
    at Request.callListeners (aws-sdk-core-react-native.js:3620)

UPDATE

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

Amplify.configure({
  'aws_cognito_identity_pool_id': 'us-east-2:f37...',
  'aws_cognito_region': 'us-east-2',
  'aws_user_files_s3_bucket': 'demo',
  'aws_user_files_s3_bucket_region': 'us-east-1',
});

export default class App extends Component<Props> {
...
uploadImage = async uri => {
    const fileName = 'example.jpg';
    await Storage.put(fileName, blob, {
      contentType: 'image/jpeg',
      level: 'public'
    }).then(data => console.log(data))
      .catch(err => console.log(err))

这是整个代码,我只是不添加一个文件来获得,但它的工作原理是肯定的。当我用手机枢纽aws-exports.js,我可以上传文件,但MobileHub产生了一些bucketsm和我的用例包括使用我现有的桶。

amazon-web-services react-native amazon-s3 aws-amplify
1个回答
0
投票

所以,如果我理解不错,你的代码试图访问现有的S3存储桶,而不是中扩增/移动中心中创建的?

如果我是正确的,你需要更新Cognito政策允许访问用户现有的S3桶。

IAM -> Roles控制台,你会发现通过创建扩增出两个角色。角色名YOUR_PROJECT____DATE_TAG___[un]authrole举例来说,在我的控制台:photoalbums-20190202155011-unauthRolephotoalbums-20190202155011-authRole

根据您是否要授予访问身份验证的用户或未经授权的用户,如果你想身份验证和未认证用户访问S3修改相应的角色,或两者的作用。

添加S3管理政策AmazonS3ReadOnlyAccess将授予你的用户到你的水桶只读访问。 (请不要添加AmazonS3FullAccesss3:*因为它会给你的用户创建和删除帐户中的桶和对象)

© www.soinside.com 2019 - 2024. All rights reserved.