template.yaml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. AWSTemplateFormatVersion: "2010-09-09"
  2. Transform: AWS::Serverless-2016-10-31
  3. Description: Amazon S3 Find and Forget (uksb-1q2j8beb0) (version:v0.53)
  4. Parameters:
  5. AccessControlAllowOriginOverride:
  6. Description: Overrides the default Allow-Control-Allow-Origin setting for the API and Reports Bucket. When "false" the only origin allowed is the Web UI url. This must be set to "*" if no restriction is required.
  7. Type: String
  8. Default: "false"
  9. AccessLogsBucket:
  10. Description: Optional S3 Bucket to send access logs for the Web UI to. Incurs additional cost. Leave blank to disable
  11. Type: String
  12. Default: ""
  13. AdminEmail:
  14. Description: Creates a username to be used for authentication. It needs to be an e-mail address.
  15. Type: String
  16. AllowedPattern: ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$
  17. AthenaConcurrencyLimit:
  18. Description: How many Athena queries should be scheduled concurrently
  19. Type: Number
  20. Default: 20
  21. AthenaQueryMaxRetries:
  22. Description: Max number of retries to each Athena query after a failure
  23. Type: Number
  24. Default: 2
  25. MinValue: 0
  26. AthenaWorkGroup:
  27. Description: WorkGroup to use for Athena queries
  28. Type: String
  29. Default: primary
  30. AuthMethod:
  31. Description: Authentication method to use for the API (and WebUI if deployed).
  32. Type: String
  33. Default: "Cognito"
  34. AllowedValues:
  35. - "Cognito"
  36. - "IAM"
  37. CreateCloudFrontDistribution:
  38. Description: Creates a CloudFront distribution for accessing the web interface of the solution. This must be enabled if S3 Block Public Access is enabled at an account level.
  39. Type: String
  40. Default: "true"
  41. AllowedValues:
  42. - "true"
  43. - "false"
  44. DeletionTaskCPU:
  45. Description: The CPU to be allocated to the Deletion Fargate Task
  46. Type: String
  47. Default: '4096'
  48. DeletionTasksMaxNumber:
  49. Description: The maximum number of tasks to allocate for the Deletion Fargate job
  50. Type: Number
  51. Default: 3
  52. MinValue: 1
  53. DeletionTaskMemory:
  54. Description: The memory to be allocated to the Deletion Fargate Task
  55. Type: String
  56. Default: '30720'
  57. DeployVpc:
  58. Description: Deploy a new dedicated VPC for this solution. To use an existing VPC, set this to "false" and provide values for the VpcSecurityGroups and VpcSubnets parameters.
  59. Type: String
  60. Default: "true"
  61. AllowedValues:
  62. - "true"
  63. - "false"
  64. DeployWebUI:
  65. Description: Specify whether you would like a Web User Interface deployed. (AuthMethod must be Cognito if WebUI is deployed).
  66. Type: String
  67. Default: "true"
  68. AllowedValues:
  69. - "true"
  70. - "false"
  71. EnableAPIAccessLogging:
  72. Description: Whether to enable API Gateway access logging. Enabling access logging will incur additional CloudWatch Logs charges
  73. Type: String
  74. Default: "false"
  75. AllowedValues:
  76. - "true"
  77. - "false"
  78. CognitoAdvancedSecurity:
  79. Description: The type of Cognito advanced security to enable. Disabled by default.
  80. Type: String
  81. Default: "OFF"
  82. AllowedValues:
  83. - "OFF"
  84. - "AUDIT"
  85. - "ENFORCED"
  86. EnableContainerInsights:
  87. Description: Enable ECS Container Insights
  88. Type: String
  89. Default: "false"
  90. AllowedValues:
  91. - "true"
  92. - "false"
  93. EnableDynamoDBBackups:
  94. Description: Whether to enable point in time recovery for the DynamoDB tables
  95. Type: String
  96. Default: "false"
  97. AllowedValues:
  98. - "true"
  99. - "false"
  100. FlowLogsGroup:
  101. Description: Optional CloudWatch Logs group to send VPC flow logs to. Flow Logs incur additional cost. Set to "" to disable. This parameter is ignored if the DeployVpc parameter is set to "false".
  102. Type: String
  103. Default: ""
  104. FlowLogsRoleArn:
  105. Description: Optional IAM role to use to send Flow Logs to CloudWatch. Flow Logs incur additional cost. Set to "" to disable. This parameter is ignored if the DeployVpc parameter is set to "false".
  106. Type: String
  107. Default: ""
  108. ForgetQueueWaitSeconds:
  109. Description: Wait interval for checking Forget progress
  110. Type: Number
  111. Default: 30
  112. JobDetailsRetentionDays:
  113. Description: How log to retain Job Record logs. Use 0 for indefinite. Default is 0
  114. Type: Number
  115. Default: 0
  116. KMSKeyArns:
  117. Description: Comma-delimited list of KMS Key Arns used for client-side Hash. Leave empty if data is not client-side encrypted with KMS
  118. Type: String
  119. Default: ""
  120. PreBuiltArtefactsBucketOverride:
  121. Description: Overrides the default Bucket containing Front-end and Back-end pre-built artefacts. When false, the default is used for the given region (for example solution-builders-us-west-1)
  122. Type: String
  123. Default: "false"
  124. QueryExecutionWaitSeconds:
  125. Description: Wait interval for checking if a query has completed
  126. Type: Number
  127. Default: 3
  128. QueryQueueWaitSeconds:
  129. Description: Wait interval for checking Find progress
  130. Type: Number
  131. Default: 3
  132. ResourcePrefix:
  133. Description: The prefix used for uniquely named resources, such as State Machines, etc.
  134. Type: String
  135. Default: S3F2
  136. AllowedPattern: ^[a-zA-Z0-9]*$
  137. RetainDynamoDBTables:
  138. Description: Whether to retain the DynamoDB tables upon Stack Update and Stack Deletion
  139. Type: String
  140. Default: "true"
  141. AllowedValues:
  142. - "true"
  143. - "false"
  144. VpcSecurityGroups:
  145. Description: Comma-delimited list of security groups to apply to Fargate tasks. This parameter must be set if the DeployVpc parameter is "false", otherwise it is ignored.
  146. Type: CommaDelimitedList
  147. Default: ""
  148. VpcSubnets:
  149. Description: Comma-delimited list of subnets to deploy Fargate tasks in. This parameter must be set if the DeployVpc parameter is "false", otherwise it is ignored.
  150. Type: CommaDelimitedList
  151. Default: ""
  152. Rules:
  153. ValidateAuth:
  154. RuleCondition: !Equals [!Ref DeployWebUI, "true"]
  155. Assertions:
  156. - AssertDescription: IAM Auth cannot be chosen when deploying the WebUI.
  157. Assert: !Equals [!Ref AuthMethod, "Cognito"]
  158. ValidateRegion:
  159. RuleCondition: !Not
  160. - !Contains
  161. - - ap-northeast-1
  162. - ap-northeast-2
  163. - ap-south-1
  164. - ap-southeast-1
  165. - ap-southeast-2
  166. - ca-central-1
  167. - eu-central-1
  168. - eu-north-1
  169. - eu-west-1
  170. - eu-west-2
  171. - eu-west-3
  172. - me-south-1
  173. - sa-east-1
  174. - us-east-1
  175. - us-east-2
  176. - us-gov-west-1
  177. - us-west-1
  178. - us-west-2
  179. - !Ref AWS::Region
  180. Assertions:
  181. - AssertDescription: Cognito is not supported in this region please select IAM authentication.
  182. Assert: !Not [!Equals [!Ref AuthMethod, "Cognito"]]
  183. Conditions:
  184. DefaultPreBuiltArtefactsBucket: !Equals [!Ref PreBuiltArtefactsBucketOverride, "false"]
  185. ShouldDeployVpc: !Equals [!Ref DeployVpc, "true"]
  186. ShouldDeployWebUI: !Equals [!Ref DeployWebUI, "true"]
  187. ShouldDeployCognito: !Equals [!Ref AuthMethod, "Cognito"]
  188. Mappings:
  189. Solution:
  190. Constants:
  191. Version: 'v0.53'
  192. Resources:
  193. TempBucket:
  194. Type: AWS::S3::Bucket
  195. Properties:
  196. VersioningConfiguration:
  197. Status: Enabled
  198. BucketEncryption:
  199. ServerSideEncryptionConfiguration:
  200. - ServerSideEncryptionByDefault:
  201. SSEAlgorithm: AES256
  202. LifecycleConfiguration:
  203. Rules:
  204. - Id: ExpireContents
  205. Status: Enabled
  206. ExpirationInDays: 1
  207. NoncurrentVersionExpirationInDays: 1
  208. TempBucketPolicy:
  209. Type: AWS::S3::BucketPolicy
  210. Properties:
  211. Bucket: !Ref TempBucket
  212. PolicyDocument:
  213. Statement:
  214. - Sid: HttpsOnly
  215. Action: '*'
  216. Effect: Deny
  217. Resource:
  218. - !Sub arn:${AWS::Partition}:s3:::${TempBucket}
  219. - !Sub arn:${AWS::Partition}:s3:::${TempBucket}/*
  220. Principal: '*'
  221. Condition:
  222. Bool:
  223. 'aws:SecureTransport': 'false'
  224. ConfigParameter:
  225. Type: AWS::SSM::Parameter
  226. Properties:
  227. Name: !Sub /s3f2/${ResourcePrefix}-Configuration
  228. Type: String
  229. Value: !Sub |
  230. {
  231. "AthenaConcurrencyLimit": ${AthenaConcurrencyLimit},
  232. "AthenaQueryMaxRetries": ${AthenaQueryMaxRetries},
  233. "DeletionTasksMaxNumber": ${DeletionTasksMaxNumber},
  234. "JobDetailsRetentionDays": ${JobDetailsRetentionDays},
  235. "QueryExecutionWaitSeconds": ${QueryExecutionWaitSeconds},
  236. "QueryQueueWaitSeconds": ${QueryQueueWaitSeconds},
  237. "ForgetQueueWaitSeconds": ${ForgetQueueWaitSeconds}
  238. }
  239. Description: SSM Parameter for S3F2 configuration.
  240. CognitoUserPoolUser:
  241. Type: AWS::Cognito::UserPoolUser
  242. Condition: ShouldDeployCognito
  243. DependsOn:
  244. - APIStack
  245. - DDBStack
  246. - DelStack
  247. - DeployStack
  248. - LayersStack
  249. - StateMachineStack
  250. - StreamProcessorStack
  251. - WebUIStack
  252. Properties:
  253. Username: !Ref AdminEmail
  254. UserPoolId: !GetAtt AuthStack.Outputs.CognitoUserPoolId
  255. DesiredDeliveryMediums:
  256. - EMAIL
  257. UserAttributes:
  258. - Name: email
  259. Value: !Ref AdminEmail
  260. - Name: email_verified
  261. Value: "true"
  262. APIStack:
  263. Type: AWS::CloudFormation::Stack
  264. Properties:
  265. TemplateURL: ./api.yaml
  266. Parameters:
  267. AccessControlAllowOriginOverride: !Ref AccessControlAllowOriginOverride
  268. ConfigParameter: !Ref ConfigParameter
  269. CognitoUserPoolArn: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolArn, "none"]
  270. CommonLayers: !Join
  271. - ","
  272. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  273. - !GetAtt LayersStack.Outputs.Decorators
  274. - !GetAtt LayersStack.Outputs.BotoUtils
  275. DeletionQueueTableName: !GetAtt DDBStack.Outputs.DeletionQueueTable
  276. DataMapperTableName: !GetAtt DDBStack.Outputs.DataMapperTable
  277. EnableAccessLogging: !Ref EnableAPIAccessLogging
  278. JobTableDateGSI: !GetAtt DDBStack.Outputs.JobTableDateGSI
  279. JobTableName: !GetAtt DDBStack.Outputs.JobTable
  280. WebUIOrigin: !If [ShouldDeployWebUI, !GetAtt WebUIStack.Outputs.Origin, "none"]
  281. DeployCognito: !If [ShouldDeployCognito, "true", "false"]
  282. AuthStack:
  283. Type: AWS::CloudFormation::Stack
  284. Condition: ShouldDeployCognito
  285. Properties:
  286. TemplateURL: ./auth.yaml
  287. Parameters:
  288. CognitoAdvancedSecurity: !Ref CognitoAdvancedSecurity
  289. ResourcePrefix: !Ref ResourcePrefix
  290. DDBStack:
  291. Type: AWS::CloudFormation::Stack
  292. Properties:
  293. TemplateURL: ./ddb.yaml
  294. Parameters:
  295. EnableBackups: !Ref EnableDynamoDBBackups
  296. RetainTables: !Ref RetainDynamoDBTables
  297. DelStack:
  298. Type: AWS::CloudFormation::Stack
  299. Properties:
  300. TemplateURL: ./deletion_flow.yaml
  301. Parameters:
  302. CommonLayers: !Join
  303. - ","
  304. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  305. - !GetAtt LayersStack.Outputs.BotoUtils
  306. - !GetAtt LayersStack.Outputs.CustomResourceHelper
  307. - !GetAtt LayersStack.Outputs.Decorators
  308. DeletionTaskCPU: !Ref DeletionTaskCPU
  309. DeletionTaskMemory: !Ref DeletionTaskMemory
  310. EnableContainerInsights: !Ref EnableContainerInsights
  311. JobTableName: !GetAtt DDBStack.Outputs.JobTable
  312. KMSKeyArns: !Ref KMSKeyArns
  313. ManifestsBucket: !GetAtt ManifestsStack.Outputs.ManifestsBucket
  314. ResourcePrefix: !Ref ResourcePrefix
  315. VpcSecurityGroups: !If [ShouldDeployVpc, !GetAtt VpcStack.Outputs.SecurityGroup, !Join [",", !Ref VpcSecurityGroups]]
  316. VpcSubnets: !If [ShouldDeployVpc, !GetAtt VpcStack.Outputs.Subnets, !Join [",", !Ref VpcSubnets]]
  317. DeployStack:
  318. Type: AWS::CloudFormation::Stack
  319. Properties:
  320. TemplateURL: ./deployment_helper.yaml
  321. Parameters:
  322. ApiUrl: !GetAtt APIStack.Outputs.ApiUrl
  323. AthenaExecutionRole: !GetAtt StateMachineStack.Outputs.AthenaExecutionRole
  324. CloudFrontDistribution: !If [ShouldDeployWebUI, !GetAtt WebUIStack.Outputs.CloudFrontDistribution, "none"]
  325. CodeBuildArtefactBucket: !Ref TempBucket
  326. CognitoIdentityPoolId: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoIdentityPoolId, "none"]
  327. CognitoUserPoolId: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolId, "none"]
  328. CognitoUserPoolClientId: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolClientId, "none"]
  329. CommonLayers: !Join
  330. - ","
  331. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  332. - !GetAtt LayersStack.Outputs.BotoUtils
  333. - !GetAtt LayersStack.Outputs.CustomResourceHelper
  334. - !GetAtt LayersStack.Outputs.Decorators
  335. DeployWebUI: !Ref DeployWebUI
  336. DeployCognito: !If [ShouldDeployCognito, "true", "false"]
  337. ECRRepository: !GetAtt DelStack.Outputs.ECRRepository
  338. PreBuiltArtefactsBucket: !If [DefaultPreBuiltArtefactsBucket, !Sub "solution-builders-${AWS::Region}", !Ref PreBuiltArtefactsBucketOverride]
  339. ResourcePrefix: !Ref ResourcePrefix
  340. Version: !FindInMap [Solution, Constants, Version]
  341. WebUIBucket: !GetAtt WebUIStack.Outputs.WebUIBucket
  342. LayersStack:
  343. Type: AWS::CloudFormation::Stack
  344. Properties:
  345. TemplateURL: ./layers.yaml
  346. ManifestsStack:
  347. Type: AWS::CloudFormation::Stack
  348. Properties:
  349. TemplateURL: ./manifests.yaml
  350. Parameters:
  351. JobDetailsRetentionDays: !Ref JobDetailsRetentionDays
  352. StateMachineStack:
  353. Type: AWS::CloudFormation::Stack
  354. Properties:
  355. TemplateURL: ./state_machine.yaml
  356. Parameters:
  357. AthenaWorkGroup: !Ref AthenaWorkGroup
  358. CommonLayers: !Join
  359. - ","
  360. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  361. - !GetAtt LayersStack.Outputs.Decorators
  362. - !GetAtt LayersStack.Outputs.BotoUtils
  363. DataMapperTableName: !GetAtt DDBStack.Outputs.DataMapperTable
  364. DeleteServiceName: !GetAtt DelStack.Outputs.DeleteServiceName
  365. DeleteQueueUrl: !GetAtt DelStack.Outputs.DeleteObjectsQueueUrl
  366. DeletionQueueTableName: !GetAtt DDBStack.Outputs.DeletionQueueTable
  367. ECSCluster: !GetAtt DelStack.Outputs.ECSCluster
  368. GlueDatabase: !GetAtt ManifestsStack.Outputs.GlueDatabase
  369. JobManifestsGlueTable: !GetAtt ManifestsStack.Outputs.JobManifestsGlueTable
  370. JobTableName: !GetAtt DDBStack.Outputs.JobTable
  371. ManifestsBucket: !GetAtt ManifestsStack.Outputs.ManifestsBucket
  372. ResultBucket: !Ref TempBucket
  373. StateMachinePrefix: !Ref ResourcePrefix
  374. StreamProcessorStack:
  375. Type: AWS::CloudFormation::Stack
  376. Properties:
  377. TemplateURL: ./stream_processor.yaml
  378. Parameters:
  379. CommonLayers: !Join
  380. - ","
  381. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  382. - !GetAtt LayersStack.Outputs.Decorators
  383. - !GetAtt LayersStack.Outputs.BotoUtils
  384. DeletionQueueTableName: !GetAtt DDBStack.Outputs.DeletionQueueTable
  385. GlueDatabase: !GetAtt ManifestsStack.Outputs.GlueDatabase
  386. JobManifestsGlueTable: !GetAtt ManifestsStack.Outputs.JobManifestsGlueTable
  387. JobTableDateGSI: !GetAtt DDBStack.Outputs.JobTableDateGSI
  388. JobTableName: !GetAtt DDBStack.Outputs.JobTable
  389. JobTableStreamArn: !GetAtt DDBStack.Outputs.JobTableStreamArn
  390. ManifestsBucket: !GetAtt ManifestsStack.Outputs.ManifestsBucket
  391. StateMachineArn: !GetAtt StateMachineStack.Outputs.StateMachineArn
  392. VpcStack:
  393. Type: AWS::CloudFormation::Stack
  394. Condition: ShouldDeployVpc
  395. Properties:
  396. TemplateURL: ./vpc.yaml
  397. Parameters:
  398. FlowLogsGroup: !Ref FlowLogsGroup
  399. FlowLogsRoleArn: !Ref FlowLogsRoleArn
  400. KMSKeyArns: !Ref KMSKeyArns
  401. CommonLayers: !Join
  402. - ","
  403. - - !GetAtt LayersStack.Outputs.AWSSDKLayer
  404. - !GetAtt LayersStack.Outputs.BotoUtils
  405. - !GetAtt LayersStack.Outputs.CustomResourceHelper
  406. - !GetAtt LayersStack.Outputs.Decorators
  407. WebUIStack:
  408. Type: AWS::CloudFormation::Stack
  409. Properties:
  410. TemplateURL: ./web_ui.yaml
  411. Parameters:
  412. AccessLogsBucket: !Ref AccessLogsBucket
  413. CreateCloudFrontDistribution: !Ref CreateCloudFrontDistribution
  414. DeployWebUI: !Ref DeployWebUI
  415. ResourcePrefix: !Ref ResourcePrefix
  416. Outputs:
  417. APIAccessControlAllowOriginHeader:
  418. Value: !GetAtt APIStack.Outputs.AccessControlAllowOriginHeader
  419. APIStack:
  420. Value: !Ref APIStack
  421. ApiUrl:
  422. Value: !GetAtt APIStack.Outputs.ApiUrl
  423. Export:
  424. Name: !Sub ${ResourcePrefix}-ApiUrl
  425. ApiArn:
  426. Value: !GetAtt APIStack.Outputs.ApiArn
  427. AthenaStateMachineArn:
  428. Value: !GetAtt StateMachineStack.Outputs.AthenaStateMachineArn
  429. AthenaExecutionRoleArn:
  430. Value: !GetAtt StateMachineStack.Outputs.AthenaExecutionRoleArn
  431. AuthMethod:
  432. Value: !Ref AuthMethod
  433. ConfigParameter:
  434. Value: !Ref ConfigParameter
  435. CognitoUserPoolClientId:
  436. Value: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolClientId, "none"]
  437. CognitoUserPoolId:
  438. Value: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolId, "none"]
  439. CognitoUserPoolName:
  440. Value: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.CognitoUserPoolName, "none"]
  441. DataMapperTable:
  442. Value: !GetAtt DDBStack.Outputs.DataMapperTable
  443. DDBStack:
  444. Value: !Ref DDBStack
  445. DeleteTaskRoleArn:
  446. Value: !GetAtt DelStack.Outputs.DeleteTaskRoleArn
  447. DeletionQueueTable:
  448. Value: !GetAtt DDBStack.Outputs.DeletionQueueTable
  449. DeletionQueueTableStreamArn:
  450. Value: !GetAtt DDBStack.Outputs.DeletionQueueTableStreamArn
  451. Export:
  452. Name: !Sub ${ResourcePrefix}-DeletionQueueTableStreamArn
  453. DeletionQueueUrl:
  454. Value: !GetAtt DelStack.Outputs.DeleteObjectsQueueUrl
  455. DeployWebUI:
  456. Value: !Ref DeployWebUI
  457. DLQUrl:
  458. Value: !GetAtt DelStack.Outputs.DLQUrl
  459. ECRRepository:
  460. Value: !GetAtt DelStack.Outputs.ECRRepository
  461. GenerateQueriesRole:
  462. Value: !GetAtt StateMachineStack.Outputs.GenerateQueriesRole
  463. JobTable:
  464. Value: !GetAtt DDBStack.Outputs.JobTable
  465. KMSKeyArns:
  466. Value: !Ref KMSKeyArns
  467. PutDataMapperRole:
  468. Value: !GetAtt APIStack.Outputs.PutDataMapperRole
  469. QueryQueueUrl:
  470. Value: !GetAtt StateMachineStack.Outputs.QueryQueueUrl
  471. SolutionVersion:
  472. Value: !FindInMap [Solution, Constants, Version]
  473. StateMachineArn:
  474. Value: !GetAtt StateMachineStack.Outputs.StateMachineArn
  475. StateMachineRoleArn:
  476. Value: !GetAtt StateMachineStack.Outputs.StateMachineRoleArn
  477. TempBucket:
  478. Value: !Ref TempBucket
  479. WebUIBucket:
  480. Value: !GetAtt WebUIStack.Outputs.WebUIBucket
  481. WebUIRole:
  482. Value: !If [ShouldDeployCognito, !GetAtt AuthStack.Outputs.ServiceInvokeRole, "none"]
  483. WebUIUrl:
  484. Value: !If [ShouldDeployWebUI, !GetAtt WebUIStack.Outputs.Url, "none"]
  485. Metadata:
  486. AWS::CloudFormation::Interface:
  487. ParameterGroups:
  488. - Label:
  489. default: "Required"
  490. Parameters:
  491. - AdminEmail
  492. - DeployWebUI
  493. - AuthMethod
  494. - Label:
  495. default: "Network Configuration"
  496. Parameters:
  497. - DeployVpc
  498. - VpcSecurityGroups
  499. - VpcSubnets
  500. - FlowLogsGroup
  501. - FlowLogsRoleArn
  502. - CreateCloudFrontDistribution
  503. - AccessControlAllowOriginOverride
  504. - Label:
  505. default: "Performance Configuration"
  506. Parameters:
  507. - AthenaConcurrencyLimit
  508. - AthenaQueryMaxRetries
  509. - DeletionTasksMaxNumber
  510. - DeletionTaskCPU
  511. - DeletionTaskMemory
  512. - Label:
  513. default: "Waiter Configuration"
  514. Parameters:
  515. - QueryExecutionWaitSeconds
  516. - QueryQueueWaitSeconds
  517. - ForgetQueueWaitSeconds
  518. - Label:
  519. default: "Auditing, Logging & Monitoring"
  520. Parameters:
  521. - AccessLogsBucket
  522. - CognitoAdvancedSecurity
  523. - EnableAPIAccessLogging
  524. - EnableContainerInsights
  525. - JobDetailsRetentionDays
  526. - Label:
  527. default: "Advanced Configuration"
  528. Parameters:
  529. - EnableDynamoDBBackups
  530. - RetainDynamoDBTables
  531. - AthenaWorkGroup
  532. - PreBuiltArtefactsBucketOverride
  533. - ResourcePrefix
  534. - KMSKeyArns