簡體   English   中英

AWS S3使用docker容器解析URI錯誤

[英]AWS S3 parse URI error with docker containers

在我的本地環境中,我使用快速/節點后端和AWS S3服務器(使用scality / S3 )開發文件上載功能。 這兩種服務都在自己的容器中進行了docker化,通信工作正常。 我的問題是S3服務器似乎不理解上傳請求。 這是我嘗試使用的代碼:

 const s3 = new S3({ accessKeyId: 'accessKey1', secretAccessKey: 'verySecretKey1', endpoint: 's3server:8000', sslEnabled: false, s3ForcePathStyle: true, }); function uploadFile(file) { const params = { Body: file, Bucket: 'testbucket', Key: 'testkey', ACL: 'public-read', }; s3.upload(params, (err, data) => { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response }); } 

S3服務器接收請求但發回錯誤:

{"name":"S3","clientIP":"::ffff:172.18.0.5","clientPort":45066,"httpMethod":"PUT","httpURL":"/testbucket/testkey","time":1502458550488,"req_id":"7f4fac280644b5cf203c","level":"info","message":"received request","hostname":"faf8cb0b47d4","pid":103}
{"name":"S3","bytesSent":192,"clientIP":"::ffff:172.18.0.5","clientPort":45066,"httpMethod":"PUT","httpURL":"/testbucket/testkey","httpCode":400,"time":1502458550491,"req_id":"7f4fac280644b5cf203c","elapsed_ms":2.607924,"level":"info","message":"responded with error XML","hostname":"faf8cb0b47d4","pid":103}

節點后端記錄錯誤:

{ InvalidURI: Couldn't parse the specified URI.
     at Request.extractError (/usr/src/api/node_modules/aws-sdk/lib/services/s3.js:577:35)
     at Request.callListeners (/usr/src/api/node_modules/aws-sdk/lib/sequential_executor.js:105:20)
     at Request.emit (/usr/src/api/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
     at Request.emit (/usr/src/api/node_modules/aws-sdk/lib/request.js:683:14)
     at Request.transition (/usr/src/api/node_modules/aws-sdk/lib/request.js:22:10)
     at AcceptorStateMachine.runTo (/usr/src/api/node_modules/aws-sdk/lib/state_machine.js:14:12)
     at /usr/src/api/node_modules/aws-sdk/lib/state_machine.js:26:10
     at Request.<anonymous> (/usr/src/api/node_modules/aws-sdk/lib/request.js:38:9)
     at Request.<anonymous> (/usr/src/api/node_modules/aws-sdk/lib/request.js:685:12)
     at Request.callListeners (/usr/src/api/node_modules/aws-sdk/lib/sequential_executor.js:115:18)
     at Request.emit (/usr/src/api/node_modules/aws-sdk/lib/sequential_executor.js:77:10)
     at Request.emit (/usr/src/api/node_modules/aws-sdk/lib/request.js:683:14)
     at Request.transition (/usr/src/api/node_modules/aws-sdk/lib/request.js:22:10)
     at AcceptorStateMachine.runTo (/usr/src/api/node_modules/aws-sdk/lib/state_machine.js:14:12)
     at /usr/src/api/node_modules/aws-sdk/lib/state_machine.js:26:10
     at Request.<anonymous> (/usr/src/api/node_modules/aws-sdk/lib/request.js:38:9)
   message: 'Couldn\'t parse the specified URI.',
   code: 'InvalidURI',
   region: null,
   time: 2017-08-11T13:35:50.510Z,
   requestId: '7f4fac280644b5cf203c',
   extendedRequestId: '7f4fac280644b5cf203c',
   cfId: undefined,
   statusCode: 400,
   retryable: false,
   retryDelay: 57.08331622136704 }

我看到了一些關於utf-8編碼問題的答案,但它對我的情況不起作用:/

有沒有人知道為什么它不能解析URI?

感謝您的時間 !

您可以通過使用卷提供自己的config.json來解決此問題,如此處所示

  1. 復制config.json
  2. "s3server": "us-east-1","restEndpoints"
  3. docker run -v $(pwd)/config.json:/usr/src/app/config.json ... docker-compose.yaml docker run -v $(pwd)/config.json:/usr/src/app/config.json ...或者如果您正在使用docker compose,請docker-compose.yaml添加以下docker-compose.yaml
s3server:
    image: scality/s3server
    restart: always
    expose: [8000]
    stdin_open: true
    tty: true
    container_name: s3server
    volumes:
      - "${PWD}/s3config.json:/usr/src/app/config.json"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM