Comments (4)
This is partially implemented. The media type wildcard */*
will now be added to the API (and set on each update). So it's possible to return a file, render an image, etc. Cool!
But...I would still like to allow the value to be configured. While I can't see a problem with simply always keeping a wildcard of */*
set (and maybe just do so when the API is first created) and be done with it...I imagine it could be useful to specify the types in the configuration.
Unfortunately, setting the array of media types did not seem to work with Swagger. Which would have made this all easier. So an update API call had to be made...And that call requires a path which is a little funky (and escaped): /binaryMediaTypes/*~1*
Anyway, this could be a bit nicer...And I haven't yet addressed binary coming in. It is possible to accept binary data through API Gateway too. It will then be converted to base64. In fact, on the Lambda side it's always going to be base64 because the Lambda event is of course in JSON.
For now, to return binary data, simply set res.IsBase64Encoded = true
and then base64 encode some binary data: res.Body = base64.StdEncoding.EncodeToString(buf.Bytes())
... I have had success in returning an image and making a simple image resize API with just a few lines of code.
Binary support with API Gateway and Lambda is really cool and convenient. However, for many situations I'd probably look at working with S3 and CloudFront. Specifically with an image resize API, you'd want to keep the results cached and stored somewhere like S3/CloudFront. Of course API Gateway can cache responses...But to scale (even if perhaps only your wallet), you're really looking at S3 anyway. At any rate, binary support is super convenient.
from aegis.
It may not be possible to accept images when using Lambda Proxy? https://aws.amazon.com/blogs/compute/binary-support-for-api-integrations-with-amazon-api-gateway/
...Or may be that specific routes need contentHandling
settings:
http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html
Which might not work so well with a wildcard path.
from aegis.
It doesn't seem to work just yet. I'm uncertain it will work for Lambda Proxy with ANY
requests. In order to be sure, I'll need to change the API Gateway settings to use something else other than Lambda Proxy. Though this starts to remove a lot of convenience.
from aegis.
Not going to worry about this for now as it's not well suited for AWS Lambda and API Gateway. The preferred method of working with binary data is to upload with pre-signed S3 URLs and then respond with S3 URLs. Though we can also return binary data in responses from API Gateway. So I don't see the need for anything more extravagant. Not for now.
from aegis.
Related Issues (20)
- increase code coverage, documentation, and examples HOT 1
- S3 Object Router - routing by event?
- Custom Services and related work
- 3rd Party Add-Ons
- nil Tracer HOT 1
- There was a problem creating a default IAM role for Lambda. Check your configuration. HOT 7
- token contains an invalid number of segments HOT 6
- Find infrastructure management solution
- Ensure Cognito rate limit is not hit HOT 1
- Unable to build new project with go modules enabled HOT 1
- Default aegis_lambda_role needs VPC policy HOT 1
- AppSync/GraphQL support
- build github.com/tmaiaroto/aegis: cannot find module for path github.com/kamilsk HOT 3
- aegis deploy error HOT 5
- Set up integration tests
- How could one change the default 3 second timeout for (Basic Settings) HOT 4
- There was a problem building the Go app for the Lambda function. HOT 4
- Add support for GCP and Azure
- Support HTTP API
- Github landing page documentation HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aegis.