// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Event Bus creation 1`] = ` { "Conditions": { "IngestionDeployCustomIngestion93AB274A": { "Fn::Equals": [ { "Ref": "DeployCustomIngestion", }, "Yes", ], }, "IngestionDeployRSSFeeds0E648DA1": { "Fn::And": [ { "Fn::Equals": [ { "Ref": "DeployRSSFeeds", }, "Yes", ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "RSSNewsFeedIngestFrequency", }, "", ], }, ], }, ], }, "IngestionDeployRedditIngestionB0819499": { "Fn::And": [ { "Fn::Equals": [ { "Ref": "DeployRedditIngestion", }, "Yes", ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "RedditAPIKey", }, "", ], }, ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "RedditIngestionFrequency", }, "", ], }, ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "SubRedditsToFollow", }, "", ], }, ], }, ], }, "IngestionDeployTwitterIngestion4D7DE3EB": { "Fn::And": [ { "Fn::Equals": [ { "Ref": "DeployTwitter", }, "Yes", ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "TwitterSearchQuery", }, "", ], }, ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "TwitterIngestQueryFrequency", }, "", ], }, ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "TwitterSSMPathForBearerToken", }, "", ], }, ], }, ], }, "IngestionDeployYouTubeCommentsA44A0A50": { "Fn::And": [ { "Fn::Equals": [ { "Ref": "DeployYouTubeCommentsIngestion", }, "Yes", ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "YouTubeSearchIngestionFreq", }, "", ], }, ], }, { "Fn::Not": [ { "Fn::And": [ { "Fn::Equals": [ { "Ref": "YoutubeSearchQuery", }, "", ], }, { "Fn::Equals": [ "", ], }, ], }, ], }, { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "YoutubeAPIKey", }, "", ], }, ], }, ], }, }, "Outputs": { "IngestionS3BucketToUploadData5A8509A2": { "Condition": "IngestionDeployCustomIngestion93AB274A", "Description": "Bucket location to upload source files for ingestion", "Value": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Fn::GetAtt": [ "IngestionS3CustomIngestionNestedStackS3CustomIngestionNestedStackResource0099DFB8", "Outputs.IngestionS3CustomIngestionS3Bucket83268CB3Ref", ], }, ], ], }, }, }, "Parameters": { "AssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2ArtifactHashA64CF354": { "Description": "Artifact hash for asset "01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2"", "Type": "String", }, "AssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3Bucket4324637E": { "Description": "S3 bucket for asset "01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2"", "Type": "String", }, "AssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3VersionKey24346418": { "Description": "S3 key for asset version "01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2"", "Type": "String", }, "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbArtifactHash9D2425C8": { "Description": "Artifact hash for asset "06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edb"", "Type": "String", }, "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbS3Bucket2A43346A": { "Description": "S3 bucket for asset "06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edb"", "Type": "String", }, "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbS3VersionKey39F5EDC8": { "Description": "S3 key for asset version "06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edb"", "Type": "String", }, "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7ArtifactHashFB7D2A6F": { "Description": "Artifact hash for asset "436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7"", "Type": "String", }, "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7S3Bucket75F8E61E": { "Description": "S3 bucket for asset "436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7"", "Type": "String", }, "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7S3VersionKey72BF62C9": { "Description": "S3 key for asset version "436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7"", "Type": "String", }, "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1ArtifactHash46AED68E": { "Description": "Artifact hash for asset "4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1"", "Type": "String", }, "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1S3Bucket564056F1": { "Description": "S3 bucket for asset "4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1"", "Type": "String", }, "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1S3VersionKey5219E30D": { "Description": "S3 key for asset version "4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1"", "Type": "String", }, "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dArtifactHash7383EBC2": { "Description": "Artifact hash for asset "5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7d"", "Type": "String", }, "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dS3Bucket71669C1C": { "Description": "S3 bucket for asset "5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7d"", "Type": "String", }, "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dS3VersionKey127128C3": { "Description": "S3 key for asset version "5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7d"", "Type": "String", }, "AssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808ArtifactHashA07CADFA": { "Description": "Artifact hash for asset "6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808"", "Type": "String", }, "AssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3BucketC57B49C4": { "Description": "S3 bucket for asset "6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808"", "Type": "String", }, "AssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3VersionKeyF67BE92F": { "Description": "S3 key for asset version "6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808"", "Type": "String", }, "AssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaArtifactHash8E6713FC": { "Description": "Artifact hash for asset "9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caa"", "Type": "String", }, "AssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3Bucket476799AF": { "Description": "S3 bucket for asset "9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caa"", "Type": "String", }, "AssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3VersionKey703E74DF": { "Description": "S3 key for asset version "9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caa"", "Type": "String", }, "AssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170ArtifactHash4664670F": { "Description": "Artifact hash for asset "b1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170"", "Type": "String", }, "AssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3BucketCB265544": { "Description": "S3 bucket for asset "b1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170"", "Type": "String", }, "AssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3VersionKeyD1943F32": { "Description": "S3 key for asset version "b1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170"", "Type": "String", }, "AssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eArtifactHash4BD73F7C": { "Description": "Artifact hash for asset "d354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747e"", "Type": "String", }, "AssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3Bucket2BA474C6": { "Description": "S3 bucket for asset "d354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747e"", "Type": "String", }, "AssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3VersionKey8314355F": { "Description": "S3 key for asset version "d354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747e"", "Type": "String", }, "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fArtifactHash8A87D7CB": { "Description": "Artifact hash for asset "dc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20f"", "Type": "String", }, "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fS3BucketB598029C": { "Description": "S3 bucket for asset "dc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20f"", "Type": "String", }, "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fS3VersionKey6B6C48A1": { "Description": "S3 key for asset version "dc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20f"", "Type": "String", }, "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0ArtifactHashADAB5958": { "Description": "Artifact hash for asset "e547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0"", "Type": "String", }, "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0S3Bucket2960C70C": { "Description": "S3 bucket for asset "e547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0"", "Type": "String", }, "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0S3VersionKey000A0907": { "Description": "S3 key for asset version "e547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0"", "Type": "String", }, "Config": { "Default": "{"country":"ALL", "language":"ALL", "topic":"ALL"}", "Description": "Provide configuration for RSS feeds. This parameter should be configured as a JSON string. Here is a sample configuration {"country":"ALL", "language":"ALL", "topic":"ALL"}. For Country and language use ISO code. The list of superset of all supported topics is: "tech", "news", "business", "science", "finance", "food", "politics", "economics", "travel", "entertainment", "music", "sport", "world".Note: not all topics are supported for each RSS provider. Setting the value as "ALL", is treated as a wild character search", "Type": "String", }, "DeployCustomIngestion": { "AllowedValues": [ "Yes", "No", ], "Default": "Yes", "Description": "Required: Would you like to deploy custom data ingestion from an S3 bucket.", "Type": "String", }, "DeployRSSFeeds": { "AllowedValues": [ "Yes", "No", ], "Default": "Yes", "Description": "Would you like to deploy Twitter Ingestion mechanism", "Type": "String", }, "DeployRedditIngestion": { "AllowedValues": [ "Yes", "No", ], "Default": "Yes", "Description": "Required: Would you like to deploy the news feed ingestion mechanism. If you answer yes, Config and RSSNewsFeedIngestFrequency parameters are mandatory", "Type": "String", }, "DeployTwitter": { "AllowedValues": [ "Yes", "No", ], "Default": "Yes", "Description": "Would you like to deploy Twitter Ingestion mechanism", "Type": "String", }, "DeployYouTubeCommentsIngestion": { "AllowedValues": [ "Yes", "No", ], "Default": "Yes", "Description": "Would you like to deploy YouTube comments ingestion mechanism. If you answer yes, YouTubeVideoSearchQuery and YouTubeSearchIngestionFreq parameters are mandatory", "Type": "String", }, "NewsSearchQuery": { "ConstraintDescription": "Please enter the keyword to use to filter RSS news feed", "Description": "Provide comma separated list of keywords (optional) to filter news feeds. Only feeds containing atleast one of the keywords from the list will be processed. If no keyword is provided, feeds will not be filtered and all RSS feeds will be processed", "Type": "String", }, "NumberOfTopics": { "ConstraintDescription": "Please verify if the value entered for number of topics to be discovered is between 1 and 100 (both inclusive).", "Default": "10", "Description": "The number of topics to be discovered by Topic analysis. The min value is 1 and maximum value is 100", "MaxValue": 100, "MinValue": 1, "Type": "Number", }, "RSSNewsFeedIngestFrequency": { "AllowedPattern": "(cron\\(\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))\\))$", "ConstraintDescription": "Please provide a valid cron expression of the format 'cron(0/5 * * * ? *)'. For details on CloudWatch cron expressions, please refer the following link https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Default": "cron(0 23 * * ? *)", "Description": "The frequency at which RSS Feeds should be pulled. For detailed documentation on schedule expression rules, please refer https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Type": "String", }, "RedditAPIKey": { "AllowedPattern": "^$|^(?!\\s*$).+", "ConstraintDescription": "Please provide the SSM key for Reddit API", "Default": "/discovering-hot-topics-using-machine-learning/reddit/comments", "Description": "Required: The SSM parameter key name where the Reddit API credentials detailare stored. For details about how and where to store the API credentials, please refer the implementation guide for this solution", "Type": "String", }, "RedditIngestionFrequency": { "AllowedPattern": "^$|(cron\\(\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))\\))$", "Default": "cron(0/60 * * * ? *)", "Description": "Required: The Polling frequency at which the system should ingest comments from subreddits", "Type": "String", }, "SubRedditsToFollow": { "AllowedPattern": "^$|[^,(?! )]+", "ConstraintDescription": "", "Default": "r/aws,r/MachineLearning", "Description": "Optional: Please provide the list of SubReddits to follow as comma separated list. Alternatively you can also set the list in the DynamoDB table. For details on the DynamoDB configuration, please refer our implementation guide", "Type": "String", }, "SupportedLanguages": { "AllowedPattern": "^$|([a-z]{2}-[a-z]{2}|[a-z]{2})(,([a-z]{2}-[a-z]{2}|[a-z]{2}))*", "ConstraintDescription": "Provide a list of comma separated language iso-code values, Example: de,en,es,it,pt,fr,ja,ko,zh-cn (no spaces after the comma). The input did not match the validation pattern.", "Default": "en,es", "Description": "The list of languages to query the Search API with. The super set of languages supported is driven by Amazon Translate. For the latest list of languages, please refer to the Comprehend documentation at this location https://docs.aws.amazon.com/translate/latest/dg/what-is.html#language-pairs", "MaxLength": 43, "MinLength": 2, "Type": "String", }, "TopicAnalysisFrequency": { "AllowedPattern": "(cron\\(\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))\\))$", "ConstraintDescription": "Please provide a valid cron expression of the format 'cron(10 0 * * ? *)'. For details on CloudWatch cron expressions, please refer the following link https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Default": "cron(10 0 * * ? *)", "Description": "The frequency at which the topic analysis job should run. The minimum is an hour. It is recommened That the job be run a few mins after the hour e.g 10 mins after the hour", "Type": "String", }, "TwitterIngestQueryFrequency": { "AllowedPattern": "(cron\\(\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))\\))$", "ConstraintDescription": "Please provide a valid cron expression of the format 'cron(0/5 * * * ? *)'. For details on CloudWatch cron expressions, please refer the following link https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Default": "cron(0/5 * * * ? *)", "Description": "The frequency at which API calls will be made to twitter in a cron expression format. For detailed documentation on schedule expression rules, please refer https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Type": "String", }, "TwitterSSMPathForBearerToken": { "AllowedPattern": "^(?!\\s*$).+", "ConstraintDescription": "The SSM parameter store path cannot be empty", "Default": "/discovering-hot-topics-using-machine-learning/discovering-hot-topics-using-machine-learning/twitter", "Description": "The SSM parameter store path of key where the credentials are stored as encrypted string", "Type": "String", }, "TwitterSearchQuery": { "Default": "entertainment", "Description": "The query you would like to execute on twitter. For details of how write a query and use operators, please go to https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators", "MaxLength": 500, "MinLength": 3, "Type": "String", }, "YouTubeSearchIngestionFreq": { "AllowedPattern": "^$|(cron\\(\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?(?:,(?:[0-6]?\\d)(?:(?:-|\\/|\\,)(?:[0-6]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W|#)?(?:[1-9]|1[012])?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))\\))$", "ConstraintDescription": "Please provide a valid cron expression of the formation 'cron(0 12 * * ? *)'. For details on CloudWatch cron expressions, please refer the following link https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html", "Default": "cron(0 12 * * ? *)", "Description": "Required: The frequency at which at which YouTube comments should be retrieved", "Type": "String", }, "YoutubeAPIKey": { "AllowedPattern": "^(?!\\s*$).+", "ConstraintDescription": "Please provide the SSM Key for Youtube API", "Default": "/discovering-hot-topics-using-machine-learning/youtube/comments", "Description": "The key name where Youtube API credentails are stored", "Type": "String", }, "YoutubeSearchQuery": { "ConstraintDescription": "Please provide key words for Youtube search query", "Default": "movie trailers", "Description": "Please provide the keywords to search for on Youtube. You can use NOT (-) and OR (|) operators to find videos. Example 'boating|sailing -fishing'. For details refer API documentation on this link https://developers.google.com/youtube/v3/docs/search/list", "MaxLength": 500, "MinLength": 0, "Type": "String", }, }, "Resources": { "AccessLogD598EBE9": { "DeletionPolicy": "Retain", "Properties": { "BucketEncryption": { "ServerSideEncryptionConfiguration": [ { "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256", }, }, ], }, "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "AccessLogPolicy4B3DB856": { "Properties": { "Bucket": { "Ref": "AccessLogD598EBE9", }, "PolicyDocument": { "Statement": [ { "Action": "s3:*", "Condition": { "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": { "AWS": "*", }, "Resource": [ { "Fn::GetAtt": [ "AccessLogD598EBE9", "Arn", ], }, { "Fn::Join": [ "", [ { "Fn::GetAtt": [ "AccessLogD598EBE9", "Arn", ], }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, }, "Type": "AWS::S3::BucketPolicy", }, "IngestionBus3E30EA7C": { "Properties": { "Name": "IngestionBus83B8D656", }, "Type": "AWS::Events::EventBus", }, "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644": { "Properties": { "RetentionPeriodHours": 24, "ShardCount": 1, "StreamEncryption": { "EncryptionType": "KMS", "KeyId": "alias/aws/kinesis", }, "StreamModeDetails": { "StreamMode": "PROVISIONED", }, }, "Type": "AWS::Kinesis::Stream", }, "IngestionFeedConsumerIngestionStreamKinesisStreamGetRecordsIteratorAgeAlarmE6C16601": { "Properties": { "AlarmDescription": "Consumer Record Processing Falling Behind, there is risk for data loss due to record expiration.", "ComparisonOperator": "GreaterThanOrEqualToThreshold", "EvaluationPeriods": 1, "MetricName": "GetRecords.IteratorAgeMilliseconds", "Namespace": "AWS/Kinesis", "Period": 300, "Statistic": "Maximum", "Threshold": 43200, }, "Type": "AWS::CloudWatch::Alarm", }, "IngestionFeedConsumerIngestionStreamKinesisStreamReadProvisionedThroughputExceededAlarm821B53BC": { "Properties": { "AlarmDescription": "Consumer Application is Reading at a Slower Rate Than Expected.", "ComparisonOperator": "GreaterThanThreshold", "EvaluationPeriods": 1, "MetricName": "ReadProvisionedThroughputExceeded", "Namespace": "AWS/Kinesis", "Period": 300, "Statistic": "Average", "Threshold": 0, }, "Type": "AWS::CloudWatch::Alarm", }, "IngestionFeedConsumerIngestionStreamLambdaFunction81C67CF2": { "DependsOn": [ "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRoleDefaultPolicy93536D6D", "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRole9E95397D", ], "Metadata": { "cfn_nag": { "rules_to_suppress": [ { "id": "W58", "reason": "Lambda functions has the required permission to write CloudWatch Logs. It uses custom policy instead of arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole with tighter permissions.", }, { "id": "W89", "reason": "This is not a rule for the general case, just for specific use cases/industries", }, { "id": "W92", "reason": "Impossible for us to define the correct concurrency for clients", }, ], }, }, "Properties": { "Code": { "S3Bucket": { "Ref": "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0S3Bucket2960C70C", }, "S3Key": { "Fn::Join": [ "", [ { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0S3VersionKey000A0907", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParameterse547572e03f5d1f19a3109d245125a15031d70adac1a4b35691db8f25ec23bd0S3VersionKey000A0907", }, ], }, ], }, ], ], }, }, "Environment": { "Variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1", }, }, "Handler": "index.handler", "ReservedConcurrentExecutions": 1, "Role": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRole9E95397D", "Arn", ], }, "Runtime": "nodejs14.x", "Timeout": 300, "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, "IngestionFeedConsumerIngestionStreamLambdaFunctionKinesisEventSourceIngestionFeedConsumerIngestionStreamKinesisStreamD87284BD48D72474": { "Properties": { "BatchSize": 5, "BisectBatchOnFunctionError": true, "DestinationConfig": { "OnFailure": { "Destination": { "Fn::GetAtt": [ "IngestionFeedConsumerSqsDlqQueue3A707A4B", "Arn", ], }, }, }, "EventSourceArn": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "FunctionName": { "Ref": "IngestionFeedConsumerIngestionStreamLambdaFunction81C67CF2", }, "MaximumRecordAgeInSeconds": 86400, "StartingPosition": "TRIM_HORIZON", }, "Type": "AWS::Lambda::EventSourceMapping", }, "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRole9E95397D": { "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Policies": [ { "PolicyDocument": { "Statement": [ { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition", }, ":logs:", { "Ref": "AWS::Region", }, ":", { "Ref": "AWS::AccountId", }, ":log-group:/aws/lambda/*", ], ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "LambdaFunctionServiceRolePolicy", }, ], }, "Type": "AWS::IAM::Role", }, "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRoleDefaultPolicy93536D6D": { "DependsOn": [ "IngestionFeedConsumerSqsDlqQueuePolicyA7D9DB43", "IngestionFeedConsumerSqsDlqQueue3A707A4B", ], "Metadata": { "cfn_nag": { "rules_to_suppress": [ { "id": "W12", "reason": "Lambda needs the following minimum required permissions to send trace data to X-Ray and access ENIs in a VPC.", }, ], }, }, "Properties": { "PolicyDocument": { "Statement": [ { "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, { "Action": [ "kinesis:DescribeStreamSummary", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards", "kinesis:SubscribeToShard", "kinesis:DescribeStream", "kinesis:ListStreams", ], "Effect": "Allow", "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, }, { "Action": [ "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:GetQueueUrl", ], "Effect": "Allow", "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerSqsDlqQueue3A707A4B", "Arn", ], }, }, { "Action": "kinesis:DescribeStream", "Effect": "Allow", "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRoleDefaultPolicy93536D6D", "Roles": [ { "Ref": "IngestionFeedConsumerIngestionStreamLambdaFunctionServiceRole9E95397D", }, ], }, "Type": "AWS::IAM::Policy", }, "IngestionFeedConsumerIngestionStreamSqsDlqQueue7CAEF3A7": { "DeletionPolicy": "Delete", "Properties": { "KmsMasterKeyId": "alias/aws/sqs", }, "Type": "AWS::SQS::Queue", "UpdateReplacePolicy": "Delete", }, "IngestionFeedConsumerIngestionStreamSqsDlqQueuePolicy74C5C73B": { "Properties": { "PolicyDocument": { "Statement": [ { "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:RemovePermission", "sqs:AddPermission", "sqs:SetQueueAttributes", ], "Effect": "Allow", "Principal": { "AWS": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition", }, ":iam::", { "Ref": "AWS::AccountId", }, ":root", ], ], }, }, "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamSqsDlqQueue7CAEF3A7", "Arn", ], }, "Sid": "QueueOwnerOnlyAccess", }, { "Action": "SQS:*", "Condition": { "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": { "AWS": "*", }, "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamSqsDlqQueue7CAEF3A7", "Arn", ], }, "Sid": "HttpsOnly", }, ], "Version": "2012-10-17", }, "Queues": [ { "Ref": "IngestionFeedConsumerIngestionStreamSqsDlqQueue7CAEF3A7", }, ], }, "Type": "AWS::SQS::QueuePolicy", }, "IngestionFeedConsumerSqsDlqQueue3A707A4B": { "DeletionPolicy": "Delete", "Properties": { "KmsMasterKeyId": "alias/aws/sqs", }, "Type": "AWS::SQS::Queue", "UpdateReplacePolicy": "Delete", }, "IngestionFeedConsumerSqsDlqQueuePolicyA7D9DB43": { "Properties": { "PolicyDocument": { "Statement": [ { "Action": [ "sqs:DeleteMessage", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:RemovePermission", "sqs:AddPermission", "sqs:SetQueueAttributes", ], "Effect": "Allow", "Principal": { "AWS": { "Fn::Join": [ "", [ "arn:", { "Ref": "AWS::Partition", }, ":iam::", { "Ref": "AWS::AccountId", }, ":root", ], ], }, }, "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerSqsDlqQueue3A707A4B", "Arn", ], }, "Sid": "QueueOwnerOnlyAccess", }, { "Action": "SQS:*", "Condition": { "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": { "AWS": "*", }, "Resource": { "Fn::GetAtt": [ "IngestionFeedConsumerSqsDlqQueue3A707A4B", "Arn", ], }, "Sid": "HttpsOnly", }, ], "Version": "2012-10-17", }, "Queues": [ { "Ref": "IngestionFeedConsumerSqsDlqQueue3A707A4B", }, ], }, "Type": "AWS::SQS::QueuePolicy", }, "IngestionNewsCatcherNestedStackNewsCatcherNestedStackResourceD666324A": { "Condition": "IngestionDeployRSSFeeds0E648DA1", "DeletionPolicy": "Delete", "Metadata": { "nestedStackFileName": "IngestionNewsCatcher50494FBF.nested.template", }, "Properties": { "Parameters": { "Config": { "Ref": "Config", }, "EventBus": { "Fn::GetAtt": [ "IngestionBus3E30EA7C", "Arn", ], }, "IngestFrequency": { "Ref": "RSSNewsFeedIngestFrequency", }, "NewsSearchQuery": { "Ref": "NewsSearchQuery", }, "StreamARN": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "referencetoAssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3BucketC57B49C4Ref": { "Ref": "AssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3BucketC57B49C4", }, "referencetoAssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3VersionKeyF67BE92FRef": { "Ref": "AssetParameters6291bdd4e5399214bc31cbbead075a622572d230190c64b1244568482037a808S3VersionKeyF67BE92F", }, }, "TemplateURL": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Ref": "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbS3Bucket2A43346A", }, "/", { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbS3VersionKey39F5EDC8", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParameters06b6e7c982ad60c754ab319744f14970e83d4c1f0b919c58b1a73f4563ba4edbS3VersionKey39F5EDC8", }, ], }, ], }, ], ], }, }, "Type": "AWS::CloudFormation::Stack", "UpdateReplacePolicy": "Delete", }, "IngestionRedditIngestionNestedStackRedditIngestionNestedStackResource5ABCB860": { "Condition": "IngestionDeployRedditIngestionB0819499", "DeletionPolicy": "Delete", "Metadata": { "nestedStackFileName": "IngestionRedditIngestion6FBA36BE.nested.template", }, "Properties": { "Parameters": { "EventBus": { "Fn::GetAtt": [ "IngestionBus3E30EA7C", "Arn", ], }, "StreamARN": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "SubRedditsToFollow": { "Ref": "SubRedditsToFollow", }, "referencetoAssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3BucketCB265544Ref": { "Ref": "AssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3BucketCB265544", }, "referencetoAssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3VersionKeyD1943F32Ref": { "Ref": "AssetParametersb1616e8ef7e694aaef70e483084933773d19fe33ab95709679b90c381f066170S3VersionKeyD1943F32", }, }, "TemplateURL": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Ref": "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fS3BucketB598029C", }, "/", { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fS3VersionKey6B6C48A1", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParametersdc824d17609c827e7e21dfa1820c038175a8bfb84108427d23f0d5dddc76a20fS3VersionKey6B6C48A1", }, ], }, ], }, ], ], }, }, "Type": "AWS::CloudFormation::Stack", "UpdateReplacePolicy": "Delete", }, "IngestionS3CustomIngestionNestedStackS3CustomIngestionNestedStackResource0099DFB8": { "Condition": "IngestionDeployCustomIngestion93AB274A", "DeletionPolicy": "Delete", "DependsOn": [ "AccessLogPolicy4B3DB856", ], "Metadata": { "nestedStackFileName": "IngestionS3CustomIngestionDA5FFAE5.nested.template", }, "Properties": { "Parameters": { "IntegrationBus": { "Fn::GetAtt": [ "TestBusF2C65FE8", "Arn", ], }, "MetadataNS": "metadata.call_analytics", "S3AccessLoggingBucket": { "Fn::GetAtt": [ "AccessLogD598EBE9", "Arn", ], }, "StreamARN": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "referencetoAssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3Bucket4324637ERef": { "Ref": "AssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3Bucket4324637E", }, "referencetoAssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3VersionKey24346418Ref": { "Ref": "AssetParameters01b85b6bcec6f183b1c3cf712ea48cb15a099a7acc142c83e1be16e20190b9b2S3VersionKey24346418", }, }, "TemplateURL": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Ref": "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1S3Bucket564056F1", }, "/", { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1S3VersionKey5219E30D", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParameters4f9b738061ab9b310b377b2e4a1735f9ac9569ace40ca2346eacf03090b2d0c1S3VersionKey5219E30D", }, ], }, ], }, ], ], }, }, "Type": "AWS::CloudFormation::Stack", "UpdateReplacePolicy": "Delete", }, "IngestionTwitterSearchNestedStackTwitterSearchNestedStackResource3B8C7F8F": { "Condition": "IngestionDeployTwitterIngestion4D7DE3EB", "DeletionPolicy": "Delete", "Metadata": { "nestedStackFileName": "IngestionTwitterSearch21AEAF91.nested.template", }, "Properties": { "Parameters": { "IngestQueryFrequency": { "Ref": "TwitterIngestQueryFrequency", }, "QueryParameter": { "Ref": "TwitterSearchQuery", }, "SSMPathForCredentials": { "Ref": "TwitterSSMPathForBearerToken", }, "StreamARN": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "SupportedLang": { "Ref": "SupportedLanguages", }, "referencetoAssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3Bucket476799AFRef": { "Ref": "AssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3Bucket476799AF", }, "referencetoAssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3VersionKey703E74DFRef": { "Ref": "AssetParameters9a512a1198e54699fd9d427f29f91021458fda9d23601e31e4b76bf96d5d7caaS3VersionKey703E74DF", }, }, "TemplateURL": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Ref": "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7S3Bucket75F8E61E", }, "/", { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7S3VersionKey72BF62C9", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParameters436e3376811f1ba861bea672e9a9a4d42a2689e39f2124b9e5fabb719d2a85f7S3VersionKey72BF62C9", }, ], }, ], }, ], ], }, }, "Type": "AWS::CloudFormation::Stack", "UpdateReplacePolicy": "Delete", }, "IngestionYouTubeCommentsIngestionNestedStackYouTubeCommentsIngestionNestedStackResourceD9D9E2B1": { "Condition": "IngestionDeployYouTubeCommentsA44A0A50", "DeletionPolicy": "Delete", "Metadata": { "nestedStackFileName": "IngestionYouTubeCommentsIngestion1376988D.nested.template", }, "Properties": { "Parameters": { "EventBus": { "Fn::GetAtt": [ "IngestionBus3E30EA7C", "Arn", ], }, "StreamARN": { "Fn::GetAtt": [ "IngestionFeedConsumerIngestionStreamKinesisStreamD5A80644", "Arn", ], }, "YouTubeSearchIngestionFreq": { "Ref": "YouTubeSearchIngestionFreq", }, "YoutubeAPIKey": { "Ref": "YoutubeAPIKey", }, "YoutubeSearchQuery": { "Ref": "YoutubeSearchQuery", }, "referencetoAssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3Bucket2BA474C6Ref": { "Ref": "AssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3Bucket2BA474C6", }, "referencetoAssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3VersionKey8314355FRef": { "Ref": "AssetParametersd354563eb6f6dca64220791d0a7054be509d14ebda9261a52f26c2a6a998747eS3VersionKey8314355F", }, }, "TemplateURL": { "Fn::Join": [ "", [ "https://s3.", { "Ref": "AWS::Region", }, ".", { "Ref": "AWS::URLSuffix", }, "/", { "Ref": "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dS3Bucket71669C1C", }, "/", { "Fn::Select": [ 0, { "Fn::Split": [ "||", { "Ref": "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dS3VersionKey127128C3", }, ], }, ], }, { "Fn::Select": [ 1, { "Fn::Split": [ "||", { "Ref": "AssetParameters5e221569d247258fe3d1b5cfb1310cbe54d3082a01a39408194185eb192d1a7dS3VersionKey127128C3", }, ], }, ], }, ], ], }, }, "Type": "AWS::CloudFormation::Stack", "UpdateReplacePolicy": "Delete", }, "TestBusF2C65FE8": { "Properties": { "Name": "TestBus", }, "Type": "AWS::Events::EventBus", }, }, } `;