AWS ampify: ошибка при загрузке файла в хранилище

Я пытаюсь загрузить личный файл пользователя в хранилище AWS, и у меня возникают 2 проблемы:

a. Storage.put throws a `Uncaught (in promise) No plugin found in Storage for the provider` on my local machine
b. when I publish the application to aws, I get `a r[a].trim is not a function, the server responded with a status of 403 (Forbidden)` error.

Я использую "@aws-ampify/storage": "^3.1.9", "@aws-amp-ampify/ui-vue": "^0.2.5", "aws-ampify": "^3.0.11". Ранее я обновлялся до последних версий вышеуказанных библиотек, но столкнулся с теми же проблемами.

Ошибка в производстве:

[WARN] 52:13.681 AWSS3Provider - error uploading TypeError: r[a].trim is not a function
    at P (chunk-vendors.3a69780c.js:96)
    at e.<anonymous> (chunk-vendors.3a69780c.js:96)
    at c (chunk-vendors.3a69780c.js:111)
    at Object.next (chunk-vendors.3a69780c.js:111)
    at s (chunk-vendors.3a69780c.js:111)

Код (отредактирован для краткости):

import { Auth } from 'aws-amplify';
import Storage from "@aws-amplify/storage";
var i;
        for (i = 0; i < validFilesData.length; i++) 
        {
          let objectToBeUploaded=validFilesData[i];
          let config={level: 'private', contentType: 'video/mp4',};
          let result =await Storage.put('test.mp4', objectToBeUploaded, config);
        }

aws-exports.js:

const awsmobile = {
    "aws_project_region": "us-east-1",
    "aws_cognito_identity_pool_id": "us-east-1:d5bdd6ce-4ef4-4d25-81ac-47bcf08d9007",
    "aws_cognito_region": "us-east-1",
    "aws_user_pools_id": "us-east-1_b6sLX6k7X",
    "aws_user_pools_web_client_id": "6plmdr9nj2oo7hdofugbpctd6l",
    "oauth": {},
    "aws_appsync_graphqlEndpoint": "https://yoxnhmkqojgsjjsmdudy5ytuli.appsync-api.us-east-1.amazonaws.com/graphql",
    "aws_appsync_region": "us-east-1",
    "aws_appsync_authenticationType": "AMAZON_COGNITO_USER_POOLS",
    "aws_cloud_logic_custom": [
        {
            "name": "priceperhour",
            "endpoint": "https://qirua8wpa3.execute-api.us-east-1.amazonaws.com/dev",
            "region": "us-east-1"
        },
        {
            "name": "PaymentIntent",
            "endpoint": "https://kalgi2en0k.execute-api.us-east-1.amazonaws.com/dev",
            "region": "us-east-1"
        },
        {
            "name": "CreatePaymentIntent",
            "endpoint": "https://dplo9lvadc.execute-api.us-east-1.amazonaws.com/dev",
            "region": "us-east-1"
        }
    ],
    "aws_user_files_s3_bucket": "vidaudtranscriptionb772eac002c6449096461a128cad70417-dev",
    "aws_user_files_s3_bucket_region": "us-east-1",
    "aws_content_delivery_bucket": "vidaudtranscription-20200703222552-hostingbucket-dev",
    "aws_content_delivery_bucket_region": "us-east-1",
    "aws_content_delivery_url": "http://vidaudtranscription-20200703222552-hostingbucket-dev.s3-website-us-east-1.amazonaws.com"
};
export default awsmobile;

main.js:

import Amplify,{Storage} from 'aws-amplify';
import '@aws-amplify/ui-vue';
import aws_exports from './aws-exports';
Amplify.configure(aws_exports);

Я добавил вопрос для AWS Amplify команды здесь

1 ответ

Решение

Я был готов к этой работе, используя обещания вместо async\await, изменяя измененные let result =await Storage.put('test.mp4', objectToBeUploaded, config); к

Storage.put('test.mp4', objectToBeUploaded,config).then(async function(result) 
{console.log(`result : ${JSON.stringify(result)}`);})
Другие вопросы по тегам