2016-06-07 6 views
3

제목과 마찬가지로 제대로 작동하지 않는 것처럼 보입니다. 자세한 내용은 here에 설명 된 고급 가이드를 따르고 있지만 업로드 된 이미지는 비어있는 것 같습니다. 내가 설정 한 어떤API 게이트웨이 AWS 서비스 프록시를 통해 S3 버킷에 업로드

: 나는 콘텐츠 형식과 PUT 요청을 보낼 우체부를 사용하기 위해 노력하고있어

/images/{object} - PUT 
> Integration Request 
    AWS Region: ap-southeast-2 
    AWS Service: S3 
    AWS Subdomain [bucket name here] 
    HTTP method: PUT 
    Path override: /{object} 
    Execution Role [I have one set up] 
> URL Path Paramaters 
    object -> method.request.path.object 

: 이미지/PNG 몸은 PNG 파일의 바이너리 업로드입니다. 나는 또한 컬을 사용하려고했습니다

: 그것은 서버의 파일을 생성하고 크기가 지금까지 업로드 된 것을 이중 것으로 보인다

curl -X PUT -H "Authorization: Bearer [token]" -H "Content-Type: image/gif" --upload-file ~/Pictures/bart.gif https://[api-url]/dev/images/cool.gif 

, 볼 때 난 그냥 가져가 "이미지에 오류가 있습니다."

.txt 파일 (content-type : text/plain)로 시도해도 효과가있는 것 같습니다.

아이디어가 있으십니까?

+0

합니까 실제로 또한 콘솔에서와 같이, 올바른 콘텐츠 형식이 S3에서 만든 객체? S3의 ETag가 원본 파일의 md5 해시와 일치합니까? –

+0

내용 유형이 동일하고 md5가 ETag와 일치하지 않는 것 같습니다 ... 흥미로운 – csilk

+0

또한 로컬 파일 md5가 업로드 된 파일의 md5와 일치하지 않습니다 (다시 다운로드 한 경우) .txt 파일을 시도하고 작동하는 것 같습니다 : | – csilk

답변

2

많이 읽고을 읽고 AWS 기술 지원부에 채팅 한 후 자동으로 통과하는 모든 항목이 자동으로 UTF-8 인코딩을 통과하므로 API 게이트웨이를 통해 이진 업로드를 수행 할 수 없다는 것이 문제인 것처럼 보입니다.

가 나는, 내 솔루션 업로드하기 전에 파일을 BASE64 그들은 이것은 이전 게시물입니다 그들에게

+1

이 내용이 현재 상황에 적용되는지는 확실하지 않지만이 문서의 맨 아래에 나와 있습니다. http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating -api-with-aws-services-s3.html ... 메모가 있습니다. "이미지를 업로드하거나 다운로드하려면 콘텐츠 처리를 CONVERT_TO_BINARY로 설정해야합니다." – Matt

0

를 디코딩 버킷에 충돌 할 때 람다를 실행하는 것입니다 생각할 수있는이에 대한 몇 가지 해결 방법이 있지만, I 해결책이있어. AWS는 이제 APIGateway READ을 통한 바이너리 업로드를 지원합니다.

일반적으로 API 설정으로 이동하여 이진 미디어 유형을 추가하십시오.

는 그 후, 당신은 base64로 파일을 처리 할 수 ​​

관련 문제