Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Node.js 错误:无法创建没有bucket、region和凭据的POST对象策略_Node.js_Amazon Web Services_Amazon S3_Aws Sdk Js - Fatal编程技术网

Node.js 错误:无法创建没有bucket、region和凭据的POST对象策略

Node.js 错误:无法创建没有bucket、region和凭据的POST对象策略,node.js,amazon-web-services,amazon-s3,aws-sdk-js,Node.js,Amazon Web Services,Amazon S3,Aws Sdk Js,我正在尝试使用AWS javascript sdk生成一个预先指定的帖子URL, 我收到以下错误- Error: Unable to create a POST object policy without a bucket, region, and credentials 我在本地服务器上配置了AWS凭据,并具有S3访问权限, 在创建S3客户端时设置区域的代码中, 将bucket名称作为参数传递给客户机方法时 以下是代码片段- const AWS = require('aws-sdk'); l

我正在尝试使用AWS javascript sdk生成一个预先指定的帖子URL,
我收到以下错误-

Error: Unable to create a POST object policy without a bucket, region, and credentials
我在本地服务器上配置了AWS凭据,并具有S3访问权限,
在创建S3客户端时设置区域的代码中,
将bucket名称作为参数传递给客户机方法时

以下是代码片段-

const AWS = require('aws-sdk');
let util = require('util');

let s3Client = new AWS.S3({
    region: 'us-east-1'
});

let postSignedUrl = async () => {

    try {
        let postSigningParams = {
            Expires: 60,
            Bucket: "some-bucket-name,
            Conditions: [["content-length-range", 100, 10000000]],
            Fields: {
                key: 'test/image.jpg'
            }
        }

        let s3createPresignedPost = util.promisify(s3Client.createPresignedPost).bind(s3Client);
        let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);

        console.log('postSigningParams => ', postSignedUrl);
    } catch (error) {
        console.error(error);
    }
}

postSignedUrl();
Error: Unable to create a POST object policy without a bucket, region, and credentials
    at features.constructor.preparePostFields (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/servi
ces/s3.js:943:13)
    at finalizePost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:906:22)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:923:24
    at finish (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:349:7)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:367:9
    at SharedIniFileCredentials.get (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/credentials.js:
127:7)
    at getAsyncCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:361:24)
    at Config.getCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:381:9)
    at features.constructor.createPresignedPost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/ser
vices/s3.js:918:14)
    at Promise (internal/util.js:274:30)
AWS.config.update({region:'us-east-1'});
let s3Client = new AWS.S3();
let presignedUrl = async () => {

    let signingParams = {
        Bucket: 'some-bucket-name',
        Key: 'test/image.jpg',
        Expires: 60
    }

    let s3GetSignedUrl = util.promisify(s3Client.getSignedUrl).bind(s3Client);
    let signedUrl = await s3GetSignedUrl('putObject',signingParams);

    console.log('signedUrl => ', signedUrl);
} 
错误堆栈跟踪-

const AWS = require('aws-sdk');
let util = require('util');

let s3Client = new AWS.S3({
    region: 'us-east-1'
});

let postSignedUrl = async () => {

    try {
        let postSigningParams = {
            Expires: 60,
            Bucket: "some-bucket-name,
            Conditions: [["content-length-range", 100, 10000000]],
            Fields: {
                key: 'test/image.jpg'
            }
        }

        let s3createPresignedPost = util.promisify(s3Client.createPresignedPost).bind(s3Client);
        let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);

        console.log('postSigningParams => ', postSignedUrl);
    } catch (error) {
        console.error(error);
    }
}

postSignedUrl();
Error: Unable to create a POST object policy without a bucket, region, and credentials
    at features.constructor.preparePostFields (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/servi
ces/s3.js:943:13)
    at finalizePost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:906:22)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:923:24
    at finish (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:349:7)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:367:9
    at SharedIniFileCredentials.get (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/credentials.js:
127:7)
    at getAsyncCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:361:24)
    at Config.getCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:381:9)
    at features.constructor.createPresignedPost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/ser
vices/s3.js:918:14)
    at Promise (internal/util.js:274:30)
AWS.config.update({region:'us-east-1'});
let s3Client = new AWS.S3();
let presignedUrl = async () => {

    let signingParams = {
        Bucket: 'some-bucket-name',
        Key: 'test/image.jpg',
        Expires: 60
    }

    let s3GetSignedUrl = util.promisify(s3Client.getSignedUrl).bind(s3Client);
    let signedUrl = await s3GetSignedUrl('putObject',signingParams);

    console.log('signedUrl => ', signedUrl);
} 
我尝试了以下方法,但无效-

const AWS = require('aws-sdk');
let util = require('util');

let s3Client = new AWS.S3({
    region: 'us-east-1'
});

