Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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/visual-studio-2008/2.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
Amazon web services 通过s3预签名的url下载axios的json文件_Amazon Web Services_Amazon S3_Axios - Fatal编程技术网

Amazon web services 通过s3预签名的url下载axios的json文件

Amazon web services 通过s3预签名的url下载axios的json文件,amazon-web-services,amazon-s3,axios,Amazon Web Services,Amazon S3,Axios,情况很简单。lambda aws发送的json超过10MB有效负载限制。 使用预先签名的url返回这个巨大的json并获得axios的响应,这是一种好的做法吗 不幸的是,我收到了这个错误。我收到的链接是有效的,我可以在浏览器上显示json Access to XMLHttpRequest at 'https://my-perfect-bucket.s3.amazonaws.com/my-super-key?AWSAccessKeyId=XXX&Signature=XXX&x-am

情况很简单。lambda aws发送的json超过10MB有效负载限制。 使用预先签名的url返回这个巨大的json并获得axios的响应,这是一种好的做法吗

不幸的是,我收到了这个错误。我收到的链接是有效的,我可以在浏览器上显示json

Access to XMLHttpRequest at 'https://my-perfect-bucket.s3.amazonaws.com/my-super-key?AWSAccessKeyId=XXX&Signature=XXX&x-amz-security-token=XXX&Expires=XXX' 
from origin 'http://localhost:3000' has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.
我应该在axios方法中添加一个参数吗

我的lambda

import json, boto3

def lambda_handler(event, context):
    body = json.loads(event['body'])
    key = body["key"]
    s3 = boto3.client('s3')
    response = s3.generate_presigned_url('get_object',
                                         Params={'Bucket': "my-perfect-bucket",
                                                 'Key': key},                     # json file 
                                         ExpiresIn=300,
                                         HttpMethod='GET')
    return {
        'statusCode': 200,
        'body': json.dumps(response, default=str)
    }
我的axios方法:

this.$axios
    .post(`/my-cool-api/get`, {
        key: this.key
    })
    .then(r => {
        this.$axios
            .get(r.data)
            .then(json => {
                this.mySuperData = json.data
            })
    })

将此添加到您的s3存储桶->权限->cors

您是否在该s3存储桶上设置了cors策略?
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]