Some general notes on configuring the cloud providers command line interfaces or the general deployment of a .NET based Function Application on Azure can be found in the Docs Folder.
The following section lists all prerequisites for the implementations based on the cloud provider.
The deployment guides are only tested on a Linux based enviornment.However they should work on MacOS without modifications since the moreutils
package is available there using Homebrew (See here).
Running on Windows is more difficult because GNU make
and moreutils
are not directly available for Windows. Using Cygwin might be an option though. Another approach could be the use of WSL (Windows Subsystem for Linux).
Links to the tools listed here can be found here
To deploy to AWS using the deployment scripts you need:
- NodeJS - Version 8 or later
- Python 2.6.5+ or Python 3.3+
- AWS CLI
- Serverless Framework CLI
- GNU
make
yq
utility
In the deployment guides we assume your local AWS CLI is authenticated and has sufficent IAM roles. Click here to see wich roles we assigned to test the deployment.
To deploy to Microsoft Azure using the deployment scripts you need:
- NodeJS - Version 8 or later
- Python 2.7+ or Python 3.4+
- Azure CLI
- Azure Functions Core Tools
- GNU
make
jq
Utilitysponge
Utility
The deployment guides assume that you are logged into the Azure CLI using az login
To deploy to IBM Cloud using the deployment scripts you need:
- IBM Cloud CLI
cloud-functions
extensionevent-streams
extension
- OpenWhisk Composer Tools
- GNU
make
jq
Utilitysponge
Utility
Most of the IBM Cloud implementations requrie a CloudFoundry based Function namespace. We therefore assume that you are authenticated in the IBM Cloud CLI using the ibmcloud login
command and we assume that you are targeting the CloudFoundry based function namespace using ibmcloud target --cf -o <org> -s <space>
and ibmcloud fn property --namespace <org>_<space>
.
Only the Thumbnail Generator uses an IAM based Namesapce because this makes a region change easier.
These programms and SDKs are required to build the applications.
- NodeJS Version 8 or Newer
- .NET Framework SDK Version 2.1 or newer
- Go SDK Version 1.11 or newer
- Java 8 JDK
To work with the testing guides the following utilites should be installed:
- Go SDK Version 1.11 or newer
curl
Utilityjq
Utility
To implement the use-cases we have used the following IDEs:
- Visual Studio Code for JavaScript and generic Editing
- JetBrains Rider for .NET
- JetBrains GoLand for Go
- JetBrains IntelliJ IDEA Community Edition for Java
The Use-Cases are grouped together in a Directory in the Root Directory. In the Directory for every use-case the provider specific implementation can be found. Implementations for AWS can be located in the Lambda
subdirectory, implentations for Microsoft Azure in the Azure
directory and IBM Cloud implementations in the IBMCloud
directory. With two exceptions: The ToDo API implementations for IBMCloud and AWS Lambda are located in a different repository since these are implemented in Go. Their implementation can be found here.
Every Implementation has a Readme file describing the steps needed to deploy the use case.
On AWS all deployments can be removed using the serverless remove
command that is sometimes wrapped in a makefile. Microsoft Azure and IBM Cloud implementations cannot get deleted using a command. Some IBM implemnetations allow the removal of the IBM Cloud Functions components like actions, APIs and triggers but they do not allow the removal of external services like Object Storage Buckets. these have to be deleted manually. On Azure everything has to be removed manually.
The functionality of some deployments can be validated using tests. These tests are written in Go requiring the Go SDK to be installed to run the tests. However, all of these tests do not require any third party libraries. Their functionality is implemented using the Go standard library.
The Source Code is Licensed under Apache License (Version 2.0). See License for more informations.