let postSignedUrl = async () => {

    try {
        let postSigningParams = {
            Expires: 60,
            Bucket: "some-bucket-name,
            Conditions: [["content-length-range", 100, 10000000]],
            Fields: {
                key: 'test/image.jpg'
            }
        }

        let s3createPresignedPost = util.promisify(s3Client.createPresignedPost).bind(s3Client);
        let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);

        console.log('postSigningParams => ', postSignedUrl);
    } catch (error) {
        console.error(error);
    }
}

postSignedUrl();
Error: Unable to create a POST object policy without a bucket, region, and credentials
    at features.constructor.preparePostFields (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/servi
ces/s3.js:943:13)
    at finalizePost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:906:22)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:923:24
    at finish (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:349:7)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:367:9
    at SharedIniFileCredentials.get (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/credentials.js:
127:7)
    at getAsyncCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:361:24)
    at Config.getCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:381:9)
    at features.constructor.createPresignedPost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/ser
vices/s3.js:918:14)
    at Promise (internal/util.js:274:30)
AWS.config.update({region:'us-east-1'});
let s3Client = new AWS.S3();
let presignedUrl = async () => {

    let signingParams = {
        Bucket: 'some-bucket-name',
        Key: 'test/image.jpg',
        Expires: 60
    }

    let s3GetSignedUrl = util.promisify(s3Client.getSignedUrl).bind(s3Client);
    let signedUrl = await s3GetSignedUrl('putObject',signingParams);

    console.log('signedUrl => ', signedUrl);
} 
类似的AWS S3 sdk方法也可以工作-

const AWS = require('aws-sdk');
let util = require('util');

let s3Client = new AWS.S3({
    region: 'us-east-1'
});

let postSignedUrl = async () => {

    try {
        let postSigningParams = {
            Expires: 60,
            Bucket: "some-bucket-name,
            Conditions: [["content-length-range", 100, 10000000]],
            Fields: {
                key: 'test/image.jpg'
            }
        }

        let s3createPresignedPost = util.promisify(s3Client.createPresignedPost).bind(s3Client);
        let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);

        console.log('postSigningParams => ', postSignedUrl);
    } catch (error) {
        console.error(error);
    }
}

postSignedUrl();
Error: Unable to create a POST object policy without a bucket, region, and credentials
    at features.constructor.preparePostFields (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/servi
ces/s3.js:943:13)
    at finalizePost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:906:22)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/services/s3.js:923:24
    at finish (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:349:7)
    at /Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:367:9
    at SharedIniFileCredentials.get (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/credentials.js:
127:7)
    at getAsyncCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:361:24)
    at Config.getCredentials (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/config.js:381:9)
    at features.constructor.createPresignedPost (/Users/aniruddhanarendraraje/Documents/work/pocs/node-crud-app/snippets/node_modules/aws-sdk/lib/ser
vices/s3.js:918:14)
    at Promise (internal/util.js:274:30)
AWS.config.update({region:'us-east-1'});
let s3Client = new AWS.S3();
let presignedUrl = async () => {

    let signingParams = {
        Bucket: 'some-bucket-name',
        Key: 'test/image.jpg',
        Expires: 60
    }

    let s3GetSignedUrl = util.promisify(s3Client.getSignedUrl).bind(s3Client);
    let signedUrl = await s3GetSignedUrl('putObject',signingParams);

    console.log('signedUrl => ', signedUrl);
} 
犯了一个愚蠢的错误,
createPresignedPost
方法调用中错误地将
putObject
作为参数传入

let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);
应该是公正的-

let postSignedUrl = await s3createPresignedPost(postSigningParams);
犯了一个愚蠢的错误,
createPresignedPost
方法调用中错误地将
putObject
作为参数传入

let postSignedUrl = await s3createPresignedPost('putObject',postSigningParams);
应该是公正的-

let postSignedUrl = await s3createPresignedPost(postSigningParams);

@Aniruddha_Raje..很抱歉,你在哪里传递凭据?@MukulSharma我使用AWS CLI的AWS configure命令将我的AWS凭据设置到我的本地机器W…这是一种非常复杂的方法
等待s3Client。createPresignedPost(postSigningParams).promise()
@Aniruddha_Raje..很抱歉,您在哪里传递凭据?@MukulSharma我使用AWS CLI的AWS configure命令将我的AWS凭据设置到本地机器W…这是一种非常复杂的方法,
等待s3Client。createPresignedPost(postSigningParams).promise()
Ahah,笨蛋!。。。。我就是这样登上你的帖子的,我也是这么做的(这很奇怪。我在降落到这里之前做了完全相同的事情,但是,仍然:(啊哈,愚蠢!…我就是这样降落到你的帖子上的,做了同样的事情…)(这很奇怪。我在降落到这里之前做了完全相同的事情,但是,仍然:(