-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1 from estigma88/release1
Release1
- Loading branch information
Showing
49 changed files
with
2,160 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
### Intellij+all Patch ### | ||
# Ignores the whole .idea folder and all .iml files | ||
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360 | ||
|
||
.idea/ | ||
|
||
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 | ||
|
||
*.iml | ||
modules.xml | ||
.idea/misc.xml | ||
*.ipr | ||
|
||
### Maven ### | ||
target/ | ||
pom.xml.tag | ||
pom.xml.releaseBackup | ||
pom.xml.versionsBackup | ||
pom.xml.next | ||
release.properties | ||
dependency-reduced-pom.xml | ||
buildNumber.properties | ||
.mvn/timing.properties | ||
.mvn/wrapper/maven-wrapper.jar | ||
.flattened-pom.xml | ||
|
||
# End of https://www.gitignore.io/api/maven,intellij+all |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# aws-publisher serverless API | ||
The aws-publisher project, created with [`aws-serverless-java-container`](https://github.com/awslabs/aws-serverless-java-container). | ||
|
||
The starter project defines a simple `/ping` resource that can accept `GET` requests with its tests. | ||
|
||
The project folder also includes a `sam.yaml` file. You can use this [SAM](https://github.com/awslabs/serverless-application-model) file to deploy the project to AWS Lambda and Amazon API Gateway or test in local with [SAM Local](https://github.com/awslabs/aws-sam-local). | ||
|
||
Using [Maven](https://maven.apache.org/), you can create an AWS Lambda-compatible zip file simply by running the maven package command from the project folder. | ||
```bash | ||
$ mvn archetype:generate -DartifactId=aws-publisher -DarchetypeGroupId=com.amazonaws.serverless.archetypes -DarchetypeArtifactId=aws-serverless-springboot-archetype -DarchetypeVersion=1.4 -DgroupId=my.service -Dversion=1.0-SNAPSHOT -Dinteractive=false | ||
$ cd aws-publisher | ||
$ mvn clean package | ||
|
||
[INFO] ------------------------------------------------------------------------ | ||
[INFO] BUILD SUCCESS | ||
[INFO] ------------------------------------------------------------------------ | ||
[INFO] Total time: 6.546 s | ||
[INFO] Finished at: 2018-02-15T08:39:33-08:00 | ||
[INFO] Final Memory: XXM/XXXM | ||
[INFO] ------------------------------------------------------------------------ | ||
``` | ||
|
||
You can use [AWS SAM Local](https://github.com/awslabs/aws-sam-local) to start your project. | ||
|
||
First, install SAM local: | ||
|
||
```bash | ||
$ npm install -g aws-sam-local | ||
``` | ||
|
||
Next, from the project root folder - where the `sam.yaml` file is located - start the API with the SAM Local CLI. | ||
|
||
```bash | ||
$ sam local start-api --template sam.yaml | ||
|
||
... | ||
Mounting com.amazonaws.serverless.archetypes.StreamLambdaHandler::handleRequest (java8) at http://127.0.0.1:3000/{proxy+} [OPTIONS GET HEAD POST PUT DELETE PATCH] | ||
... | ||
``` | ||
|
||
Using a new shell, you can send a test ping request to your API: | ||
|
||
```bash | ||
$ curl -s http://127.0.0.1:3000/ping | python -m json.tool | ||
|
||
{ | ||
"pong": "Hello, World!" | ||
} | ||
``` | ||
|
||
You can use the [AWS CLI](https://aws.amazon.com/cli/) to quickly deploy your application to AWS Lambda and Amazon API Gateway with your SAM template. | ||
|
||
You will need an S3 bucket to store the artifacts for deployment. Once you have created the S3 bucket, run the following command from the project's root folder - where the `sam.yaml` file is located: | ||
|
||
``` | ||
$ aws cloudformation package --template-file sam.yaml --output-template-file output-sam.yaml --s3-bucket <YOUR S3 BUCKET NAME> | ||
Uploading to xxxxxxxxxxxxxxxxxxxxxxxxxx 6464692 / 6464692.0 (100.00%) | ||
Successfully packaged artifacts and wrote output template to file output-sam.yaml. | ||
Execute the following command to deploy the packaged template | ||
aws cloudformation deploy --template-file /your/path/output-sam.yaml --stack-name <YOUR STACK NAME> | ||
``` | ||
|
||
As the command output suggests, you can now use the cli to deploy the application. Choose a stack name and run the `aws cloudformation deploy` command from the output of the package command. | ||
|
||
``` | ||
$ aws cloudformation deploy --template-file output-sam.yaml --stack-name ServerlessSpringApi --capabilities CAPABILITY_IAM | ||
``` | ||
|
||
Once the application is deployed, you can describe the stack to show the API endpoint that was created. The endpoint should be the `ServerlessSpringApi` key of the `Outputs` property: | ||
|
||
``` | ||
$ aws cloudformation describe-stacks --stack-name ServerlessSpringApi | ||
{ | ||
"Stacks": [ | ||
{ | ||
"StackId": "arn:aws:cloudformation:us-west-2:xxxxxxxx:stack/ServerlessSpringApi/xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx", | ||
"Description": "AWS Serverless Spring API - com.amazonaws.serverless.archetypes::aws-serverless-springboot-archetype", | ||
"Tags": [], | ||
"Outputs": [ | ||
{ | ||
"Description": "URL for application", | ||
"ExportName": "AwsPublisherApi", | ||
"OutputKey": "AwsPublisherApi", | ||
"OutputValue": "https://xxxxxxx.execute-api.us-west-2.amazonaws.com/Prod/ping" | ||
} | ||
], | ||
"CreationTime": "2016-12-13T22:59:31.552Z", | ||
"Capabilities": [ | ||
"CAPABILITY_IAM" | ||
], | ||
"StackName": "ServerlessSpringApi", | ||
"NotificationARNs": [], | ||
"StackStatus": "UPDATE_COMPLETE" | ||
} | ||
] | ||
} | ||
``` | ||
|
||
Copy the `OutputValue` into a browser or use curl to test your first request: | ||
|
||
```bash | ||
$ curl -s https://xxxxxxx.execute-api.us-west-2.amazonaws.com/Prod/ping | python -m json.tool | ||
|
||
{ | ||
"pong": "Hello, World!" | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<artifactId>aws-publisher</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>aws-publisher</name> | ||
<url>https://github.com/awslabs/aws-serverless-java-container</url> | ||
|
||
<parent> | ||
<groupId>com.coderstower</groupId> | ||
<artifactId>social-media-publisher</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
</parent> | ||
|
||
<dependencies> | ||
|
||
<dependency> | ||
<groupId>com.coderstower</groupId> | ||
<artifactId>spring-publisher</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>com.amazonaws.serverless</groupId> | ||
<artifactId>aws-serverless-java-container-springboot2</artifactId> | ||
<version>1.4</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>io.github.boostchicken</groupId> | ||
<artifactId>spring-data-dynamodb</artifactId> | ||
<version>5.2.3</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-web</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>4.12</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
<profiles> | ||
<profile> | ||
<id>shaded-jar</id> | ||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-shade-plugin</artifactId> | ||
<version>2.3</version> | ||
<configuration> | ||
<createDependencyReducedPom>false</createDependencyReducedPom> | ||
</configuration> | ||
<executions> | ||
<execution> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>shade</goal> | ||
</goals> | ||
<configuration> | ||
<artifactSet> | ||
<excludes> | ||
<exclude>org.apache.tomcat.embed:*</exclude> | ||
</excludes> | ||
</artifactSet> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</profile> | ||
<profile> | ||
<id>assembly-zip</id> | ||
<activation> | ||
<activeByDefault>true</activeByDefault> | ||
</activation> | ||
<build> | ||
<plugins> | ||
<!-- don't build a jar, we'll use the classes dir --> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-jar-plugin</artifactId> | ||
<version>3.1.1</version> | ||
<executions> | ||
<execution> | ||
<id>default-jar</id> | ||
<phase>none</phase> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<!-- select and copy only runtime dependencies to a temporary lib folder --> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-dependency-plugin</artifactId> | ||
<version>3.1.1</version> | ||
<executions> | ||
<execution> | ||
<id>copy-dependencies</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>copy-dependencies</goal> | ||
</goals> | ||
<configuration> | ||
<outputDirectory>${project.build.directory}${file.separator}lib</outputDirectory> | ||
<includeScope>runtime</includeScope> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-assembly-plugin</artifactId> | ||
<version>3.1.0</version> | ||
<executions> | ||
<execution> | ||
<id>zip-assembly</id> | ||
<phase>package</phase> | ||
<goals> | ||
<goal>single</goal> | ||
</goals> | ||
<configuration> | ||
<finalName>${project.artifactId}-${project.version}</finalName> | ||
<descriptors> | ||
<descriptor>src${file.separator}assembly${file.separator}bin.xml</descriptor> | ||
</descriptors> | ||
<attach>false</attach> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
</profile> | ||
</profiles> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
AWSTemplateFormatVersion: '2010-09-09' | ||
Transform: AWS::Serverless-2016-10-31 | ||
Description: AWS Serverless Spring Boot API - my.service::aws-publisher | ||
Globals: | ||
Api: | ||
EndpointConfiguration: REGIONAL | ||
|
||
Resources: | ||
AwsPublisherFunction: | ||
Type: AWS::Serverless::Function | ||
Properties: | ||
Handler: my.service.StreamLambdaHandler::handleRequest | ||
Runtime: java8 | ||
CodeUri: target/aws-publisher-1.0-SNAPSHOT-lambda-package.zip | ||
MemorySize: 512 | ||
Policies: AWSLambdaBasicExecutionRole | ||
Timeout: 30 | ||
Events: | ||
GetResource: | ||
Type: Api | ||
Properties: | ||
Path: /{proxy+} | ||
Method: any | ||
|
||
Outputs: | ||
AwsPublisherApi: | ||
Description: URL for application | ||
Value: !Sub 'https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/ping' | ||
Export: | ||
Name: AwsPublisherApi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd"> | ||
<id>lambda-package</id> | ||
<formats> | ||
<format>zip</format> | ||
</formats> | ||
<includeBaseDirectory>false</includeBaseDirectory> | ||
<fileSets> | ||
<!-- copy runtime dependencies with some exclusions --> | ||
<fileSet> | ||
<directory>${project.build.directory}${file.separator}lib</directory> | ||
<outputDirectory>lib</outputDirectory> | ||
<excludes> | ||
<exclude>tomcat-embed*</exclude> | ||
</excludes> | ||
</fileSet> | ||
<!-- copy all classes --> | ||
<fileSet> | ||
<directory>${project.build.directory}${file.separator}classes</directory> | ||
<includes> | ||
<include>**</include> | ||
</includes> | ||
<outputDirectory>${file.separator}</outputDirectory> | ||
</fileSet> | ||
</fileSets> | ||
</assembly> |
Oops, something went wrong.