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