Skip to content

Commit

Permalink
Delivery Alexa Skill With Amazon Location Service (#163)
Browse files Browse the repository at this point in the history
* Signup changes (#86)

* Add optimizely container params (#82)

* added optimizely sdk key param to containers

* logging add

* pprint

* ssm:GetParameters to task exec role

* rename ssm policy for execution role

* removed debug logging

* resource_bucket_path in CopyImagesLambdaFunction (#84)

* Bump selfsigned version for node-forge vuln

* remove phone number field from signUp form

* Update the READMEs and instructions to reflect changes in signup

Co-authored-by: Igor Krtolica <[email protected]>
Co-authored-by: Bastien <[email protected]>
Co-authored-by: James Jory <[email protected]>

* fix #87 by running npm audit fix

* AWS Interactive Video Service (IVS) Demo addition to the retail demo. Summary as follow:
* IVS: Addition of IVS container, IVS cloud formation.
* UI: Adding UI Tab and page for the streams, its products, recommendations and discounts.
* UI: Adding Reset Amazon Personalize button on the user profile.
* UI: Refactoring for the menu.
* Amazon Personalize: Addition of new campaign for discounts, update to the container service code.
* Amazon Personalize: Additional Jupyter notebook, remove dependancy on bucket to stage data,  instead generate it from script.
* Update to the readmes and documentations.
This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat <[email protected]>
Co-authored-by: Akram Dweikat  <[email protected]>
Co-authored-by: Damien Jade Duff <[email protected]>
Co-authored-by: daemon-joe <[email protected]>

* add welcome page

* more semantic markup

* service badges

* New product detail design + ability to change quantity on product page

* Remove extra console log

* Adjust spacing

* fix hover color on quantity background

* Add text alerts UI

* Use margin over gap property

* Use margin over gap property

* fix repeated cart update bug

* Avoid v-bind if unnecessary

* New product detail design + ability to change quantity on product page

* Remove extra console log

* Adjust spacing

* fix hover color on quantity background

* Use margin over gap property

* fix repeated cart update bug

* Shift responsibilities to Layout component

* Abstract out functionality into mixins

* Merge

* Updates to PR based on comments/discussions

- Scoped down on permissions for IVS and Personalize.
- Minor refactor of the recommender endpoint to clean up logic with respect to how discounts are extracted from reranking and experiment information added, to address the comment about why we have ‘old_url’ (we don’t anymore).
- Additional images and products are now using the original numbering scheme. Products are sequential in products.yaml and images are numbered per category.
- Merged a pinpoint fix from trunk (pull Arns rather than name from CloudFormation).
- Fixed a regression preventing pinpoint from accessing personalize recommendations.
- Fixed some typos.

* Protect text alerts component

* Use mixins within mixins

* Remove unneeded parameters from recommender service

* Remove optimisation about not regenerating interactions

* Enhance cart page

* only show cart summary if there are items in the cart

* formatting

* remove shipping and tax from mixin

* fix cart length check

* Fix cart item keys

* Use carousel component on product and home pages

* Adding UI button to trigger Abandoned Cart email

* Bump selfsigned version for node-forge vuln

* Pass ARNs to Pinpoint auto workshop lambda (#90)

* user-personalization recipe (#94)

* Event Engine support (#99)

* Wildcard resource due to CFN case sensitivity

* Add base Event Engine template

* Shorten IAM role name

* Task role name dynamic

* Shorten PinpointPersonalize role name

* Cache campaign and solution version details (#95)

* BugFix: Update csv path (#97)

When using RelativeResourceBucketPath, the CSV files are not written into the root of the bucket but under the ResourceBucketRelativePath. Fixing path with this commit

* Adding UI button to trigger Abandoned Cart email

* Feature/contextual metadata discounts (#16)

Following up on our conversations, we have moved the Personalize Discounts into using the "contextual metadata" feature to identify whether a product was being offered at a discount when it was viewed. Therefore, we use a single campaign and get different recommendations depending on the context of whether a discount is active. This will replace the previously mentioned solution. This change involves:

-Changes to training data (user-product interactions) to add the context field which will record which offer is active in the interaction (from {'DISCOUNT':'No'} and {'DISCOUNT':'Yes'})
-Remove the discounts campaign.
-Update the reranking campaign training and inference in the Lambda function that automatically trains all Personalize campaigns to take the contextual metadata (we use the reranking campaign with discounts because it allows us to “pick the top N”) (reranking also supports contextual metadata).
-Update the recommendations discounts endpoint to provide the context to Personalize.
-Update the experimentations framework to match this.
Ran unit tests.
-Workshop: We will also update the Jupyter notebook we added to show:
--How the interactions are generated.
--How the campaign is created.
--How recommendations might be retrieved from Personalize and from the endpoint.
--We also visualise to ensure that the recommender gives expected results.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* remove index of product rendered on carousel

* Abandoned cart pushing attributes initial work

* Temporary commit

* Revert "Temporary commit"

This reverts commit dd4e803.

* Adding in product information for event

* add welcome page

* more semantic markup

* service badges

* Use margin over gap property

* Avoid v-bind if unnecessary

* Adding in explicit URL locations for website images/locations

* use vuex to track welcome page visit

* remove copy that is only sometimes relevant

* add skip login for now button

* put text alerts section behind feature flag

* Upadting text tempalte

* fix analytics following removal of cart subtotal

* put abandon shopping cart button behind feature flag while waiting for back end service

* Enhance cart page

* only show cart summary if there are items in the cart

* formatting

* remove shipping and tax from mixin

* fix cart length check

* Fix cart item keys

* fix analytics following removal of cart subtotal

* put abandon shopping cart button behind feature flag while waiting for back end service

* add back cart feature flag

* Use carousel component on product and home pages

* remove index of product rendered on carousel

* Move data globally and add new nav

* New footer

* Remove role='presentation' from search results + truncate length

* Move margins style to parent component

* Move footer to partials/

* Make layout padding-top condition based on showNav

* Remove unnecessary breakpoint declaration

* Remove categories navigation from CategoryDetail page

* Updating UI conditional view and workshop books

* Fixing typos and grammar errors

* Adding bank in tempalte loads and links to tempalte files

* Feature/merge notebooks (#17)

Updates:

Merged the Notebook of Discounts (1.3) to the Notebook of Personalise (1.1)
Renamed delete notebook to 1.3
This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* Feature/master merge 20201119 (#18)

Update: Bring master new commits to Daemn branch 

This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* Add back product stock behavior

* Refine product stock behavior

* Use dynamic titles for recommendations section

* Only show user recommendations when logged in

* use personalizeUser state to decide when to show recommendations

* fix ProductDetail logic

* fix personalizeUserId sent on search rerank

* Implement Waypoint demo, including:
  - Amazon Waypoint geofence initiated flows & logic
  - Amazon Waypoint map UI component & scenario interface
  - Store-side orders view
  - Pinpoint campaigns integration for recommendations and abandoned cart
  - Amazon Personalize for coupon offers
  - Pinpoint transactional messaging for pickups
  - In-browser notifications
  - Amazon Pay integration
  - A Jupyter notebook illustrating Waypoint and Amazon Pinpoint integration

  This work was done by Dae.mn Team.
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Damien Jade Duff [email protected]
  Co-authored-by: Joe Major [email protected]

* Changes as requested on PR (#29)

Changes to PR as requested including:
- Default streams JSON pulled from S3
- Capitalisation of IVS
- Small code and doc changes
- Bump Golang version - Due to dependency update.

This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* Feature/remove copier dependency (#30)

Merge removal of copier dependency from master.

This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* Resize screenshot of discounts UI for notebook (#31)

Resize screenshot of discounts UI for notebook
 
This work was done by Dae.mn Team.
 Co-authored-by: Akram Dweikat [email protected]
 Co-authored-by: Akram Dweikat [email protected]
 Co-authored-by: Damien Jade Duff [email protected]
 Co-authored-by: Joe Major [email protected]

* Pr/requested fixes (#131)

* Move interactions generation into the right place (#32)

This work was done by Dae.mn Team.
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Damien Jade Duff [email protected]
  Co-authored-by: Joe Major [email protected]

Co-authored-by: Dae.mn <[email protected]>

* Bugfix/ivs deployment flag (#33)

Added flag to prevent CloudFormaiton deployment of IVS resources when default streams flag is set to Yes

This work was done by Dae.mn Team.
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Damien Jade Duff [email protected]
  Co-authored-by: Joe Major [email protected]

Co-authored-by: damien.dae.mn <[email protected]>
Co-authored-by: Dae.mn <[email protected]>

* Alexa demo including:
  - Alexa skill for C-store.
  - Integration with retail demo store including carts, orders.
  - Authentication vis retail demo store cognito user pool for Alexa user.
  - Integration with waypoint place indexes and geofence.
  - Order confirmation email.
  - Amazon Pay payment.
  - New products + images for c-store.
  - Personalize changes to filter between different c-store vs retail demo scenarios.
  - Personalize logic for creating sensible c-store data.
  - Deployment in 2 steps for Alexa+retail demo store stacks.
  This work was done by Dae.mn Team.
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Akram Dweikat [email protected]
  Co-authored-by: Damien Jade Duff [email protected]
  Co-authored-by: Joe Major [email protected]

* Revrt gen_env.sh to automatically generated variables

* Rename Waypoint to Location Service (#74)

- Rename Waypoint to Location Service
✓ Tested in deployment.
- Add back in missed Alexa/Pay code.

This work was done by Dae.mn Team.
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Akram Dweikat [email protected]
Co-authored-by: Damien Jade Duff [email protected]
Co-authored-by: Joe Major [email protected]

* Scope down on CloudFormation for geo:

* Late tidy: Remove debugging commented code

* Lambda tidy.

* Disambiguate latest comment in code

* Remove sandbox from template.env since now coming through CloudFormation

* Changes after review of Alexa skill:
 - Filter based on product attribute
 - Fix logs that do not print logs on products service
 - Defaults for EventEngine
 - Do not check for user on filter

 -----
 This work was done by the Dae.mn Team. http://dae.mn/ml
 [email protected] [email protected] [email protected]

* Changes as requested in PR:

Use carts service from retail demo store rather than a separate Alexa cart.
Use "guest" user when no Cognito user.
Require a profile user if Cognito account linked
Change invocation name as a workaround for stale skills in test Developer env
Remove "where_visible" flag due to lack of workarounds for filters.
Special purpose but more relevant Personalize filters.
Remove unused get_all_product_categories()
Add new categories to categories for upload

-----
This work was done by the Dae.mn Team. http://dae.mn/ml
[email protected] [email protected]

* Correct category name

* Add aliases back to product service

Co-authored-by: Shivani Mehendarge <[email protected]>
Co-authored-by: Igor Krtolica <[email protected]>
Co-authored-by: Bastien <[email protected]>
Co-authored-by: James Jory <[email protected]>
Co-authored-by: Kaz Baig <[email protected]>
Co-authored-by: Alex Chirayath <[email protected]>
Co-authored-by: damiendaemon <[email protected]>
Co-authored-by: daemon-joe <[email protected]>
Co-authored-by: Daemon Solutions <[email protected]>
Co-authored-by: Chirayath <[email protected]>
Co-authored-by: Aleksandr Patrushev <[email protected]>
Co-authored-by: Dae.mn <[email protected]>
  • Loading branch information
13 people authored Nov 5, 2021
1 parent eb22cf4 commit d2bc0e2
Show file tree
Hide file tree
Showing 59 changed files with 8,154 additions and 2,548 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ AWS Service | Workshops Overview | Workshop Links | Level | Duration
![Amazon Lex](./workshop/images/Amazon-Lex_64.png) Amazon Lex | In this module we're going to implement a conversational chatbot using Amazon Lex and integrate it into the Retail Demo Store's web UI. We'll provide some basic functionality to our chatbot such as being able to provide a return policy to users as well as wiring up the chatbot to the Amazon Personalize ML models we created in the Personalization workshop to provide personalized product recommendations to our users. | [Lex Chatbot](./workshop/5-Conversational/5.1-LexChatbot.ipynb) | 200 | 30 minutes
![Amazon Elasticsearch](./workshop/images/Amazon-Elasticsearch-Service_64.png) Amazon Elasticsearch | In this workshop, you will create a new Elasticsearch Index and index the Retail Demo Store product data so that users can search for products.| [Product Search](./workshop/0-StartHere/Search.ipynb) | 200 | 20 minutes
![Amazon Location Services](./workshop/images/Amazon-Location-Services_64.png) Amazon Location Services | Create a geofence for customers approaching your physical store and send them timely pickup notifications and offers. | [Geofencing](./workshop/7-LocationServices/7.1-LocationServices.ipynb) | 300 | 2 hours
![Amazon Alexa](./workshop/images/Amazon-Alexa_64.png) Amazon Alexa | Incorporating Location Service, Personalize and Retail Demo Store into a hands-free ordering experience. | [Alexa skill deployment](./workshop/5-Conversational/5.2-AlexaHandsfree.md) | 300 | 60 minutes
Experimentation | In this module we are going to add experimentation to the Retail Demo Store. This will allow us to experiment with different personalization approaches in the user interface. Through notebooks in this module we will demonstrate how to implement three experimentation techniques. | [Overview](./workshop/3-Experimentation/3.1-Overview.ipynb) <br/><br/> [A/B](./workshop/3-Experimentation/3.2-AB-Experiment.ipynb) <br/><br/> [Interleaving](./workshop/3-Experimentation/3.3-Interleaving-Experiment.ipynb) <br/><br/> [Multi-Armed Bandit](./workshop/3-Experimentation/3.4-Multi-Armed-Bandit-Experiment.ipynb) | 400 | 1.5 hours

## Partner Integrations
Expand Down
148 changes: 148 additions & 0 deletions aws/cloudformation-templates/alexa.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
AWSTemplateFormatVersion: 2010-09-09


Description: >
This template deploys the supporting infrastructure for the C-Store Alexa Skill, in particular,
the back-end Lambda function supporting the skill and the role that gives Alexa permission
to invoke it.
Parameters:

AlexaSkillId:
Type: String
Description: >
The ID of the Alexa Skill that is allowed to invoke this Alexa Lambda.
PinpointAppId:
Type: String

ResourceBucket:
Type: String
Description: >
S3 bucket name where the Retail Demo Store deployment resources are staged (product images, nested CloudFormation templates, source code snapshot,
notebooks, deployment Lambda code, etc).
ResourceBucketRelativePath:
Type: String
Description: >
Optional path in the Deployment Resources Staging bucket where the deployment resources are stored (e.g. path/path2/).
Leave blank if resources are at the root of the Staging Resource Bucket. If specified, MUST end with '/'.
ProductsServiceExternalUrl:
Type: String

LocationServiceExternalUrl:
Type: String

OrdersServiceExternalUrl:
Type: String

CartsServiceExternalUrl:
Type: String

RecommendationsServiceExternalUrl:
Type: String

LocationResourceName:
Type: String

AmazonPayMerchantId:
Type: String

AlexaAmazonPayDefaultSandboxEmail:
Type: String
Description: Fallback email for testing if no Cognito integration possible (e.g. testing on Alexa web simulator).


Resources:

AlexaSkillIAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- sts:AssumeRole
Path: /
Policies:
- PolicyName: "AlexaLambdaExecutionPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- mobiletargeting:SendMessages
Resource: !Sub "arn:aws:mobiletargeting:${AWS::Region}:${AWS::AccountId}:apps/${PinpointAppId}/messages"
- Effect: Allow
Action:
- geo:SearchPlaceIndexForPosition
- geo:SearchPlaceIndexForText
Resource:
- !Sub 'arn:aws:geo:${AWS::Region}:${AWS::AccountId}:place-index/${LocationResourceName}*'
- Effect: Allow
Action:
- logs:CreateLogStream
- logs:PutLogEvents
- logs:CreateLogGroup
Resource: '*'

AlexaSkillFunction:
Type: AWS::Lambda::Function
Properties:
Code:
S3Bucket: !Ref ResourceBucket
S3Key: !Sub '${ResourceBucketRelativePath}aws-lambda/alexa-skill-lambda.zip'
Handler: alexa-skill-lambda.lambda_handler
Runtime: python3.8
Role: !GetAtt AlexaSkillIAMRole.Arn
MemorySize: 512
Timeout: 60
Environment:
Variables:
OrdersServiceExternalUrl: !Ref OrdersServiceExternalUrl
CartsServiceExternalUrl: !Ref CartsServiceExternalUrl
RecommendationsServiceExternalUrl: !Ref RecommendationsServiceExternalUrl
ProductsServiceExternalUrl: !Ref ProductsServiceExternalUrl
LocationServiceExternalUrl: !Ref LocationServiceExternalUrl
PinpointAppId: !Ref PinpointAppId
LocationResourceName: !Ref LocationResourceName
AmazonPayMerchantId: !Ref AmazonPayMerchantId
AlexaAmazonPayDefaultSandboxEmail: !Ref AlexaAmazonPayDefaultSandboxEmail

AlexaSkillFunctionEventPermission:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:invokeFunction
FunctionName: !GetAtt AlexaSkillFunction.Arn
Principal: alexa-appkit.amazon.com
EventSourceToken: !Ref AlexaSkillId

AlexaSkillFunctionEventPermissionSmartHome:
Type: AWS::Lambda::Permission
Properties:
Action: lambda:invokeFunction
FunctionName: !GetAtt AlexaSkillFunction.Arn
Principal: alexa-connectedhome.amazon.com
EventSourceToken: !Ref AlexaSkillId

AlexaSkillFunctionLogGroup:
Type: AWS::Logs::LogGroup
Properties:
LogGroupName: !Sub /aws/lambda/${AlexaSkillFunction}
RetentionInDays: 14

Outputs:

AlexaSkillEndpointArn:
Description: LambdaARN for the regional endpoint
Value: !GetAtt AlexaSkillFunction.Arn

AlexaExecutionRoleArn:
Description: ARN of execution role required by Alexa-hosted Lambda function.
Value: !GetAtt AlexaSkillIAMRole.Arn
4 changes: 4 additions & 0 deletions aws/cloudformation-templates/deployment-support.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ Parameters:
Type: String
Default: Yes

ProductsServiceExternalUrl:
Type: String

DeployPersonalizedOffersCampaign:
Type: String
Default: No
Expand Down Expand Up @@ -142,6 +145,7 @@ Resources:
lambda_event_rule_name: 'RetailDemoStore-PersonalizePreCreateScheduledRule'
Uid: !Ref Uid
DeployPersonalizedOffersCampaign: !Ref DeployPersonalizedOffersCampaign
ProductsServiceExternalUrl: !Ref ProductsServiceExternalUrl

PersonalizePreCreateLambdaExecutionRole:
Condition: DeployPreCreateCampaign
Expand Down
2 changes: 2 additions & 0 deletions aws/cloudformation-templates/event-engine/base-workshop.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ Resources:
AmazonPayMerchantId: ''
AmazonPayPublicKeyId: ''
AmazonPayPrivateKey: ''
AlexaSkillId: ''
AlexaAmazonPayDefaultSandboxEmail: ''
IncludeSegmentDependencies: 'No' # Change to 'Yes' for Segment workshop
SegmentWriteKey: 'NONE'
GoogleAnalyticsMeasurementId: 'NONE'
Expand Down
52 changes: 52 additions & 0 deletions aws/cloudformation-templates/template.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ Metadata:
- AmazonPayMerchantId
- AmazonPayPublicKeyId
- AmazonPayPrivateKey
- Label:
default: "Alexa C-Store Demo"
Parameters:
- AlexaSkillId
- AlexaAmazonPayDefaultSandboxEmail
- Label:
default: "Optional Integrations"
Parameters:
Expand Down Expand Up @@ -105,6 +110,10 @@ Metadata:
default: "Public key ID associated with Amazon Pay sandbox account"
AmazonPayPrivateKey:
default: "Private key associated with Amazon Pay sandbox account"
AlexaSkillId:
default: "ID of C-Store Demo Alexa skill to access Retail Demo Store"
AlexaAmazonPayDefaultSandboxEmail:
default: "An email to test Alexa integration in case you have not set up Cognito authorisation to link your Retail Demo Store account"
IncludeSegmentDependencies:
default: "Deploy Segment Resources"
SegmentWriteKey:
Expand Down Expand Up @@ -285,6 +294,23 @@ Parameters:
For more information see "Amazon Pay Integration" under the README file in the amazon-pay-signing subfolder in the repository.
NoEcho: true

AlexaSkillId:
Type: String
Description: >
This Alexa skill with this SkillId will be allowed to invoke the back-end skill Lambda deployed as a part
of this CloudFormation stack. The back-end Lambda supports the C-Store demo allowing hands-free location
based searching with Location Service (if enabled), integration with the Retail Demo Store back-end, online recommendations,
and checkout with Amazon Pay (if enabled).
AlexaAmazonPayDefaultSandboxEmail:
Type: String
Description: >
If you follow the steps in the workshop to enable Alexa to authenticate with Cognito and pull back your
user details, you probably do not need to set this. However, the Alexa web testing
tool does not allow you to do this authentication either, so to test with the Alexa simulator on the web
and get emails and Amazon Pay integration, you need to set this value so that a default test user is set up -
for Amazon Pay integration, the email should be from one of the test accounts you created on SellerCentral.
IncludeSegmentDependencies:
Type: String
Description: >
Expand Down Expand Up @@ -323,6 +349,8 @@ Conditions:
- !Not [ !Equals [ !Ref AmazonPayMerchantId, "" ] ]
- !Not [ !Equals [ !Ref AmazonPayPublicKeyId, "" ] ]

DeployAlexaEndpoint: !Not [ !Equals [ !Ref AlexaSkillId, "" ] ]

Resources:
# Base Resources
Base:
Expand Down Expand Up @@ -470,6 +498,25 @@ Resources:
AmazonPayPrivateKey: !Ref AmazonPayPrivateKey
WebURL: !GetAtt Base.Outputs.WebUICDNURL

Alexa:
Type: AWS::CloudFormation::Stack
Condition: DeployAlexaEndpoint
Properties:
TemplateURL: !Sub https://s3.amazonaws.com/${ResourceBucket}/${ResourceBucketRelativePath}cloudformation-templates/alexa.yaml
Parameters:
AlexaSkillId: !Ref AlexaSkillId
PinpointAppId: !GetAtt Base.Outputs.PinpointAppId
ResourceBucket: !Ref ResourceBucket
ResourceBucketRelativePath: !Ref ResourceBucketRelativePath
ProductsServiceExternalUrl: !GetAtt Services.Outputs.ProductsServiceUrl
LocationServiceExternalUrl: !GetAtt Services.Outputs.LocationServiceUrl
OrdersServiceExternalUrl: !GetAtt Services.Outputs.OrdersServiceUrl
CartsServiceExternalUrl: !GetAtt Services.Outputs.CartsServiceUrl
RecommendationsServiceExternalUrl: !GetAtt Services.Outputs.RecommendationsServiceUrl
LocationResourceName: !If [DeployLocationStack, !GetAtt Location.Outputs.LocationResourceName, "NotDeployed"]
AmazonPayMerchantId: !Ref AmazonPayMerchantId
AlexaAmazonPayDefaultSandboxEmail: !Ref AlexaAmazonPayDefaultSandboxEmail

# Deployment support
DeploymentSupport:
DependsOn: [Services, Base] # Delay towards end of deployment so that ES domain and DNS changes become consistent
Expand All @@ -496,6 +543,7 @@ Resources:
PinpointEmailFromAddress: !Ref PinpointEmailFromAddress
PinpointEmailFromName: !Ref PinpointEmailFromName
UseDefaultIVSStreams: !Ref UseDefaultIVSStreams
ProductsServiceExternalUrl: !GetAtt Services.Outputs.ProductsServiceUrl
DeployPersonalizedOffersCampaign: !Ref DeployPersonalizedOffersCampaign

# Cleanup bucket function
Expand Down Expand Up @@ -562,3 +610,7 @@ Outputs:
PinpointAppId:
Description: Pinpoint App Id.
Value: !GetAtt Base.Outputs.PinpointAppId

AlexaSkillEndpointArn:
Description: Arn of AWS Lambda function that can be a back-end
Value: !If [DeployAlexaEndpoint, !GetAtt Alexa.Outputs.AlexaSkillEndpointArn, "NotDeployed"]
Loading

0 comments on commit d2bc0e2

Please sign in to comment.