Smoke Framework 1

Announcing Smoke Framework 1

We are pleased to announce the release of version 1.0.0 of the Smoke Framework along with SmokeHTTP, SmokeAWS, SmokeDynamoDB and SmokeAWSCredentials.

This release provides compatibility with Swift 4.1 and Swift 4.2 using SwiftNIO 1.x. We plan to follow with a release for Swift 5 and SwiftNIO 2 in the near future.

  • The Smoke Framework is a light-weight server-side service framework designed to run behind an authentication layer such as APIGateway.
    • SmokeFrameworkApplicationGenerate is a code generator for creating SmokeFramework-based services from Swagger 2.0 specification files.
    • SmokeFrameworkExamples provides a repository for SmokeFramework-based service examples. Currently there is an example showing the use of SmokeDynamoDB as a persistence layer.
  • SmokeAWS provides clients for a number of AWS services. We currently support the following services-
    • CloudWatch
    • DynamoDB
    • EC2 (Elastic Compute Cloud)
    • ECS (Elastic Container Service)
    • S3 (Simple Storage Service)
    • STS (Security Token Service)
    • SNS (Simple Notification Service)
    • SQS (Simple Queue Service)
    • SWF (Simple Workflow Service)
    • Step Functions
  • SmokeAWSCredentials provides management of static and rotating AWS IAM credentials, including assumed credentials.
  • SmokeHTTP is our core HTTP library.

Feel free to join our community on Gitter. We are also happy to answer any questions here on the Swift Forums.


Wow, great stuff, congrats on the release! Really cool to see quite a number clients for various important AWS services.

And let us know how the NIO2 migration goes, especially if you get stuck somewhere or hit bugs.


Congratulations! Excited to try this all out.

Thanks @johannesweiss. I will definitely let you know if we run into any issues with the NIO 2 migration. I am hoping that it won't take too long or be too involved!

Thanks @GalCohen. Let me know if you are running into issues or need something we haven't provided!

Whoops, meant to send this as a reply: The biggest thing for me would be Lambda integration. That's still on the way, right?

Lambda integration has proven more complicated than expected; I am sure you are following the thread[1] about it. We have been working on it but have run into similar issues to that thread. However, we think we have a path forward for it which we are going to investigate.

[1] AWS Lambda Runtime API - #25 by Prince2k3

1 Like

Great news! I know Cognito is a different kind of beast but is it prioritized on your backlog anytime soon?

@Thanks @cyupa! We can open an issue to track adding Cognito support. Is there a particular part of Cognito that you are particularly interested in having support for?

Thanks @tachyonics for the swift response :slight_smile: Pun intended. I am quite new to AWS services and was waiting for Amazon to release something like this for Swift so please keep that in mind because I might not be aware of the best possible approach for this. :grimacing:

I was looking at a way to authenticate/validate API users with Cognito - similar to this: Call a REST API integrated with an Amazon Cognito user pool - Amazon API Gateway

Not sure if this makes sense but I am listening to suggestions.

LE: Does SmokeFrameworkApplicationGenerate also support Open API 3.0?

LE2: Any plans on supporting AWS RDS?

Thanks again!

I'm not particularly familiar with Cognito but possibly using API Gateway itself for this authentication would be the easiest. However if you do need a client for Cognito identity for your use cases, it is something that could be added.

SmokeFrameworkApplicationGenerate doesn't currently support OpenAPI 3.0. It has been discussed as something we should add.

AWS RDS is probably one of services we will support next. We already have an issue[1] and request for it.

[1] Add RDS API · Issue #13 · amzn/smoke-aws · GitHub