-
Notifications
You must be signed in to change notification settings - Fork 162
/
Copy pathS3 Upload Workflow - C4.puml
65 lines (54 loc) · 2.58 KB
/
S3 Upload Workflow - C4.puml
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
@startuml C4
title Amazon S3 video upload workflow
' Uncomment the line below for "dark mode" styling
'!$AWS_DARK = true
!include <C4/C4_Container>
!define AWSPuml https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/v18.0/dist
!include AWSPuml/AWSCommon.puml
!include AWSPuml/AWSC4Integration.puml
' hide the tags render via stereotype
hide stereotype
left to right direction
UpdateBoundaryStyle($bgColor=$AWS_BG_COLOR, $fontColor=$AWS_FG_COLOR, $borderColor=$AWS_COLOR_GRAY)
UpdateElementStyle("container", $AWS_BG_COLOR, $AWS_FG_COLOR, $AWS_FG_COLOR)
UpdateElementStyle("person", $AWS_BG_COLOR, $AWS_FG_COLOR, $AWS_FG_COLOR)
' Experimental tag based Element formatting
!procedure $AWSC4AddElementTag($category, $icon)
!$tagborder = $AWSColor($category)
!if %variable_exists("$AWS_DARK") && ($AWS_DARK == true) && ($category == "General")
!$tagimgext = '_Dark.png'
!$tagborder = $AWS_FG_COLOR
!else
!$tagimgext = '.png'
!endif
!$tagimg = 'img:' + AWSPuml + '/' + $category + '/' + $icon + $tagimgext
AddElementTag("$icon", $fontColor=$AWS_FG_COLOR, $borderColor=$tagborder, $bgColor=$AWS_BG_COLOR, $sprite=$tagimg{scale=0.5}, $legendSprite=$tagimg{scale=0.25})
!endprocedure
$AWSC4AddElementTag("General", "User")
$AWSC4AddElementTag("Storage", "SimpleStorageServiceBucket")
$AWSC4AddElementTag("Compute", "LambdaLambdaFunction")
$AWSC4AddElementTag("ApplicationIntegration", "StepFunctions")
$AWSC4AddElementTag("MediaServices", "ElementalMediaConvert")
$AWSC4AddElementTag("MachineLearning", "Transcribe")
Person(user, "User", $tags="User")
System_Boundary(softwareSystem, "Video Transcription Service") {
Container(s3bucket, "Amazon S3 bucket", $tags="SimpleStorageServiceBucket")
Container(objectcreated, "ObjectCreated event handler", $tags="LambdaLambdaFunction")
Container(stepfunction, "transcribe workflow", $tags="StepFunctions")
Container(extractaudio, "extract audio", $tags="LambdaLambdaFunction")
Container(transcribeaudio, "transcribe audio", $tags="LambdaLambdaFunction")
Container(mediaconvert, "AWS Elemental MediaConvert", $tags="ElementalMediaConvert")
Container(transcribe, "Amazon Transcribe", $tags="Transcribe")
Rel(s3bucket, objectcreated, "ObjectCreated event")
Rel(objectcreated, stepfunction, "start")
Rel(stepfunction, extractaudio, "step 1")
Rel(extractaudio, mediaconvert, "start job")
Rel(mediaconvert, s3bucket, "save audio")
Rel(stepfunction, transcribeaudio, "step 2")
Rel(transcribeaudio, transcribe, "start transcription job")
Rel(transcribe, s3bucket, "save transcription")
}
Rel(user, s3bucket, "Uploads")
SHOW_LEGEND(false)
C4VersionDetails()
@enduml