-
Rucha Deshpande authored
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
Rucha Deshpande authoredcommit 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
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 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:
$ 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:
mvn clean package -pl notification-core,provider/notification-aws
- If you wish to build the project without running tests
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.
NOTE: If not on osx/linux: Replace *
with version numbers as defined in the provider/notification-aws/pom.xml file
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
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
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