// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`BI reporting ETL snapshot and variables 1`] = ` Object { "Resources": Object { "TestConfigTable31B6F7EE": Object { "DeletionPolicy": "Retain", "Properties": Object { "AttributeDefinitions": Array [ Object { "AttributeName": "id", "AttributeType": "S", }, Object { "AttributeName": "type", "AttributeType": "S", }, ], "KeySchema": Array [ Object { "AttributeName": "id", "KeyType": "HASH", }, Object { "AttributeName": "type", "KeyType": "RANGE", }, ], "ProvisionedThroughput": Object { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5, }, }, "Type": "AWS::DynamoDB::Table", "UpdateReplacePolicy": "Retain", }, "TestEtlGlueCommonPolicy3ED8D7FC": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/glue-job-scripts/*", ], ], }, }, Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":log-group:/aws-glue/*", ], ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlGlueCommonPolicy3ED8D7FC", "Roles": Array [ Object { "Ref": "TestEtlGlueConfigurationJobRoleAB1792D3", }, Object { "Ref": "TestEtlGlueConvertParquetJobRole6221AAC0", }, Object { "Ref": "TestEtlGlueUpdateCrawlerJobRoleEE56FC23", }, Object { "Ref": "TestEtlGlueCrawlerRoleF6CDF113", }, ], }, "Type": "AWS::IAM::Policy", }, "TestEtlGlueConfigurationJob2A680303": Object { "DependsOn": Array [ "TestEtlGlueCustomResource00219294", ], "Properties": Object { "Command": Object { "Name": "glueetl", "PythonVersion": "3", "ScriptLocation": Object { "Fn::Join": Array [ "", Array [ "s3://", Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "/glue-job-scripts/configuration.py", ], ], }, }, "DefaultArguments": Object { "--additional-python-modules": "botocore>=1.20.12,boto3>=1.17.12", "--config_table": Object { "Ref": "TestConfigTable31B6F7EE", }, "--csv_prefix": "csv", "--machine_config_information_csv": "machine_config_information.csv", "--machine_config_information_manifest": "machine_config_information_manifest.json", "--machine_information_csv": "machine_information.csv", "--machine_information_manifest": "machine_information_manifest.json", "--manifest_prefix": "manifest", "--output_bucket": Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "--ui_reference_table": Object { "Ref": "TestUiReferenceTableAC519002", }, "--user_agent_extra": "{\\"user_agent_extra\\": \\"AwsSolution/TestSolution/beta\\"}", }, "Description": Object { "Fn::Join": Array [ "", Array [ "Glue configuration job for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "GlueVersion": "2.0", "Role": Object { "Ref": "TestEtlGlueConfigurationJobRoleAB1792D3", }, }, "Type": "AWS::Glue::Job", }, "TestEtlGlueConfigurationJobRoleAB1792D3": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "glue.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Path": "/service-role/", }, "Type": "AWS::IAM::Role", }, "TestEtlGlueConfigurationJobRoleDefaultPolicy6631BFB5": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "dynamodb:GetItem", "dynamodb:Scan", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "TestConfigTable31B6F7EE", "Arn", ], }, Object { "Fn::GetAtt": Array [ "TestUiReferenceTableAC519002", "Arn", ], }, ], }, Object { "Action": "s3:PutObject", "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/csv/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/manifest/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlGlueConfigurationJobRoleDefaultPolicy6631BFB5", "Roles": Array [ Object { "Ref": "TestEtlGlueConfigurationJobRoleAB1792D3", }, ], }, "Type": "AWS::IAM::Policy", }, "TestEtlGlueConfigurationJobTrigger00554DF1": Object { "Properties": Object { "Actions": Array [ Object { "JobName": Object { "Ref": "TestEtlGlueConfigurationJob2A680303", }, }, ], "Description": Object { "Fn::Join": Array [ "", Array [ "Glue configuration job scheduled trigger for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Name": Object { "Fn::Join": Array [ "", Array [ Object { "Ref": "AWS::StackName", }, "-ConfigurationJobTrigger", ], ], }, "Schedule": "cron(0 1 * * ? *)", "StartOnCreation": true, "Type": "SCHEDULED", "WorkflowName": Object { "Ref": "TestEtlGlueWorkflow5ABCDC3A", }, }, "Type": "AWS::Glue::Trigger", }, "TestEtlGlueConvertParquetJobB0098CEF": Object { "DependsOn": Array [ "TestEtlGlueCustomResource00219294", ], "Properties": Object { "Command": Object { "Name": "glueetl", "PythonVersion": "3", "ScriptLocation": Object { "Fn::Join": Array [ "", Array [ "s3://", Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "/glue-job-scripts/convert_parquet.py", ], ], }, }, "DefaultArguments": Object { "--additional-python-modules": "botocore>=1.20.12,boto3>=1.17.12", "--config_table": Object { "Ref": "TestConfigTable31B6F7EE", }, "--input_bucket": "test-raw-data-bucket", "--output_bucket": Object { "Ref": "TestEtlParquetS3BucketEB45A711", }, "--user_agent_extra": "{\\"user_agent_extra\\": \\"AwsSolution/TestSolution/beta\\"}", }, "Description": Object { "Fn::Join": Array [ "", Array [ "Glue parquet conversion job for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "GlueVersion": "2.0", "Role": Object { "Ref": "TestEtlGlueConvertParquetJobRole6221AAC0", }, }, "Type": "AWS::Glue::Job", }, "TestEtlGlueConvertParquetJobRole6221AAC0": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "glue.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Path": "/service-role/", }, "Type": "AWS::IAM::Role", }, "TestEtlGlueConvertParquetJobRoleDefaultPolicyD6C452E5": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "dynamodb:GetItem", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "TestConfigTable31B6F7EE", "Arn", ], }, }, Object { "Action": "s3:ListBucket", "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::test-raw-data-bucket", ], ], }, Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, ], }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::test-raw-data-bucket/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:DeleteObject", "s3:PutObject", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, "/*", ], ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlGlueConvertParquetJobRoleDefaultPolicyD6C452E5", "Roles": Array [ Object { "Ref": "TestEtlGlueConvertParquetJobRole6221AAC0", }, ], }, "Type": "AWS::IAM::Policy", }, "TestEtlGlueConvertParquetJobTrigger04A6898D": Object { "Properties": Object { "Actions": Array [ Object { "JobName": Object { "Ref": "TestEtlGlueConvertParquetJobB0098CEF", }, }, ], "Description": Object { "Fn::Join": Array [ "", Array [ "Glue parquet conversion job scheduled trigger for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Name": Object { "Fn::Join": Array [ "", Array [ Object { "Ref": "AWS::StackName", }, "-ConvertParquetJobTrigger", ], ], }, "Predicate": Object { "Conditions": Array [ Object { "JobName": Object { "Ref": "TestEtlGlueConfigurationJob2A680303", }, "LogicalOperator": "EQUALS", "State": "SUCCEEDED", }, ], }, "StartOnCreation": true, "Type": "CONDITIONAL", "WorkflowName": Object { "Ref": "TestEtlGlueWorkflow5ABCDC3A", }, }, "Type": "AWS::Glue::Trigger", }, "TestEtlGlueCrawler874BB334": Object { "Properties": Object { "DatabaseName": Object { "Ref": "TestEtlGlueDatabaseB2CCB397", }, "Description": Object { "Fn::Join": Array [ "", Array [ "Glue crawler for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Role": Object { "Fn::GetAtt": Array [ "TestEtlGlueCrawlerRoleF6CDF113", "Arn", ], }, "SchemaChangePolicy": Object { "DeleteBehavior": "LOG", "UpdateBehavior": "UPDATE_IN_DATABASE", }, "Targets": Object { "S3Targets": Array [ Object { "Path": Object { "Fn::Join": Array [ "", Array [ "s3://", Object { "Ref": "TestEtlParquetS3BucketEB45A711", }, "/", ], ], }, }, ], }, }, "Type": "AWS::Glue::Crawler", }, "TestEtlGlueCrawlerRoleDefaultPolicyE50AF6AD": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "s3:ListBucket", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, }, Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, "/*", ], ], }, }, Object { "Action": "glue:GetDatabase", "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":catalog", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":database/", Object { "Ref": "TestEtlGlueDatabaseB2CCB397", }, ], ], }, ], }, Object { "Action": Array [ "glue:GetTable", "glue:CreateTable", "glue:UpdateTable", "glue:BatchGetPartition", "glue:BatchCreatePartition", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":catalog", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":database/", Object { "Ref": "TestEtlGlueDatabaseB2CCB397", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":table/", Object { "Ref": "TestEtlGlueDatabaseB2CCB397", }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlGlueCrawlerRoleDefaultPolicyE50AF6AD", "Roles": Array [ Object { "Ref": "TestEtlGlueCrawlerRoleF6CDF113", }, ], }, "Type": "AWS::IAM::Policy", }, "TestEtlGlueCrawlerRoleF6CDF113": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "glue.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Path": "/service-role/", }, "Type": "AWS::IAM::Role", }, "TestEtlGlueCrawlerTriggerFBDA58D7": Object { "Properties": Object { "Actions": Array [ Object { "CrawlerName": Object { "Ref": "TestEtlGlueCrawler874BB334", }, }, ], "Description": Object { "Fn::Join": Array [ "", Array [ "Glue crawler trigger for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Name": Object { "Fn::Join": Array [ "", Array [ Object { "Ref": "AWS::StackName", }, "-CrawlerTrigger", ], ], }, "Predicate": Object { "Conditions": Array [ Object { "JobName": Object { "Ref": "TestEtlGlueConvertParquetJobB0098CEF", }, "LogicalOperator": "EQUALS", "State": "SUCCEEDED", }, ], }, "StartOnCreation": true, "Type": "CONDITIONAL", "WorkflowName": Object { "Ref": "TestEtlGlueWorkflow5ABCDC3A", }, }, "Type": "AWS::Glue::Trigger", }, "TestEtlGlueCustomResource00219294": Object { "DeletionPolicy": "Delete", "DependsOn": Array [ "TestEtlSolutionHelperEtlPolicy6FD8EB45", ], "Properties": Object { "Action": "CONFIGURE_ETL", "CsvPrefix": "csv", "DestinationBucket": Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "GlueJobScripts": Array [ "configuration.py", "convert_parquet.py", "update_crawler.py", ], "GlueJobScriptsPrefix": "glue-job-scripts", "MachineConfigInformationPrefix": "machine_config_information", "MachineInformationPrefix": "machine_information", "ManifestPrefix": "manifest", "ServiceToken": Object { "Fn::GetAtt": Array [ "TestSolutionHelperFunction4CFAB303", "Arn", ], }, "SourceBucket": "test-source-bucket", "SourcePrefix": "test-code-prefix", }, "Type": "AWS::CloudFormation::CustomResource", "UpdateReplacePolicy": "Delete", }, "TestEtlGlueDatabaseB2CCB397": Object { "Properties": Object { "CatalogId": Object { "Ref": "AWS::AccountId", }, "DatabaseInput": Object { "Name": "test-stack-name-database", }, }, "Type": "AWS::Glue::Database", }, "TestEtlGlueTable5217B157": Object { "Properties": Object { "CatalogId": Object { "Ref": "AWS::AccountId", }, "DatabaseName": Object { "Ref": "TestEtlGlueDatabaseB2CCB397", }, "TableInput": Object { "Description": Object { "Fn::Join": Array [ "", Array [ "Table for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Name": Object { "Fn::Join": Array [ "_", Object { "Fn::Split": Array [ "-", Object { "Ref": "TestEtlParquetS3BucketEB45A711", }, ], }, ], }, "Parameters": Object { "classification": "parquet", "has_encrypted_data": false, }, "PartitionKeys": Array [ Object { "Comment": "Year", "Name": "Partition_0", "Type": "string", }, Object { "Comment": "Month", "Name": "Partition_1", "Type": "string", }, Object { "Comment": "Day", "Name": "Partition_2", "Type": "string", }, ], "StorageDescriptor": Object { "Columns": Array [ Object { "Name": "quality", "Type": "string", }, Object { "Name": "value", "Type": "string", }, Object { "Name": "timestamp", "Type": "string", }, Object { "Name": "tag", "Type": "string", }, Object { "Name": "id", "Type": "string", }, ], "Compressed": false, "InputFormat": "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat", "Location": Object { "Fn::Join": Array [ "", Array [ "s3://", Object { "Ref": "TestEtlParquetS3BucketEB45A711", }, "/", ], ], }, "OutputFormat": "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat", "SerdeInfo": Object { "SerializationLibrary": "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe", }, "StoredAsSubDirectories": false, }, "TableType": "EXTERNAL_TABLE", }, }, "Type": "AWS::Glue::Table", }, "TestEtlGlueUpdateCrawlerJob109FF4D5": Object { "DependsOn": Array [ "TestEtlGlueCustomResource00219294", ], "Properties": Object { "Command": Object { "Name": "glueetl", "PythonVersion": "3", "ScriptLocation": Object { "Fn::Join": Array [ "", Array [ "s3://", Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "/glue-job-scripts/update_crawler.py", ], ], }, }, "DefaultArguments": Object { "--additional-python-modules": "botocore>=1.20.12,boto3>=1.17.12", "--glue_crawler": Object { "Ref": "TestEtlGlueCrawler874BB334", }, "--glue_trigger": Object { "Fn::Join": Array [ "", Array [ Object { "Ref": "AWS::StackName", }, "-UpdateCrawlerJobTrigger", ], ], }, "--user_agent_extra": "{\\"user_agent_extra\\": \\"AwsSolution/TestSolution/beta\\"}", }, "Description": Object { "Fn::Join": Array [ "", Array [ "Glue crawler update job for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "GlueVersion": "2.0", "Role": Object { "Ref": "TestEtlGlueUpdateCrawlerJobRoleEE56FC23", }, }, "Type": "AWS::Glue::Job", }, "TestEtlGlueUpdateCrawlerJobRoleDefaultPolicyA894D4E5": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "glue:UpdateCrawler", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":crawler/", Object { "Ref": "TestEtlGlueCrawler874BB334", }, ], ], }, }, Object { "Action": "glue:StopTrigger", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":glue:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":trigger/", Object { "Ref": "AWS::StackName", }, "-UpdateCrawlerJobTrigger", ], ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlGlueUpdateCrawlerJobRoleDefaultPolicyA894D4E5", "Roles": Array [ Object { "Ref": "TestEtlGlueUpdateCrawlerJobRoleEE56FC23", }, ], }, "Type": "AWS::IAM::Policy", }, "TestEtlGlueUpdateCrawlerJobRoleEE56FC23": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "glue.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "Path": "/service-role/", }, "Type": "AWS::IAM::Role", }, "TestEtlGlueUpdateCrawlerJobTrigger061D5680": Object { "Properties": Object { "Actions": Array [ Object { "JobName": Object { "Ref": "TestEtlGlueUpdateCrawlerJob109FF4D5", }, }, ], "Description": Object { "Fn::Join": Array [ "", Array [ "Glue crawler update job scheduled trigger for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, "Name": Object { "Fn::Join": Array [ "", Array [ Object { "Ref": "AWS::StackName", }, "-UpdateCrawlerJobTrigger", ], ], }, "Predicate": Object { "Conditions": Array [ Object { "CrawlState": "SUCCEEDED", "CrawlerName": Object { "Ref": "TestEtlGlueCrawler874BB334", }, "LogicalOperator": "EQUALS", }, ], }, "StartOnCreation": true, "Type": "CONDITIONAL", "WorkflowName": Object { "Ref": "TestEtlGlueWorkflow5ABCDC3A", }, }, "Type": "AWS::Glue::Trigger", }, "TestEtlGlueWorkflow5ABCDC3A": Object { "Properties": Object { "Description": Object { "Fn::Join": Array [ "", Array [ "Workflow for ", Object { "Ref": "AWS::StackName", }, " CloudFormation stack", ], ], }, }, "Type": "AWS::Glue::Workflow", }, "TestEtlMetadataS3Bucket97583BDC": Object { "DeletionPolicy": "Retain", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "LifecycleConfiguration": Object { "Rules": Array [ Object { "NoncurrentVersionTransitions": Array [ Object { "StorageClass": "GLACIER", "TransitionInDays": 90, }, ], "Status": "Enabled", }, ], }, "LoggingConfiguration": Object { "DestinationBucketName": Object { "Ref": "TestLoggingBucket077C0B0B", }, "LogFilePrefix": "metadata/", }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, "VersioningConfiguration": Object { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "TestEtlMetadataS3BucketPolicy5BBEE95A": Object { "Properties": Object { "Bucket": Object { "Ref": "TestEtlMetadataS3Bucket97583BDC", }, "PolicyDocument": Object { "Statement": Array [ Object { "Action": "*", "Condition": Object { "Bool": Object { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": "*", "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/*", ], ], }, "Sid": "HttpsOnly", }, ], "Version": "2012-10-17", }, }, "Type": "AWS::S3::BucketPolicy", }, "TestEtlParquetS3BucketEB45A711": Object { "DeletionPolicy": "Retain", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "LifecycleConfiguration": Object { "Rules": Array [ Object { "NoncurrentVersionTransitions": Array [ Object { "StorageClass": "GLACIER", "TransitionInDays": 90, }, ], "Status": "Enabled", }, ], }, "LoggingConfiguration": Object { "DestinationBucketName": Object { "Ref": "TestLoggingBucket077C0B0B", }, "LogFilePrefix": "parquet/", }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, "VersioningConfiguration": Object { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "TestEtlParquetS3BucketPolicyE4BECAB0": Object { "Properties": Object { "Bucket": Object { "Ref": "TestEtlParquetS3BucketEB45A711", }, "PolicyDocument": Object { "Statement": Array [ Object { "Action": "*", "Condition": Object { "Bool": Object { "aws:SecureTransport": "false", }, }, "Effect": "Deny", "Principal": "*", "Resource": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlParquetS3BucketEB45A711", "Arn", ], }, "/*", ], ], }, "Sid": "HttpsOnly", }, ], "Version": "2012-10-17", }, }, "Type": "AWS::S3::BucketPolicy", }, "TestEtlSolutionHelperEtlPolicy6FD8EB45": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "s3:GetObject", "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::test-source-bucket/*", ], ], }, }, Object { "Action": "s3:PutObject", "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/csv/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/manifest/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "TestEtlMetadataS3Bucket97583BDC", "Arn", ], }, "/glue-job-scripts/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "TestEtlSolutionHelperEtlPolicy6FD8EB45", "Roles": Array [ Object { "Ref": "TestSolutionHelperFunctionServiceRole7B84FD28", }, ], }, "Type": "AWS::IAM::Policy", }, "TestLoggingBucket077C0B0B": Object { "DeletionPolicy": "Retain", "Properties": Object { "AccessControl": "LogDeliveryWrite", }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "TestSolutionHelperFunction4CFAB303": Object { "DependsOn": Array [ "TestSolutionHelperFunctionServiceRole7B84FD28", ], "Properties": Object { "Code": Object { "S3Bucket": "test-bucket", "S3Key": "source.zip", }, "Handler": "index.handler", "Role": Object { "Fn::GetAtt": Array [ "TestSolutionHelperFunctionServiceRole7B84FD28", "Arn", ], }, "Runtime": "nodejs14.x", }, "Type": "AWS::Lambda::Function", }, "TestSolutionHelperFunctionServiceRole7B84FD28": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "TestUiReferenceTableAC519002": Object { "DeletionPolicy": "Retain", "Properties": Object { "AttributeDefinitions": Array [ Object { "AttributeName": "id", "AttributeType": "S", }, Object { "AttributeName": "type", "AttributeType": "S", }, ], "KeySchema": Array [ Object { "AttributeName": "id", "KeyType": "HASH", }, Object { "AttributeName": "type", "KeyType": "RANGE", }, ], "ProvisionedThroughput": Object { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5, }, }, "Type": "AWS::DynamoDB::Table", "UpdateReplacePolicy": "Retain", }, }, } `;