forked from aws-samples/aws-lex-web-ui
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaster-pipeline.yaml
640 lines (586 loc) · 25.5 KB
/
master-pipeline.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
AWSTemplateFormatVersion: 2010-09-09
Description: |
Master Pipeline Lex Web UI CloudFormation template (v0.21.1)
The Lex Web Ui can be deployed to operate against either a Lex V2 Bot OR a Lex V1 Bot BUT NOT BOTH.
Please configure either the Lex V2 bot information OR the Lex V1 bot information and leave the other
version input parameters as defaulted.
A deployment of Lex Web Ui can not be switched between V2 and V1 by updating the stack with different parameters.
It deploys:
- S3 buckets to host the web application
- CodeBuild project to build the configuration and deploy to S3
- Optional Lex Bot (based on OrderFlowers example)
- Optional Cognito Identity Pool for unauthenticated identities
- Optional Lambda function to delete S3 buckets
- CodeCommit Repository containg the source code in
this project and a CodeBuild project, Lambda functions to initialize
the repo
- Optional deployment pipeline using CodePipeline and CodeBuild
- CloudWatch Logs groups related to Lambda functions
- Associated IAM roles
Parameters:
LexV2BotId:
Description: >
Bot ID (not bot name) of an existing Lex V2 Bot to be used by the web ui. NOTE: You must
also enter your Bot alias ID in the LexV2BotAliasId field below. DO NOT MODIFY this value if
configuring a V1 Bot.
Type: String
Default: ''
MaxLength: 50
AllowedPattern: '(^$|^[a-zA-Z0-9]+((_[a-zA-Z0-9]+)*|([a-zA-Z0-9]+_)*|_))'
ConstraintDescription: >
Must conform with the permitted Lex V2 Bot name pattern.
LexV2BotAliasId:
Description: >
Use your Lex V2 Bot's alias id (not alias name) here. DO NOT MODIFY this value if
configuring a V1 Bot.
Type: String
Default: ''
MinLength: 0
MaxLength: 50
AllowedPattern: '(^$|^[$a-zA-Z0-9]+((_[$a-zA-Z0-9]+)*|([$a-zA-Z0-9]+_)*|_))'
ConstraintDescription: >
Must conform with the permitted Lex V2 Alias name pattern.
LexV2BotLocaleId:
Description: >
Specify your bot's supported locale ids. By default this list contains only en_US. Other Lex V2
supported values are de_DE, en_AU, en_GB, es_419, es_ES, es_US, fr_CA, fr_FR, it_IT, ja_JP. A comma
separated list of values can be supplied with the first value in the list being the default value. The
remaining items can be selected in the Lex Web Ui menu.
See "https://docs.aws.amazon.com/lexv2/latest/dg/lex2.0.pdf"
for details on supported languages and locales. DO NOT MODIFY this value if
configuring a V1 Bot.
Type: String
Default: 'en_US'
MinLength: 2
MaxLength: 50
BotName:
Description: >
Name of an existing Lex Bot to be used by the web ui. NOTE: You must
also enter your published bot alias in the BotAlias field below. DO NOT MODIFY this value if
configuring a V2 Bot.
Type: String
Default: ''
MinLength: 0
MaxLength: 50
AllowedPattern: '(^$|^[a-zA-Z]+((_[a-zA-Z]+)*|([a-zA-Z]+_)*|_))'
ConstraintDescription: >
Must conform with the permitted Lex Bot name pattern.
BotAlias:
Description: >
WARNING: For production deployments, use your bot's published alias here.
The $LATEST alias should only be used for manual testing. Amazon Lex limits
the number of runtime requests that you can make to the $LATEST version of
the bot. DO NOT MODIFY this value if configuring a V2 Bot.
Type: String
Default: '$LATEST'
MinLength: 2
MaxLength: 50
AllowedPattern: '(^$|^[$a-zA-Z]+((_[$a-zA-Z]+)*|([$a-zA-Z]+_)*|_))'
ConstraintDescription: >
Must conform with the permitted Lex Alias name pattern.
BotNamePrefix:
Type: String
Description: >
If Lex Version 2 BotId is left empty AND the Lex Version 1 BotName is left empty,
a Lex V1 Bot based on the OrderFlowers sample will be automatically created.
Specify a prefix to add to Lex resource names when using the sample bot.
Ignored if you provide your own bot. Must conform to the
permitted Lex Bot name syntax (alpha characters).
Default: WebUi
MinLength: 3
MaxLength: 32
AllowedPattern: '^[a-zA-Z\._]+$'
ConstraintDescription: >
Must conform with the permitted Lex Bot name pattern.
ShouldDeleteBot:
Type: String
Default: true
AllowedValues:
- true
- false
Description: >
If set to True, the Optional Sample Lex bot and associated resources will
be deleted when the stack is deleted. Otherwise, the bot
will be preserved. Only applies if the bot is created by
this stack.
HideButtonMessageBubble:
Type: String
Default: false
AllowedValues:
- true
- false
Description: >
If set to true, hide the message bubble on a response card button press
ShouldEnableLiveChat:
Type: String
Default: false
AllowedValues:
- true
- false
Description: >
This is an optional parameter, if set to True, the AWS Connect live Chat functionality will be available.
A item to start a live chat will appear at the menu.
ConnectContactFlowId:
Type: String
Description: >
Connect Contract Flow Id
ConnectInstanceId:
Type: String
Description: >
Connect Instance Id
Default: ""
ConnectPromptForNameMessage:
Type: String
Description: >
Message to display prompting the user for a name
Default: Before starting a live chat, please tell me your name?
ConnectWaitForAgentMessage:
Type: String
Description: >
Message to display every message interval while waiting for an agent to connect
Default: Thanks for waiting. An agent will be with you when available.
ConnectWaitForAgentMessageIntervalInSeconds:
Type: Number
Description: >
Interval in seconds between successive ConnectWaitForAgentMessage. 0 to disable interval.
Default: 60
ConnectAgentJoinedMessage:
Type: String
Description: >
Message to play when an agent joins the chat. {Agent} will be replaced with the Agent's name.
Default: "{Agent} has joined."
ConnectAgentLeftMessage:
Type: String
Description: >
Message to play when an agent leaves the chat. {Agent} will be replaced with the Agent's name.
Default: "{Agent} has left."
ConnectChatEndedMessage:
Type: String
Description: >
Message to play when a chat session has ended.
Default: "Chat ended."
ConnectAttachChatTranscript:
Type: String
Default: false
AllowedValues:
- true
- false
Description: >
Attach chat transcript as file. This only works if you enable attachments in Amazon Connect.
ConnectLiveChatTerms:
Type: String
Description: >
Command separated list of terms that can be used to start Live Chat mode
Default: "live chat"
CodeCommitRepoName:
Type: String
Description: >
Name of CodeCommit repository to be created. Used as the
source for the pipeline and to automate deployments of the
web app. It is initialized with source artifacts from the
bootstrap S3 bucket. Must be unique per region.
Default: lex-web-ui
MinLength: 1
MaxLength: 100
AllowedPattern: '^[\w\.-]+$'
ConstraintDescription: Alphanumeric, dot and dash.
CodePipelineName:
Type: String
Description: >
Name of CodePipeline pipeline to be created. Used to manage
the build and deployment of the web application. Must be
unique per region.
to true.
Default: lex-web-ui
MinLength: 1
MaxLength: 100
AllowedPattern: '[A-Za-z0-9.@\-_]+'
ConstraintDescription: Alphanumeric, dot, dash, underscore and @.
CodeBuildName:
Type: String
Description: >
Name of the CodeBuild project to be created. Used for
building the web app with the pipeline. Must be unique
per region.
Default: lex-web-ui
MinLength: 2
MaxLength: 255
AllowedPattern: '^[A-Za-z0-9][A-Za-z0-9\-_]{1,254}$'
ConstraintDescription: >
Should start with Alphanumeric. May contain alphanumeric, undescore
and dash.
WebAppParentOrigin:
Type: String
Description: >
Browser origin (e.g. http://mysite.example.com:8080)
of an existing site where you want to place the chat bot UI.
This is an optional parameter. If left empty, the sample parent page
will be hosted in the same S3 bucket as the iframe
Default: ''
AllowedPattern: '(^$|^https?://[\w\.-]+(:\d+)?$)'
ConstraintDescription: Empty or valid browser origin
WebAppPath:
Type: String
Default: '/parent.html'
Description: >
Path to the page (or pages) under WebAppParentOrigin used to host
the chatbot UI. Multiple paths can be specified as a comma separated
list.
CognitoIdentityPoolId:
Type: String
Description: >
Id of an existing Cognito Identity Pool. This is an optional
parameter. If left empty, a Cognito Identity Pool will be
automatically created. The pool ID is used by the web ui
to get AWS credentials for making calls to Lex and Polly.
Default: ''
AllowedPattern: '(^$|^[\w-]+:[0-9a-f-]+$)'
ConstraintDescription: Empty or a valid Cognito Identity Pool ID
CognitoIdentityPoolName:
Type: String
Description: >
Name of Cognito identity pool to be created to provide
AWS credentials to the web ui. Only used if the
CognitoIdentityPoolId parameter is left empty (default).
Default: Lex Web UI
MinLength: 1
MaxLength: 128
AllowedPattern: '^[\w ]+$'
ConstraintDescription: Alphanumeric and spaces.
CleanupBuckets:
Type: String
Default: true
AllowedValues:
- true
- false
Description: >
If set to True, buckets created for the Pipeline and to store the
web application will be deleted on CloudFormation stack delete.
If set to False, S3 buckets will be retained.
# Sub-templates and source artifacts are hosted in this bucket.
# The content of this bucket is maintained outside of this template
# by using the Makefile under the build directory of this project.
# See the README.md file for instructions on how to use your own bucket.
BootstrapBucket:
Type: String
Default: aws-bigdata-blog
Description: >
S3 bucket containing pre-staged nested templates and source artifacts
BootstrapPrefix:
Type: String
Default: artifacts/aws-lex-web-ui/artifacts
Description: >
S3 prefix where the templates and source are stored under
WebAppConfNegativeFeedback:
Type: String
Default: Thumbs down
Description: >
This optional parameter defines the message to be sent by the user upon pressing
a feedback button signaling a negative feedback.
If left empty feedback buttons will be disabled on the UI.
WebAppConfPositiveFeedback:
Type: String
Default: Thumbs up
Description: >
This optional parameter defines the message to be sent by the user upon pressing
a feedback button signaling a positive feedback.
If left empty feedback buttons will be disabled on the UI.
WebAppConfHelp:
Type: String
Default: Help
Description: >
This is an optional parameter, when defined with a value, a help button will display on the chat bot toolbar.
When pressed the button will send the entered string to the bot as a help message. If left empty
the help button will be disabled.
WebAppConfCname:
Type: String
Default: ""
Description: This optional parameter allows a single CNAME to be defined and used as an alias to
the cloudfront distribution that is created by this template. If a CNAME is provided, a
WebAppAcmCertificateArn must also be provided.
WebAppAcmCertificateArn:
Type: String
Default: ""
Description: This optional parameter allows a AcmCertificateArn to be provided for use in the Cloudfront
distribution created by this template. if a AcmCertificateArn is provided, a WebAppConfCname must also
be provided.
WebAppWafAclArn:
Type: String
Default: ""
Description: This optional parameter allows a AWS WAF web ACL to be specified in ARN formation. This supports
AWS WAF V2.
ConnectStartLiveChatLabel:
Type: String
Description: >
Label used in Menu to start connect live chat
Default: "Start Live Chat"
ConnectStartLiveChatIcon:
Type: String
Description: >
Icon to use in menu to start connect live chat
Default: "people_alt"
ConnectEndLiveChatLabel:
Type: String
Description: >
Label to use in menu and toolbar to end connect live chat
Default: "End Live Chat"
ConnectEndLiveChatIcon:
Type: String
Description: >
Icon to use in menu and toolbar to end connect live chat
Default: "call_end"
ConnectTranscriptMessageDelayInMsec:
Type: Number
Description: >
Delay to insert between each transcript message send to Connect in msec.
Default: 150
Rules:
ValidateEitherV1orV2:
RuleCondition: !Not
- !Equals
- !Ref BotName
- ''
Assertions:
- Assert: !Equals
- !Ref LexV2BotId
- ''
AssertDescription: 'Template cannot contain both Lex V1 and Lex V2 information'
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: Deployment Parameters
Parameters:
- CodeBuildName
- CodePipelineName
- CodeCommitRepoName
- CleanupBuckets
- BootstrapBucket
- BootstrapPrefix
- Label:
default: Lex V1 Bot Configuration Parameters
Parameters:
- BotName
- BotAlias
- Label:
default: Lex V2 Bot Configuration Parameters
Parameters:
- LexV2BotId
- LexV2BotAliasId
- LexV2BotLocaleId
- Label:
default: Optional Sample Bot
Parameters:
- BotNamePrefix
- ShouldDeleteBot
- Label:
default: Cognito Parameters
Parameters:
- CognitoIdentityPoolId
- CognitoIdentityPoolName
- Label:
default: Web Application Parameters
Parameters:
- WebAppParentOrigin
- WebAppPath
- WebAppConfNegativeFeedback
- WebAppConfPositiveFeedback
- WebAppConfHelp
- WebAppConfCname
- WebAppAcmCertificateArn
- WebAppWafAclArn
- Label:
default: Connect Live Chat Parameters
Parameters:
- ShouldEnableLiveChat
- ConnectLiveChatTerms
- ConnectInstanceId
- ConnectContactFlowId
- ConnectPromptForNameMessage
- ConnectWaitForAgentMessage
- ConnectWaitForAgentMessageIntervalInSeconds
- ConnectAgentJoinedMessage
- ConnectAgentLeftMessage
- ConnectChatEndedMessage
- ConnectAttachChatTranscript
- ConnectStartLiveChatLabel
- ConnectStartLiveChatIcon
- ConnectEndLiveChatLabel
- ConnectEndLiveChatIcon
Conditions:
IsLexV2: !Not [ !Equals [!Ref LexV2BotId, ''] ]
NeedsBot: !And [ !Equals [!Ref BotName, ''], !Equals [!Ref LexV2BotId, ''] ]
NeedsCognito: !Equals [!Ref CognitoIdentityPoolId, '']
NeedsParentOrigin: !Equals [!Ref WebAppParentOrigin, '']
Resources:
Bot:
Type: AWS::CloudFormation::Stack
Condition: NeedsBot
Properties:
TimeoutInMinutes: 15
TemplateURL: !Sub "https://${BootstrapBucket}.s3.${AWS::Region}.amazonaws.com/${BootstrapPrefix}/templates/lexbot.yaml"
Parameters:
NamePrefix: !Ref BotNamePrefix
ShouldDeleteBot: !Ref ShouldDeleteBot
CustomResourceCodeBucket: !Ref BootstrapBucket
CustomResourceCodeObject: !Sub "${BootstrapPrefix}/custom-resources-v0.21.1.zip"
CognitoIdentityPool:
Type: AWS::CloudFormation::Stack
Condition: NeedsCognito
Properties:
TemplateURL: !Sub "https://${BootstrapBucket}.s3.${AWS::Region}.amazonaws.com/${BootstrapPrefix}/templates/cognito.yaml"
Parameters:
CognitoIdentityPoolName: !Ref CognitoIdentityPoolName
LexBotName:
!If
- NeedsBot
- !GetAtt Bot.Outputs.BotName
- !Ref BotName
LexV2BotId: !Ref LexV2BotId
LexV2BotAliasId: !Ref LexV2BotAliasId
ShouldEnableLiveChat: !Ref ShouldEnableLiveChat
##########################################################################
# deployment using a pipeline
##########################################################################
CodeCommitRepo:
Type: AWS::CloudFormation::Stack
Properties:
TimeoutInMinutes: 15
TemplateURL: !Sub "https://${BootstrapBucket}.s3.${AWS::Region}.amazonaws.com/${BootstrapPrefix}/templates/coderepo.yaml"
Parameters:
BotName:
!If
- NeedsBot
- !GetAtt Bot.Outputs.BotName
- !Ref BotName
BotAlias: !Ref BotAlias
LexV2BotId: !Ref LexV2BotId
LexV2BotAliasId: !Ref LexV2BotAliasId
LexV2BotLocaleId: !Ref LexV2BotLocaleId
CodeBuildName: !Sub "${CodeCommitRepoName}-init"
CodeCommitRepoName: !Ref CodeCommitRepoName
CognitoIdentityPoolId:
!If
- NeedsCognito
- !GetAtt CognitoIdentityPool.Outputs.CognitoIdentityPoolId
- !Ref CognitoIdentityPoolId
SourceBucket: !Ref BootstrapBucket
SourceObject: !Sub "${BootstrapPrefix}/src-v0.21.1.zip"
CustomResourceCodeObject: !Sub "${BootstrapPrefix}/custom-resources-v0.21.1.zip"
Pipeline:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: !Sub "https://${BootstrapBucket}.s3.${AWS::Region}.amazonaws.com/${BootstrapPrefix}/templates/pipeline.yaml"
Parameters:
ResourcePrefix: !Ref "AWS::StackName"
BotName:
#!If
# - IsLexV2
# - !Ref LexV2BotId
!If
- NeedsBot
- !GetAtt Bot.Outputs.BotName
- !Ref BotName
BotAlias: !Ref BotAlias
LexV2BotId: !Ref LexV2BotId
LexV2BotAliasId: !Ref LexV2BotAliasId
LexV2BotLocaleId: !Ref LexV2BotLocaleId
CodePipelineName: !Ref CodePipelineName
CodeCommitRepoName: !GetAtt CodeCommitRepo.Outputs.CodeCommitRepoName
CodeBuildName: !Ref CodeBuildName
CognitoIdentityPoolId:
!If
- NeedsCognito
- !GetAtt CognitoIdentityPool.Outputs.CognitoIdentityPoolId
- !Ref CognitoIdentityPoolId
ParentOrigin: !Ref WebAppParentOrigin
CustomResourceCodeBucket: !Ref BootstrapBucket
CustomResourceCodePrefix: !Ref BootstrapPrefix
CustomResourceCodeObject: !Sub "${BootstrapPrefix}/custom-resources-v0.21.1.zip"
InitiateChatLambdaCodeObject: !Sub "${BootstrapPrefix}/initiate-chat-lambda-v0.21.1.zip"
CleanupBuckets: !Ref CleanupBuckets
CognitoAppUserPoolClientId:
!If
- NeedsCognito
- !GetAtt CognitoIdentityPool.Outputs.CognitoUserPoolClientId
- ''
CognitoUserPoolId:
!If
- NeedsCognito
- !GetAtt CognitoIdentityPool.Outputs.CognitoUserPoolId
- ''
WebAppConfNegativeFeedback: !Ref WebAppConfNegativeFeedback
WebAppConfPositiveFeedback: !Ref WebAppConfPositiveFeedback
WebAppConfHelp: !Ref WebAppConfHelp
WebAppConfCname: !Ref WebAppConfCname
WebAppAcmCertificateArn: !Ref WebAppAcmCertificateArn
WebAppWafAclArn: !Ref WebAppWafAclArn
HideButtonMessageBubble: !Ref HideButtonMessageBubble
ShouldEnableLiveChat: !Ref ShouldEnableLiveChat
ConnectContactFlowId: !Ref ConnectContactFlowId
ConnectInstanceId: !Ref ConnectInstanceId
ConnectPromptForNameMessage: !Ref ConnectPromptForNameMessage
ConnectWaitForAgentMessage: !Ref ConnectWaitForAgentMessage
ConnectWaitForAgentMessageIntervalInSeconds: !Ref ConnectWaitForAgentMessageIntervalInSeconds
ConnectAgentJoinedMessage: !Ref ConnectAgentJoinedMessage
ConnectAgentLeftMessage: !Ref ConnectAgentLeftMessage
ConnectChatEndedMessage: !Ref ConnectChatEndedMessage
ConnectAttachChatTranscript: !Ref ConnectAttachChatTranscript
ConnectLiveChatTerms: !Ref ConnectLiveChatTerms
ConnectStartLiveChatLabel: !Ref ConnectStartLiveChatLabel
ConnectStartLiveChatIcon: !Ref ConnectStartLiveChatIcon
ConnectEndLiveChatLabel: !Ref ConnectEndLiveChatLabel
ConnectEndLiveChatIcon: !Ref ConnectEndLiveChatIcon
ConnectTranscriptMessageDelayInMsec: !Ref ConnectTranscriptMessageDelayInMsec
CognitoIdentityPoolConfig:
Type: AWS::CloudFormation::Stack
Condition: NeedsCognito
Properties:
TemplateURL: !Sub "https://${BootstrapBucket}.s3.${AWS::Region}.amazonaws.com/${BootstrapPrefix}/templates/cognitouserpoolconfig.yaml"
Parameters:
CloudFrontUrl: !GetAtt Pipeline.Outputs.WebAppBase
WebAppUrl: !Ref WebAppParentOrigin
WebAppPath: !Ref WebAppPath
CodeBuildProjectName: !Ref CodeBuildName
CognitoUserPool: !GetAtt CognitoIdentityPool.Outputs.CognitoUserPoolId
CognitoUserPoolClient: !GetAtt CognitoIdentityPool.Outputs.CognitoUserPoolClientId
Timestamp: 1711726114
Outputs:
BotName:
Condition: NeedsBot
Description: >
Name of the Lex bot created by the stack
Value: !GetAtt Bot.Outputs.BotName
CodeCommitRepoUrl:
Description: CodeCommit repository clone URL
Value: !GetAtt CodeCommitRepo.Outputs.CodeCommitRepoUrl
PipelineUrl:
Description: >
Monitor the pipeline URL to see when the application has been fully
built and deployed.
Value: !Sub "https://console.aws.amazon.com/codepipeline/home?region=${AWS::Region}#/view/${Pipeline.Outputs.PipelineName}"
WebAppUrl:
Description: >
URL of the stand-alone sample web application.
This page will be available after the pipeline/deployment completes.
Value: !GetAtt Pipeline.Outputs.WebAppUrl
ParentPageUrl:
Condition: NeedsParentOrigin
Description: >
URL of the iframe based sample web application
This page will be available after the pipeline/deployment completes.
Value: !GetAtt Pipeline.Outputs.ParentPageUrl
LoaderScriptUrl:
Description: >
URL of the loader script
This script will be available after the pipeline/deployment completes.
Value: !GetAtt Pipeline.Outputs.LoaderScriptUrl
SnippetUrl:
Description: >
URL of a page showing the snippet to load the chatbot UI as
an iframe
Value: !GetAtt Pipeline.Outputs.SnippetUrl
CognitoIdentityPoolId:
Condition: NeedsCognito
Description: Cognito Identity Pool Id
Value: !GetAtt CognitoIdentityPool.Outputs.CognitoIdentityPoolId