From 24365786fbcdb47ca922a42b91fab10efec697dd Mon Sep 17 00:00:00 2001
From: Rucha Deshpande <deshruch@amazon.com>
Date: Wed, 8 Dec 2021 17:47:57 +0000
Subject: [PATCH] Add README

commit 99a61dfc
Author: Rucha Deshpande <deshruch@amazon.com>
Date: Wed Dec 08 2021 09:55:26 GMT-0600 (Central Standard Time)

    Merge branch 'dev' of codecommit://os-notification into dev


commit b3f9647e
Author: Rucha Deshpande <deshruch@amazon.com>
Date: Tue Dec 07 2021 17:03:12 GMT-0600 (Central Standard Time)

    add README
---
 README.md                           |   5 +
 provider/notification-aws/README.md | 154 ++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+)
 create mode 100644 provider/notification-aws/README.md

diff --git a/README.md b/README.md
index c93616713..40700bd1d 100644
--- a/README.md
+++ b/README.md
@@ -50,3 +50,8 @@ server.servlet.contextPath=/
 server.port=8080
 ```
 # new update
+
+
+## AWS
+
+Instructions for running and testing this service can be found [here](./provider/notification-aws/README.md)
\ No newline at end of file
diff --git a/provider/notification-aws/README.md b/provider/notification-aws/README.md
new file mode 100644
index 000000000..d639f8879
--- /dev/null
+++ b/provider/notification-aws/README.md
@@ -0,0 +1,154 @@
+# Notification Service
+The Notification service allows for interested consumers to subscribe to data and
+metadata changes using a publish/subscriber pattern.
+notification-aws is a [Spring Boot](https://spring.io/projects/spring-boot) service has a /push-handlers//records-changed API to notify subscribers of any updates. 
+
+## Running Locally
+
+These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
+
+### Prerequisites
+Pre-requisites
+
+* JDK 8 (https://docs.aws.amazon.com/corretto/latest/corretto-8-ug/downloads-list.html)
+* Maven 3.8.3 or later
+* Lombok 1.16 or later
+* OSDU Instance deployed on AWS
+
+### Service Configuration
+In order to run the service locally or remotely, you will need to have the following environment variables defined.
+
+| name | example value | required | description | sensitive? |
+| ---  | ---   | ---         | ---        | ---    |
+| `APPLICATION_PORT` | `8080` | yes | The port the service will be hosted on. | no |
+| `AWS_REGION` | `us-east-1` | yes | The region where resources needed by the service are deployed | no |
+| `AWS_ACCESS_KEY_ID` | `ASIAXXXXXXXXXXXXXX` | yes | The AWS Access Key for a user with access to Backend Resources required by the service | yes |
+| `AWS_SECRET_ACCESS_KEY` | `super-secret-key==` | yes | The AWS Secret Key for a user with access to Backend Resources required by the service | yes |
+| `AWS_SESSION_TOKEN` | `session-token-xxxxxxxxxx` | no | AWS Session token needed if using an SSO user session to authenticate | yes |
+| `RESOURCE_PREFIX` | `osdu-prefix` | yes | The Resource Prefix defined during deployment | no |
+| `LOG_LEVEL` | `DEBUG` | yes | The Log Level severity to use (https://www.tutorialspoint.com/log4j/log4j_logging_levels.htm) | no |
+| `SSM_ENABLED` | `true` | yes | Set to 'true' to use SSM to resolve config properties, otherwise use env vars | no |
+| `SSL_ENABLED` | `false` | no | Set to 'false' to disable SSL for local development | no |
+| `ENTITLEMENTS_BASE_URL` | `http://localhost:8081` or `https://some-hosted-url` | yes | Specify the base url for an entitlements service instance. Can be run locally or remote | no |
+| `REGISTER_BASE_URL` | `http://localhost:8081` or `https://some-hosted-url` | yes | Specify the base url for Register service instance. | no |
+
+
+### Run Locally
+Check that maven is installed:
+
+example:
+```bash
+$ mvn --version
+Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
+Maven home: /usr/local/Cellar/maven/3.8.3/libexec
+Java version: 1.8.0_312, vendor: Amazon.com Inc., runtime: /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home/jre
+...
+```
+
+You may need to configure access to the remote maven repository that holds the OSDU dependencies. Copy one of the below files' content to your .m2 folder
+* For development against the OSDU GitLab environment, leverage: `<REPO_ROOT>~/.mvn/community-maven.settings.xml`
+* For development in an AWS Environment, leverage: `<REPO_ROOT>/provider/notification-aws/maven/settings.xml`
+
+* Navigate to the service's root folder and run:
+
+```bash
+mvn clean package -pl notification-core,provider/notification-aws
+```
+
+* If you wish to build the project without running tests
+
+```bash
+mvn clean package -pl notification-core,provider/notification-aws -DskipTests
+```
+
+After configuring your environment as specified above, you can follow these steps to run the application. These steps should be invoked from the *repository root.*
+<br/>
+<br/>
+NOTE: If not on osx/linux: Replace `*` with version numbers as defined in the provider/notification-aws/pom.xml file
+
+```bash
+java -jar provider/notification-aws/target/notification-aws-*.*.*-SNAPSHOT-spring-boot.jar
+```
+
+## Testing
+ 
+ ### Running Integration Tests 
+ This section describes how to run OSDU Integration tests (testing/notification-test-aws).
+ 
+ You will need to have the following environment variables defined.
+ 
+ | name | example value | description | sensitive?
+ | ---  | ---   | ---         | ---        |
+ | `AWS_ACCESS_KEY_ID` | `ASIAXXXXXXXXXXXXXX` | The AWS Access Key for a user with access to Backend Resources required by the service | yes |
+ | `AWS_SECRET_ACCESS_KEY` | `super-secret-key==` | The AWS Secret Key for a user with access to Backend Resources required by the service | yes |
+ | `AWS_SESSION_TOKEN` | `session-token-xxxxxxxxx` | AWS Session token needed if using an SSO user session to authenticate | yes |
+ | `AWS_COGNITO_USER_POOL_ID` | `us-east-1_xxxxxxxx` | User Pool Id for the reference cognito | no |
+ | `AWS_COGNITO_CLIENT_ID` | `xxxxxxxxxxxx` | Client ID for the Auth Flow integrated with the Cognito User Pool | no |
+ | `AWS_COGNITO_AUTH_FLOW` | `USER_PASSWORD_AUTH` | Auth flow used by reference cognito deployment | no |
+ | `AWS_COGNITO_AUTH_PARAMS_USER` | `int-test-user@testing.com` | Int Test Username | no |
+ | `AWS_COGNITO_AUTH_PARAMS_USER_NO_ACCESS` | `no-access-user@testing.com` | Int Test No Access Username | no |
+ | `AWS_COGNITO_AUTH_PARAMS_PASSWORD` | `some-secure-password` | Int Test User/NoAccessUser Password | yes |
+ | `ENVIRONMENT` | `DEV` or `LOCAL`  | set to DEV for deployed service testing or local for local testing | no |
+ | `HMAC_SECRET` | `02030**********` | sensitive secret to run HMAC tests | yes | 
+ | `REGISTER_CUSTOM_PUSH_PATH` | `api/register/v1/awstest/aws/challenge` | Custom Push Path for subscription testing | no | 
+ | `REGISTER_CUSTOM_PUSH_URL_HMAC` |value of  `$NOTIFICATION_REGISTER_BASE_URL$REGISTER_CUSTOM_PUSH_PATH` | Custom Push Path for subscription testing | no |
+ | `NOTIFICATION_REGISTER_BASE_URL` | `http://localhost:8081/api/register/v1` | Register service url | no | - |
+ | `NOTIFICATION_BASE_URL` | `http://localhost:8080/api/notification/v1/` | Notification service url  | no | 
+
+ 
+
+ **Creating a new user to use for integration tests**
+ ```
+ aws cognito-idp admin-create-user --user-pool-id ${AWS_COGNITO_USER_POOL_ID} --username ${AWS_COGNITO_AUTH_PARAMS_USER} --user-attributes Name=email,Value=${AWS_COGNITO_AUTH_PARAMS_USER} Name=email_verified,Value=True --message-action SUPPRESS
+
+ aws cognito-idp initiate-auth --auth-flow ${AWS_COGNITO_AUTH_FLOW} --client-id ${AWS_COGNITO_CLIENT_ID} --auth-parameters USERNAME=${AWS_COGNITO_AUTH_PARAMS_USER},PASSWORD=${AWS_COGNITO_AUTH_PARAMS_PASSWORD}
+ ```
+ 
+ **Entitlements group configuration for integration accounts**
+ <br/>
+ In order to add user entitlements, run entitlements bootstrap scripts in the entitlements project
+ 
+ | AWS_COGNITO_AUTH_PARAMS_USER | AWS_COGNITO_AUTH_PARAMS_USER_NO_ACCESS | 
+ | ---  | --- |
+ | service.entitlements.user | service.entitlements.user |
+ | users.datalake.ops | 
+ | notification.pubsub |
+
+ 
+ Execute following command to build code and run all the integration tests:
+
+### Run Tests simulating Pipeline
+
+* Prior to running tests, scripts must be executed locally to generate pipeline env vars
+
+```bash
+testing/notification-test-aws/build-aws/prepare-dist.sh
+
+#Set Neccessary ENV Vars here as defined in run-tests.sh
+
+dist/testing/integration/build-aws/run-tests.sh 
+```
+
+### Run Tests using mvn
+Set required env vars and execute the following:
+```
+mvn clean package -f testing/pom.xml -pl notification-test-core,notification-test-aws -DskipTests
+mvn test -f testing/notification-test-aws/pom.xml
+```
+
+
+
+## License
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+ 
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ 
+[http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
+ 
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
\ No newline at end of file
-- 
GitLab