diff --git a/usecases/blea-gov-base-standalone/test/__snapshots__/blea-gov-base-standalone.test.ts.snap b/usecases/blea-gov-base-standalone/test/__snapshots__/blea-gov-base-standalone.test.ts.snap index 6d662d766..9d9bcb205 100644 --- a/usecases/blea-gov-base-standalone/test/__snapshots__/blea-gov-base-standalone.test.ts.snap +++ b/usecases/blea-gov-base-standalone/test/__snapshots__/blea-gov-base-standalone.test.ts.snap @@ -1,27 +1,27 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Snapshot test for BLEAGovBaseStandalone Stack 1`] = ` -Object { - "Outputs": Object { - "ExportsOutputRefDetectionAlarmTopic36C4BB557D18D152": Object { - "Export": Object { +{ + "Outputs": { + "ExportsOutputRefDetectionAlarmTopic36C4BB557D18D152": { + "Export": { "Name": "Dev-BLEABaseStandalone:ExportsOutputRefDetectionAlarmTopic36C4BB557D18D152", }, - "Value": Object { + "Value": { "Ref": "DetectionAlarmTopic36C4BB55", }, }, }, - "Parameters": Object { - "BootstrapVersion": Object { + "Parameters": { + "BootstrapVersion": { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, - "Resources": Object { - "CheckForEbsOptimizedInstance": Object { - "DependsOn": Array [ + "Resources": { + "CheckForEbsOptimizedInstance": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -38,23 +38,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForEbsOptimizedInstance", "Description": "Disallow launch of EC2 instance types that are not EBS-optimized - Checks whether EBS optimization is enabled for your EC2 instances that can be EBS-optimized", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::Instance", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "EBS_OPTIMIZED_INSTANCE", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForEc2VolumesInUse": Object { - "DependsOn": Array [ + "CheckForEc2VolumesInUse": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -71,26 +71,26 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForEc2VolumesInUs", "Description": "Disallow EBS volumes that are unattached to an EC2 instance - Checks whether EBS volumes are attached to EC2 instances", - "InputParameters": Object { + "InputParameters": { "deleteOnTermination": true, }, - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::Volume", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "EC2_VOLUME_INUSE_CHECK", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForEncryptedVolumes": Object { - "DependsOn": Array [ + "CheckForEncryptedVolumes": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -107,23 +107,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForEncryptedVolumes", "Description": "Enable encryption for EBS volumes attached to EC2 instances - Checks whether EBS volumes that are in an attached state are encrypted.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::Volume", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "ENCRYPTED_VOLUMES", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForIAMUserConsoleMFA": Object { - "DependsOn": Array [ + "CheckForIAMUserConsoleMFA": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -140,19 +140,19 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForIAMUserConsoleMFA", "Description": "Disallow console access to IAM users without MFA - Checks whether AWS Multi-Factor Authentication (MFA) is enabled for all AWS Identity and Access Management (IAM) users that use a console password. The rule is COMPLIANT if MFA is enabled.", "MaximumExecutionFrequency": "One_Hour", - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "MFA_ENABLED_FOR_IAM_CONSOLE_ACCESS", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForIAMUserMFA": Object { - "DependsOn": Array [ + "CheckForIAMUserMFA": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -169,19 +169,19 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForIAMUserMFA", "Description": "Disallow access to IAM users without MFA - Checks whether the AWS Identity and Access Management users have multi-factor authentication (MFA) enabled. The rule is COMPLIANT if MFA is enabled.", "MaximumExecutionFrequency": "One_Hour", - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "IAM_USER_MFA_ENABLED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForPublicRdsSnapshots": Object { - "DependsOn": Array [ + "CheckForPublicRdsSnapshots": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -198,23 +198,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForPublicRdsSnapshots", "Description": "Disallow public access to RDS database snapshots - Checks if Amazon Relational Database Service (Amazon RDS) snapshots are public. The rule is non-compliant if any existing and new Amazon RDS snapshots are public.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::RDS::DBSnapshot", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "RDS_SNAPSHOTS_PUBLIC_PROHIBITED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForRdsPublicAccess": Object { - "DependsOn": Array [ + "CheckForRdsPublicAccess": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -231,23 +231,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForRdsPublicAccess", "Description": "Disallow public access to RDS database instances - Checks whether the Amazon Relational Database Service (RDS) instances are not publicly accessible. The rule is non-compliant if the publiclyAccessible field is true in the instance configuration item.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::RDS::DBInstance", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "RDS_INSTANCE_PUBLIC_ACCESS_CHECK", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForRdsStorageEncryption": Object { - "DependsOn": Array [ + "CheckForRdsStorageEncryption": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -264,23 +264,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForRdsStorageEncryption", "Description": "Disallow RDS database instances that are not storage encrypted - Checks whether storage encryption is enabled for your RDS DB instances.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::RDS::DBInstance", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "RDS_STORAGE_ENCRYPTED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForRestrictedCommonPortsPolicy": Object { - "DependsOn": Array [ + "CheckForRestrictedCommonPortsPolicy": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -297,30 +297,30 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForRestrictedCommonPortsPolicy", "Description": "Disallow internet connection through RDP - Checks whether security groups that are in use disallow unrestricted incoming TCP traffic to the specified ports.", - "InputParameters": Object { + "InputParameters": { "blockedPort1": 20, "blockedPort2": 21, "blockedPort3": 3389, "blockedPort4": 3306, "blockedPort5": 4333, }, - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::SecurityGroup", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "RESTRICTED_INCOMING_TRAFFIC", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForRestrictedSshPolicy": Object { - "DependsOn": Array [ + "CheckForRestrictedSshPolicy": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -337,23 +337,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForRestrictedSshPolicy", "Description": "Disallow internet connection through SSH - Checks whether security groups that are in use disallow unrestricted incoming SSH traffic.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::SecurityGroup", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "INCOMING_SSH_DISABLED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForRootMfa": Object { - "DependsOn": Array [ + "CheckForRootMfa": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -370,19 +370,19 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForRootMfa", "Description": "Enable MFA for the root user - Checks whether the root user of your AWS account requires multi-factor authentication for console sign-in.", "MaximumExecutionFrequency": "One_Hour", - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "ROOT_ACCOUNT_MFA_ENABLED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForS3PublicRead": Object { - "DependsOn": Array [ + "CheckForS3PublicRead": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -399,23 +399,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForS3PublicRead", "Description": "Disallow public read access to S3 buckets - Checks that your S3 buckets do not allow public read access. If an S3 bucket policy or bucket ACL allows public read access, the bucket is noncompliant.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::S3::Bucket", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForS3PublicWrite": Object { - "DependsOn": Array [ + "CheckForS3PublicWrite": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -432,23 +432,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForS3PublicWrite", "Description": "Disallow public write access to S3 buckets - Checks that your S3 buckets do not allow public write access. If an S3 bucket policy or bucket ACL allows public write access, the bucket is noncompliant.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::S3::Bucket", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_WRITE_PROHIBITED", }, }, "Type": "AWS::Config::ConfigRule", }, - "CheckForS3VersioningEnabled": Object { - "DependsOn": Array [ + "CheckForS3VersioningEnabled": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -465,23 +465,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "CheckForS3VersioningEnabled", "Description": "Disallow S3 buckets that are not versioning enabled - Checks whether versioning is enabled for your S3 buckets.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::S3::Bucket", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "S3_BUCKET_VERSIONING_ENABLED", }, }, "Type": "AWS::Config::ConfigRule", }, - "DetectionAlarmTopic36C4BB55": Object { - "DependsOn": Array [ + "DetectionAlarmTopic36C4BB55": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -500,8 +500,8 @@ Object { ], "Type": "AWS::SNS::Topic", }, - "DetectionAlarmTopicPolicyDEB08BF4": Object { - "DependsOn": Array [ + "DetectionAlarmTopicPolicyDEB08BF4": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -518,27 +518,27 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { + "Properties": { + "PolicyDocument": { + "Statement": [ + { "Action": "sns:Publish", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudwatch.amazonaws.com", }, - "Resource": Object { + "Resource": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Sid": "0", }, - Object { + { "Action": "sns:Publish", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "events.amazonaws.com", }, - "Resource": Object { + "Resource": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Sid": "1", @@ -546,16 +546,16 @@ Object { ], "Version": "2012-10-17", }, - "Topics": Array [ - Object { + "Topics": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], }, "Type": "AWS::SNS::TopicPolicy", }, - "DetectionAwsHealthEventRule6825AFCC": Object { - "DependsOn": Array [ + "DetectionAwsHealthEventRule6825AFCC": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -572,20 +572,20 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "Notify AWS Health event", - "EventPattern": Object { - "detail-type": Array [ + "EventPattern": { + "detail-type": [ "AWS Health Event", ], - "source": Array [ + "source": [ "aws.health", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -594,8 +594,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionCloudTrailChangeEventRuleA526075C": Object { - "DependsOn": Array [ + "DetectionCloudTrailChangeEventRuleA526075C": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -612,27 +612,27 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "Notify to change on CloudTrail log configuration", - "EventPattern": Object { - "detail": Object { - "eventName": Array [ + "EventPattern": { + "detail": { + "eventName": [ "StopLogging", "DeleteTrail", "UpdateTrail", ], - "eventSource": Array [ + "eventSource": [ "cloudtrail.amazonaws.com", ], }, - "detail-type": Array [ + "detail-type": [ "AWS API Call via CloudTrail", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -641,8 +641,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionDefaultSgClosedEventRuleFB96D536": Object { - "DependsOn": Array [ + "DetectionDefaultSgClosedEventRuleFB96D536": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -659,30 +659,30 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "CloudWatch Event Rule to send notification on Config Rule compliance changes.", - "EventPattern": Object { - "detail": Object { - "configRuleName": Array [ + "EventPattern": { + "detail": { + "configRuleName": [ "bb-default-security-group-closed", ], - "newEvaluationResult": Object { - "complianceType": Array [ + "newEvaluationResult": { + "complianceType": [ "NON_COMPLIANT", ], }, }, - "detail-type": Array [ + "detail-type": [ "Config Rules Compliance Change", ], - "source": Array [ + "source": [ "aws.config", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -691,8 +691,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionDefaultSgClosedRuleFED7310D": Object { - "DependsOn": Array [ + "DetectionDefaultSgClosedRuleFED7310D": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -709,23 +709,23 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ConfigRuleName": "bb-default-security-group-closed", "Description": "Checks that the default security group of any Amazon Virtual Private Cloud (VPC) does not allow inbound or outbound traffic. The rule is non-compliant if the default security group has one or more inbound or outbound traffic.", - "Scope": Object { - "ComplianceResourceTypes": Array [ + "Scope": { + "ComplianceResourceTypes": [ "AWS::EC2::SecurityGroup", ], }, - "Source": Object { + "Source": { "Owner": "AWS", "SourceIdentifier": "VPC_DEFAULT_SECURITY_GROUP_CLOSED", }, }, "Type": "AWS::Config::ConfigRule", }, - "DetectionDefaultSgRemediation21C0DB33": Object { - "DependsOn": Array [ + "DetectionDefaultSgRemediation21C0DB33": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -742,18 +742,18 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Automatic": true, - "ConfigRuleName": Object { + "ConfigRuleName": { "Ref": "DetectionDefaultSgClosedRuleFED7310D", }, "MaximumAutomaticAttempts": 5, - "Parameters": Object { - "AutomationAssumeRole": Object { - "StaticValue": Object { - "Values": Array [ - Object { - "Fn::GetAtt": Array [ + "Parameters": { + "AutomationAssumeRole": { + "StaticValue": { + "Values": [ + { + "Fn::GetAtt": [ "DetectionDefaultSgRemediationRoleAEF5626C", "Arn", ], @@ -761,8 +761,8 @@ Object { ], }, }, - "GroupId": Object { - "ResourceValue": Object { + "GroupId": { + "ResourceValue": { "Value": "RESOURCE_ID", }, }, @@ -774,8 +774,8 @@ Object { }, "Type": "AWS::Config::RemediationConfiguration", }, - "DetectionDefaultSgRemediationRoleAEF5626C": Object { - "DependsOn": Array [ + "DetectionDefaultSgRemediationRoleAEF5626C": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -792,28 +792,28 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "ssm.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ + "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AmazonSSMAutomationRole", ], "Path": "/", }, "Type": "AWS::IAM::Role", }, - "DetectionDefaultSgRemediationRoleDefaultPolicy87C90FDE": Object { - "DependsOn": Array [ + "DetectionDefaultSgRemediationRoleDefaultPolicy87C90FDE": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -830,11 +830,11 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "ec2:RevokeSecurityGroupIngress", "ec2:RevokeSecurityGroupEgress", "ec2:DescribeSecurityGroups", @@ -842,17 +842,17 @@ Object { "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "iam:PassRole", "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "DetectionDefaultSgRemediationRoleAEF5626C", "Arn", ], }, }, - Object { + { "Action": "ssm:StartAutomationExecution", "Effect": "Allow", "Resource": "arn:aws:ssm:::automation-definition/AWSConfigRemediation-RemoveVPCDefaultSecurityGroupRules", @@ -861,16 +861,16 @@ Object { "Version": "2012-10-17", }, "PolicyName": "DetectionDefaultSgRemediationRoleDefaultPolicy87C90FDE", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "DetectionDefaultSgRemediationRoleAEF5626C", }, ], }, "Type": "AWS::IAM::Policy", }, - "DetectionGuardDutyDetector43B5BAA7": Object { - "DependsOn": Array [ + "DetectionGuardDutyDetector43B5BAA7": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -887,13 +887,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Enable": true, }, "Type": "AWS::GuardDuty::Detector", }, - "DetectionGuardDutyEventRule60AAD2D7": Object { - "DependsOn": Array [ + "DetectionGuardDutyEventRule60AAD2D7": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -910,11 +910,11 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "CloudWatch Event Rule to send notification on GuardDuty findings.", - "EventPattern": Object { - "detail": Object { - "severity": Array [ + "EventPattern": { + "detail": { + "severity": [ 4, 4, 4.1, @@ -972,17 +972,17 @@ Object { 8.9, ], }, - "detail-type": Array [ + "detail-type": [ "GuardDuty Finding", ], - "source": Array [ + "source": [ "aws.guardduty", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -991,8 +991,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionIAMPolicyChangeAlarm7DBC7A65": Object { - "DependsOn": Array [ + "DetectionIAMPolicyChangeAlarm7DBC7A65": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1009,10 +1009,10 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], @@ -1028,8 +1028,8 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "DetectionIAMPolicyChangeFilterA31FCC40": Object { - "DependsOn": Array [ + "DetectionIAMPolicyChangeFilterA31FCC40": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1046,13 +1046,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "FilterPattern": "{($.eventName=DeleteGroupPolicy)||($.eventName=DeleteRolePolicy)||($.eventName=DeleteUserPolicy)||($.eventName=PutGroupPolicy)||($.eventName=PutRolePolicy)||($.eventName=PutUserPolicy)||($.eventName=CreatePolicy)||($.eventName=DeletePolicy)||($.eventName=CreatePolicyVersion)||($.eventName=DeletePolicyVersion)||($.eventName=AttachRolePolicy)||($.eventName=DetachRolePolicy)||($.eventName=AttachUserPolicy)||($.eventName=DetachUserPolicy)||($.eventName=AttachGroupPolicy)||($.eventName=DetachGroupPolicy)}", - "LogGroupName": Object { + "LogGroupName": { "Ref": "LoggingCloudTrailLogGroupEFC12822", }, - "MetricTransformations": Array [ - Object { + "MetricTransformations": [ + { "MetricName": "IAMPolicyEventCount", "MetricNamespace": "CloudTrailMetrics", "MetricValue": "1", @@ -1061,8 +1061,8 @@ Object { }, "Type": "AWS::Logs::MetricFilter", }, - "DetectionNetworkAclChangeEventRuleE99FF49F": Object { - "DependsOn": Array [ + "DetectionNetworkAclChangeEventRuleE99FF49F": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1079,11 +1079,11 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "Notify to create, update or delete a Network ACL.", - "EventPattern": Object { - "detail": Object { - "eventName": Array [ + "EventPattern": { + "detail": { + "eventName": [ "CreateNetworkAcl", "CreateNetworkAclEntry", "DeleteNetworkAcl", @@ -1091,21 +1091,21 @@ Object { "ReplaceNetworkAclEntry", "ReplaceNetworkAclAssociation", ], - "eventSource": Array [ + "eventSource": [ "ec2.amazonaws.com", ], }, - "detail-type": Array [ + "detail-type": [ "AWS API Call via CloudTrail", ], - "source": Array [ + "source": [ "aws.ec2", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -1114,8 +1114,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionNewAccessKeyCreatedAlarm00969636": Object { - "DependsOn": Array [ + "DetectionNewAccessKeyCreatedAlarm00969636": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1132,10 +1132,10 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], @@ -1151,8 +1151,8 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "DetectionNewAccessKeyCreatedFilter011F7D99": Object { - "DependsOn": Array [ + "DetectionNewAccessKeyCreatedFilter011F7D99": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1169,13 +1169,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "FilterPattern": "{($.eventName=CreateAccessKey)}", - "LogGroupName": Object { + "LogGroupName": { "Ref": "LoggingCloudTrailLogGroupEFC12822", }, - "MetricTransformations": Array [ - Object { + "MetricTransformations": [ + { "MetricName": "NewAccessKeyCreatedEventCount", "MetricNamespace": "CloudTrailMetrics", "MetricValue": "1", @@ -1184,8 +1184,8 @@ Object { }, "Type": "AWS::Logs::MetricFilter", }, - "DetectionRootUserActivityAlarm4B9356FC": Object { - "DependsOn": Array [ + "DetectionRootUserActivityAlarm4B9356FC": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1202,10 +1202,10 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], @@ -1221,8 +1221,8 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "DetectionRootUserActivityFilter5C9C4989": Object { - "DependsOn": Array [ + "DetectionRootUserActivityFilter5C9C4989": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1239,13 +1239,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { - "FilterPattern": "{$.userIdentity.type=\\"Root\\" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !=\\"AwsServiceEvent\\"}", - "LogGroupName": Object { + "Properties": { + "FilterPattern": "{$.userIdentity.type="Root" && $.userIdentity.invokedBy NOT EXISTS && $.eventType !="AwsServiceEvent"}", + "LogGroupName": { "Ref": "LoggingCloudTrailLogGroupEFC12822", }, - "MetricTransformations": Array [ - Object { + "MetricTransformations": [ + { "MetricName": "RootUserPolicyEventCount", "MetricNamespace": "CloudTrailMetrics", "MetricValue": "1", @@ -1254,8 +1254,8 @@ Object { }, "Type": "AWS::Logs::MetricFilter", }, - "DetectionSecurityAlarmEmail872B09F1": Object { - "DependsOn": Array [ + "DetectionSecurityAlarmEmail872B09F1": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1272,17 +1272,17 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Endpoint": "notify-security@example.com", "Protocol": "email", - "TopicArn": Object { + "TopicArn": { "Ref": "DetectionAlarmTopic36C4BB55", }, }, "Type": "AWS::SNS::Subscription", }, - "DetectionSecurityHub0FF05D88": Object { - "DependsOn": Array [ + "DetectionSecurityHub0FF05D88": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1301,8 +1301,8 @@ Object { ], "Type": "AWS::SecurityHub::Hub", }, - "DetectionSecurityHubEventRule95BEBD4F": Object { - "DependsOn": Array [ + "DetectionSecurityHubEventRule95BEBD4F": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1319,44 +1319,44 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "CloudWatch Event Rule to send notification on SecurityHub all new findings and all updates.", - "EventPattern": Object { - "detail": Object { - "findings": Object { - "Compliance": Object { - "Status": Array [ + "EventPattern": { + "detail": { + "findings": { + "Compliance": { + "Status": [ "FAILED", ], }, - "RecordState": Array [ + "RecordState": [ "ACTIVE", ], - "Severity": Object { - "Label": Array [ + "Severity": { + "Label": [ "CRITICAL", "HIGH", ], }, - "Workflow": Object { - "Status": Array [ + "Workflow": { + "Status": [ "NEW", "NOTIFIED", ], }, }, }, - "detail-type": Array [ + "detail-type": [ "Security Hub Findings - Imported", ], - "source": Array [ + "source": [ "aws.securityhub", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -1365,8 +1365,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionSecurityHubRoleDBC68A4D": Object { - "DependsOn": Array [ + "DetectionSecurityHubRoleDBC68A4D": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1383,13 +1383,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "AWSServiceName": "securityhub.amazonaws.com", }, "Type": "AWS::IAM::ServiceLinkedRole", }, - "DetectionSgChangedEventRule80666B19": Object { - "DependsOn": Array [ + "DetectionSgChangedEventRule80666B19": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1406,31 +1406,31 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "Description": "Notify to create, update or delete a Security Group.", - "EventPattern": Object { - "detail": Object { - "eventName": Array [ + "EventPattern": { + "detail": { + "eventName": [ "AuthorizeSecurityGroupIngress", "AuthorizeSecurityGroupEgress", "RevokeSecurityGroupIngress", "RevokeSecurityGroupEgress", ], - "eventSource": Array [ + "eventSource": [ "ec2.amazonaws.com", ], }, - "detail-type": Array [ + "detail-type": [ "AWS API Call via CloudTrail", ], - "source": Array [ + "source": [ "aws.ec2", ], }, "State": "ENABLED", - "Targets": Array [ - Object { - "Arn": Object { + "Targets": [ + { + "Arn": { "Ref": "DetectionAlarmTopic36C4BB55", }, "Id": "Target0", @@ -1439,8 +1439,8 @@ Object { }, "Type": "AWS::Events::Rule", }, - "DetectionUnauthorizedAttemptsAlarmB897676B": Object { - "DependsOn": Array [ + "DetectionUnauthorizedAttemptsAlarmB897676B": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1457,10 +1457,10 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], @@ -1476,8 +1476,8 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "DetectionUnauthorizedAttemptsFilterCA20EEAA": Object { - "DependsOn": Array [ + "DetectionUnauthorizedAttemptsFilterCA20EEAA": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrail44E92DB9", @@ -1494,13 +1494,13 @@ Object { "LoggingConfigRecorderFC55B19F", "LoggingConfigRole0E4FDF1F", ], - "Properties": Object { - "FilterPattern": "{($.errorCode = \\"*UnauthorizedOperation\\" || $.errorCode = \\"AccessDenied*\\") && ($.eventName != \\"Decrypt\\" || $.userIdentity.invokedBy != \\"config.amazonaws.com\\" )}", - "LogGroupName": Object { + "Properties": { + "FilterPattern": "{($.errorCode = "*UnauthorizedOperation" || $.errorCode = "AccessDenied*") && ($.eventName != "Decrypt" || $.userIdentity.invokedBy != "config.amazonaws.com" )}", + "LogGroupName": { "Ref": "LoggingCloudTrailLogGroupEFC12822", }, - "MetricTransformations": Array [ - Object { + "MetricTransformations": [ + { "MetricName": "UnauthorizedAttemptsEventCount", "MetricNamespace": "CloudTrailMetrics", "MetricValue": "1", @@ -1509,39 +1509,39 @@ Object { }, "Type": "AWS::Logs::MetricFilter", }, - "IamIamAdminGroup25000CB5": Object { - "Properties": Object { - "ManagedPolicyArns": Array [ - Object { + "IamIamAdminGroup25000CB5": { + "Properties": { + "ManagedPolicyArns": [ + { "Ref": "IamIamAdminPolicy7A593281", }, ], }, "Type": "AWS::IAM::Group", }, - "IamIamAdminPolicy7A593281": Object { - "Properties": Object { + "IamIamAdminPolicy7A593281": { + "Properties": { "Description": "", "Path": "/", - "PolicyDocument": Object { - "Statement": Array [ - Object { + "PolicyDocument": { + "Statement": [ + { "Action": "iam:*", - "Condition": Object { - "Bool": Object { + "Condition": { + "Bool": { "aws:MultiFactorAuthPresent": "true", }, }, "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "aws-portal:*Billing", "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "account:GetAccountInformation", "billing:GetBillingData", "billing:GetBillingDetails", @@ -1629,66 +1629,66 @@ Object { }, "Type": "AWS::IAM::ManagedPolicy", }, - "IamIamAdminRole4B2B80CC": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "IamIamAdminRole4B2B80CC": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "ec2.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { + "ManagedPolicyArns": [ + { "Ref": "IamIamAdminPolicy7A593281", }, ], }, "Type": "AWS::IAM::Role", }, - "IamInstanceOpsGroup05587F7C": Object { - "Properties": Object { - "ManagedPolicyArns": Array [ - Object { + "IamInstanceOpsGroup05587F7C": { + "Properties": { + "ManagedPolicyArns": [ + { "Ref": "IamInstanceOpsPolicy3A664659", }, ], }, "Type": "AWS::IAM::Group", }, - "IamInstanceOpsPolicy3A664659": Object { - "Properties": Object { + "IamInstanceOpsPolicy3A664659": { + "Properties": { "Description": "", "Path": "/", - "PolicyDocument": Object { - "Statement": Array [ - Object { + "PolicyDocument": { + "Statement": [ + { "Action": "ec2:*", "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "elasticloadbalancing:*", "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "cloudwatch:*", "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "autoscaling:*", "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "ec2:CreateVpc*", "ec2:DeleteVpc*", "ec2:ModifyVpc*", @@ -1712,13 +1712,13 @@ Object { "Effect": "Deny", "Resource": "*", }, - Object { + { "Action": "aws-portal:*Billing", "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "account:GetAccountInformation", "billing:GetBillingData", "billing:GetBillingDetails", @@ -1800,8 +1800,8 @@ Object { "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Create*", "kms:Revoke*", "kms:Enable*", @@ -1820,46 +1820,46 @@ Object { }, "Type": "AWS::IAM::ManagedPolicy", }, - "IamInstanceOpsRole580371E4": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "IamInstanceOpsRole580371E4": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "ec2.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { + "ManagedPolicyArns": [ + { "Ref": "IamInstanceOpsPolicy3A664659", }, ], }, "Type": "AWS::IAM::Role", }, - "IamReadOnlyAdminGroupEA35CD95": Object { - "Properties": Object { - "ManagedPolicyArns": Array [ - Object { + "IamReadOnlyAdminGroupEA35CD95": { + "Properties": { + "ManagedPolicyArns": [ + { "Ref": "IamReadOnlyAdminPolicyB7107EA2", }, ], }, "Type": "AWS::IAM::Group", }, - "IamReadOnlyAdminPolicyB7107EA2": Object { - "Properties": Object { + "IamReadOnlyAdminPolicyB7107EA2": { + "Properties": { "Description": "", "Path": "/", - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "PolicyDocument": { + "Statement": [ + { + "Action": [ "appstream:Get*", "autoscaling:Describe*", "cloudformation:DescribeStacks", @@ -1924,13 +1924,13 @@ Object { "Effect": "Allow", "Resource": "*", }, - Object { + { "Action": "aws-portal:*Billing", "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "account:GetAccountInformation", "billing:GetBillingData", "billing:GetBillingDetails", @@ -2018,47 +2018,47 @@ Object { }, "Type": "AWS::IAM::ManagedPolicy", }, - "IamReadOnlyAdminRoleD519CCF3": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "IamReadOnlyAdminRoleD519CCF3": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "ec2.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { + "ManagedPolicyArns": [ + { "Ref": "IamReadOnlyAdminPolicyB7107EA2", }, ], }, "Type": "AWS::IAM::Role", }, - "IamSysAdminGroup3543FAD1": Object { - "Properties": Object { - "ManagedPolicyArns": Array [ - Object { + "IamSysAdminGroup3543FAD1": { + "Properties": { + "ManagedPolicyArns": [ + { "Ref": "IamSysAdminPolicy03754AB3", }, ], }, "Type": "AWS::IAM::Group", }, - "IamSysAdminPolicy03754AB3": Object { - "Properties": Object { + "IamSysAdminPolicy03754AB3": { + "Properties": { "Description": "", "Path": "/", - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Condition": Object { - "Bool": Object { + "PolicyDocument": { + "Statement": [ + { + "Condition": { + "Bool": { "aws:MultiFactorAuthPresent": "true", }, }, @@ -2066,13 +2066,13 @@ Object { "NotAction": "iam:*", "Resource": "*", }, - Object { + { "Action": "aws-portal:*Billing", "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "account:GetAccountInformation", "billing:GetBillingData", "billing:GetBillingDetails", @@ -2154,8 +2154,8 @@ Object { "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "cloudtrail:DeleteTrail", "cloudtrail:StopLogging", "cloudtrail:UpdateTrail", @@ -2163,8 +2163,8 @@ Object { "Effect": "Deny", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Create*", "kms:Revoke*", "kms:Enable*", @@ -2183,84 +2183,84 @@ Object { }, "Type": "AWS::IAM::ManagedPolicy", }, - "IamSysAdminRoleB0EE4AA6": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "IamSysAdminRoleB0EE4AA6": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "ec2.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { + "ManagedPolicyArns": [ + { "Ref": "IamSysAdminPolicy03754AB3", }, ], }, "Type": "AWS::IAM::Role", }, - "LoggingCloudTrail44E92DB9": Object { - "DependsOn": Array [ + "LoggingCloudTrail44E92DB9": { + "DependsOn": [ "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", "LoggingCloudTrailLogsRoleE1DD6030", "LoggingCloudTrailBucketPolicy4004472F", ], - "Properties": Object { - "CloudWatchLogsLogGroupArn": Object { - "Fn::GetAtt": Array [ + "Properties": { + "CloudWatchLogsLogGroupArn": { + "Fn::GetAtt": [ "LoggingCloudTrailLogGroupEFC12822", "Arn", ], }, - "CloudWatchLogsRoleArn": Object { - "Fn::GetAtt": Array [ + "CloudWatchLogsRoleArn": { + "Fn::GetAtt": [ "LoggingCloudTrailLogsRoleE1DD6030", "Arn", ], }, "EnableLogFileValidation": true, - "EventSelectors": Array [], + "EventSelectors": [], "IncludeGlobalServiceEvents": true, "IsLogging": true, "IsMultiRegionTrail": true, - "KMSKeyId": Object { - "Fn::GetAtt": Array [ + "KMSKeyId": { + "Fn::GetAtt": [ "LoggingCloudTrailKey43327553", "Arn", ], }, - "S3BucketName": Object { + "S3BucketName": { "Ref": "LoggingCloudTrailBucket7560781D", }, }, "Type": "AWS::CloudTrail::Trail", }, - "LoggingCloudTrailAccessLogBucketA7B773C8": Object { + "LoggingCloudTrailAccessLogBucketA7B773C8": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "AccessControl": "LogDeliveryWrite", - "BucketEncryption": Object { - "ServerSideEncryptionConfiguration": Array [ - Object { - "ServerSideEncryptionByDefault": Object { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256", }, }, ], }, - "LifecycleConfiguration": Object { - "Rules": Array [ - Object { + "LifecycleConfiguration": { + "Rules": [ + { "ExpirationInDays": 2555, "Status": "Enabled", - "Transitions": Array [ - Object { + "Transitions": [ + { "StorageClass": "GLACIER", "TransitionInDays": 90, }, @@ -2268,57 +2268,57 @@ Object { }, ], }, - "OwnershipControls": Object { - "Rules": Array [ - Object { + "OwnershipControls": { + "Rules": [ + { "ObjectOwnership": "ObjectWriter", }, ], }, - "PublicAccessBlockConfiguration": Object { + "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, - "VersioningConfiguration": Object { + "VersioningConfiguration": { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, - "LoggingCloudTrailAccessLogBucketPolicyE58866E2": Object { - "Properties": Object { - "Bucket": Object { + "LoggingCloudTrailAccessLogBucketPolicyE58866E2": { + "Properties": { + "Bucket": { "Ref": "LoggingCloudTrailAccessLogBucketA7B773C8", }, - "PolicyDocument": Object { - "Statement": Array [ - Object { + "PolicyDocument": { + "Statement": [ + { "Action": "s3:*", - "Condition": Object { - "Bool": Object { + "Condition": { + "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", - "Principal": Object { + "Principal": { "AWS": "*", }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "LoggingCloudTrailAccessLogBucketA7B773C8", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingCloudTrailAccessLogBucketA7B773C8", "Arn", ], @@ -2329,18 +2329,18 @@ Object { }, ], }, - Object { + { "Action": "s3:Delete*", "Effect": "Deny", - "Principal": Object { + "Principal": { "AWS": "*", }, - "Resource": Object { - "Fn::Join": Array [ + "Resource": { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingCloudTrailAccessLogBucketA7B773C8", "Arn", ], @@ -2357,60 +2357,60 @@ Object { }, "Type": "AWS::S3::BucketPolicy", }, - "LoggingCloudTrailBucket7560781D": Object { + "LoggingCloudTrailBucket7560781D": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "AccessControl": "Private", - "LoggingConfiguration": Object { - "DestinationBucketName": Object { + "LoggingConfiguration": { + "DestinationBucketName": { "Ref": "LoggingCloudTrailAccessLogBucketA7B773C8", }, "LogFilePrefix": "cloudtraillogs", }, - "PublicAccessBlockConfiguration": Object { + "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, - "VersioningConfiguration": Object { + "VersioningConfiguration": { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, - "LoggingCloudTrailBucketPolicy4004472F": Object { - "Properties": Object { - "Bucket": Object { + "LoggingCloudTrailBucketPolicy4004472F": { + "Properties": { + "Bucket": { "Ref": "LoggingCloudTrailBucket7560781D", }, - "PolicyDocument": Object { - "Statement": Array [ - Object { + "PolicyDocument": { + "Statement": [ + { "Action": "s3:*", - "Condition": Object { - "Bool": Object { + "Condition": { + "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", - "Principal": Object { + "Principal": { "AWS": "*", }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "LoggingCloudTrailBucket7560781D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingCloudTrailBucket7560781D", "Arn", ], @@ -2421,18 +2421,18 @@ Object { }, ], }, - Object { + { "Action": "s3:Delete*", "Effect": "Deny", - "Principal": Object { + "Principal": { "AWS": "*", }, - "Resource": Object { - "Fn::Join": Array [ + "Resource": { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingCloudTrailBucket7560781D", "Arn", ], @@ -2443,42 +2443,42 @@ Object { }, "Sid": "Restrict Delete* Actions", }, - Object { + { "Action": "s3:GetBucketAcl", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudtrail.amazonaws.com", }, - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "LoggingCloudTrailBucket7560781D", "Arn", ], }, }, - Object { + { "Action": "s3:PutObject", - "Condition": Object { - "StringEquals": Object { + "Condition": { + "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", }, }, "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudtrail.amazonaws.com", }, - "Resource": Object { - "Fn::Join": Array [ + "Resource": { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingCloudTrailBucket7560781D", "Arn", ], }, "/AWSLogs/", - Object { + { "Ref": "AWS::AccountId", }, "/*", @@ -2492,27 +2492,27 @@ Object { }, "Type": "AWS::S3::BucketPolicy", }, - "LoggingCloudTrailKey43327553": Object { + "LoggingCloudTrailKey43327553": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "Description": "BLEA Governance Base: CMK for CloudTrail", "EnableKeyRotation": true, - "KeyPolicy": Object { - "Statement": Array [ - Object { + "KeyPolicy": { + "Statement": [ + { "Action": "kms:*", "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::Join": Array [ + "Principal": { + "AWS": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::", - Object { + { "Ref": "AWS::AccountId", }, ":root", @@ -2522,17 +2522,17 @@ Object { }, "Resource": "*", }, - Object { + { "Action": "kms:GenerateDataKey*", - "Condition": Object { - "StringLike": Object { - "kms:EncryptionContext:aws:cloudtrail:arn": Array [ - Object { - "Fn::Join": Array [ + "Condition": { + "StringLike": { + "kms:EncryptionContext:aws:cloudtrail:arn": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:aws:cloudtrail:*:", - Object { + { "Ref": "AWS::AccountId", }, ":trail/*", @@ -2543,38 +2543,38 @@ Object { }, }, "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudtrail.amazonaws.com", }, "Resource": "*", }, - Object { + { "Action": "kms:DescribeKey", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudtrail.amazonaws.com", }, "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Decrypt", "kms:ReEncryptFrom", ], - "Condition": Object { - "StringEquals": Object { - "kms:CallerAccount": Object { + "Condition": { + "StringEquals": { + "kms:CallerAccount": { "Ref": "AWS::AccountId", }, }, - "StringLike": Object { - "kms:EncryptionContext:aws:cloudtrail:arn": Array [ - Object { - "Fn::Join": Array [ + "StringLike": { + "kms:EncryptionContext:aws:cloudtrail:arn": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:aws:cloudtrail:*:", - Object { + { "Ref": "AWS::AccountId", }, ":trail/*", @@ -2585,31 +2585,31 @@ Object { }, }, "Effect": "Allow", - "Principal": Object { + "Principal": { "AWS": "*", }, "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*", ], - "Condition": Object { - "ArnEquals": Object { - "kms:EncryptionContext:aws:logs:arn": Object { - "Fn::Join": Array [ + "Condition": { + "ArnEquals": { + "kms:EncryptionContext:aws:logs:arn": { + "Fn::Join": [ "", - Array [ + [ "arn:aws:logs:", - Object { + { "Ref": "AWS::Region", }, ":", - Object { + { "Ref": "AWS::AccountId", }, ":log-group:*", @@ -2619,17 +2619,17 @@ Object { }, }, "Effect": "Allow", - "Principal": Object { - "Service": Object { - "Fn::Join": Array [ + "Principal": { + "Service": { + "Fn::Join": [ "", - Array [ + [ "logs.", - Object { + { "Ref": "AWS::Region", }, ".", - Object { + { "Ref": "AWS::URLSuffix", }, ], @@ -2645,11 +2645,11 @@ Object { "Type": "AWS::KMS::Key", "UpdateReplacePolicy": "Retain", }, - "LoggingCloudTrailKeyAlias65A5FEEA": Object { - "Properties": Object { + "LoggingCloudTrailKeyAlias65A5FEEA": { + "Properties": { "AliasName": "alias/DevBLEABaseStandaloneLogging7164FEBB", - "TargetKeyId": Object { - "Fn::GetAtt": Array [ + "TargetKeyId": { + "Fn::GetAtt": [ "LoggingCloudTrailKey43327553", "Arn", ], @@ -2657,11 +2657,11 @@ Object { }, "Type": "AWS::KMS::Alias", }, - "LoggingCloudTrailLogGroupEFC12822": Object { + "LoggingCloudTrailLogGroupEFC12822": { "DeletionPolicy": "Retain", - "Properties": Object { - "KmsKeyId": Object { - "Fn::GetAtt": Array [ + "Properties": { + "KmsKeyId": { + "Fn::GetAtt": [ "LoggingCloudTrailKey43327553", "Arn", ], @@ -2671,18 +2671,18 @@ Object { "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, - "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "logs:PutLogEvents", "logs:CreateLogStream", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "LoggingCloudTrailLogGroupEFC12822", "Arn", ], @@ -2692,22 +2692,22 @@ Object { "Version": "2012-10-17", }, "PolicyName": "LoggingCloudTrailLogsRoleDefaultPolicy7A5B650C", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "LoggingCloudTrailLogsRoleE1DD6030", }, ], }, "Type": "AWS::IAM::Policy", }, - "LoggingCloudTrailLogsRoleE1DD6030": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "LoggingCloudTrailLogsRoleE1DD6030": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudtrail.amazonaws.com", }, }, @@ -2717,63 +2717,63 @@ Object { }, "Type": "AWS::IAM::Role", }, - "LoggingConfigBucket139B5174": Object { + "LoggingConfigBucket139B5174": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "AccessControl": "Private", - "BucketEncryption": Object { - "ServerSideEncryptionConfiguration": Array [ - Object { - "ServerSideEncryptionByDefault": Object { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { "SSEAlgorithm": "AES256", }, }, ], }, - "PublicAccessBlockConfiguration": Object { + "PublicAccessBlockConfiguration": { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, - "VersioningConfiguration": Object { + "VersioningConfiguration": { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, - "LoggingConfigBucketPolicy66A7F5E7": Object { - "Properties": Object { - "Bucket": Object { + "LoggingConfigBucketPolicy66A7F5E7": { + "Properties": { + "Bucket": { "Ref": "LoggingConfigBucket139B5174", }, - "PolicyDocument": Object { - "Statement": Array [ - Object { + "PolicyDocument": { + "Statement": [ + { "Action": "s3:*", - "Condition": Object { - "Bool": Object { + "Condition": { + "Bool": { "aws:SecureTransport": "false", }, }, "Effect": "Deny", - "Principal": Object { + "Principal": { "AWS": "*", }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "LoggingConfigBucket139B5174", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingConfigBucket139B5174", "Arn", ], @@ -2784,52 +2784,52 @@ Object { }, ], }, - Object { + { "Action": "s3:GetBucketAcl", "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ + "Principal": { + "AWS": { + "Fn::GetAtt": [ "LoggingConfigRole0E4FDF1F", "Arn", ], }, }, - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "LoggingConfigBucket139B5174", "Arn", ], }, }, - Object { + { "Action": "s3:PutObject", - "Condition": Object { - "StringEquals": Object { + "Condition": { + "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", }, }, "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ + "Principal": { + "AWS": { + "Fn::GetAtt": [ "LoggingConfigRole0E4FDF1F", "Arn", ], }, }, - "Resource": Object { - "Fn::Join": Array [ + "Resource": { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "LoggingConfigBucket139B5174", "Arn", ], }, "/AWSLogs/", - Object { + { "Ref": "AWS::AccountId", }, "/Config/*", @@ -2843,22 +2843,22 @@ Object { }, "Type": "AWS::S3::BucketPolicy", }, - "LoggingConfigDeliveryChannel44B4762B": Object { - "Properties": Object { - "S3BucketName": Object { + "LoggingConfigDeliveryChannel44B4762B": { + "Properties": { + "S3BucketName": { "Ref": "LoggingConfigBucket139B5174", }, }, "Type": "AWS::Config::DeliveryChannel", }, - "LoggingConfigRecorderFC55B19F": Object { - "Properties": Object { - "RecordingGroup": Object { + "LoggingConfigRecorderFC55B19F": { + "Properties": { + "RecordingGroup": { "AllSupported": true, "IncludeGlobalResourceTypes": true, }, - "RoleARN": Object { - "Fn::GetAtt": Array [ + "RoleARN": { + "Fn::GetAtt": [ "LoggingConfigRole0E4FDF1F", "Arn", ], @@ -2866,27 +2866,27 @@ Object { }, "Type": "AWS::Config::ConfigurationRecorder", }, - "LoggingConfigRole0E4FDF1F": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "LoggingConfigRole0E4FDF1F": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "config.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWS_ConfigRole", @@ -2897,58 +2897,58 @@ Object { }, "Type": "AWS::IAM::Role", }, - "NotificationChatbotChannel053BCEF2": Object { - "Properties": Object { + "NotificationChatbotChannel053BCEF2": { + "Properties": { "ConfigurationName": "DevBLEABaseStandaloneNotificationC6359BD8", - "IamRoleArn": Object { - "Fn::GetAtt": Array [ + "IamRoleArn": { + "Fn::GetAtt": [ "NotificationChatbotRole9B60F7B3", "Arn", ], }, "SlackChannelId": "C00XXXXXXXX", "SlackWorkspaceId": "T8XXXXXXX", - "SnsTopicArns": Array [ - Object { + "SnsTopicArns": [ + { "Ref": "DetectionAlarmTopic36C4BB55", }, ], }, "Type": "AWS::Chatbot::SlackChannelConfiguration", }, - "NotificationChatbotRole9B60F7B3": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "NotificationChatbotRole9B60F7B3": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "chatbot.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/ReadOnlyAccess", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchReadOnlyAccess", @@ -2960,22 +2960,22 @@ Object { "Type": "AWS::IAM::Role", }, }, - "Rules": Object { - "CheckBootstrapVersion": Object { - "Assertions": Array [ - Object { - "Assert": Object { - "Fn::Not": Array [ - Object { - "Fn::Contains": Array [ - Array [ + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ "1", "2", "3", "4", "5", ], - Object { + { "Ref": "BootstrapVersion", }, ], diff --git a/usecases/blea-guest-serverless-api-sample/test/__snapshots__/blea-guest-apiapp-nodejs-sample.test.ts.snap b/usecases/blea-guest-serverless-api-sample/test/__snapshots__/blea-guest-apiapp-nodejs-sample.test.ts.snap index 64703d038..05271c202 100644 --- a/usecases/blea-guest-serverless-api-sample/test/__snapshots__/blea-guest-apiapp-nodejs-sample.test.ts.snap +++ b/usecases/blea-guest-serverless-api-sample/test/__snapshots__/blea-guest-apiapp-nodejs-sample.test.ts.snap @@ -1,23 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Snapshot test for ServerlessApi Stack 1`] = ` -Object { - "Outputs": Object { - "ApiRestApiEndpoint4DEFB5CC": Object { - "Value": Object { - "Fn::Join": Array [ +{ + "Outputs": { + "ApiRestApiEndpoint4DEFB5CC": { + "Value": { + "Fn::Join": [ "", - Array [ + [ "https://", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, ".execute-api.ap-northeast-1.", - Object { + { "Ref": "AWS::URLSuffix", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/", @@ -26,26 +26,26 @@ Object { }, }, }, - "Parameters": Object { - "BootstrapVersion": Object { + "Parameters": { + "BootstrapVersion": { "Default": "/cdk-bootstrap/hnb659fds/version", "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", "Type": "AWS::SSM::Parameter::Value", }, }, - "Resources": Object { - "ApiAPIGatewayInvocationCountB691929A": Object { - "Properties": Object { + "Resources": { + "ApiAPIGatewayInvocationCountB691929A": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "ApiName", "Value": "RestApi", }, @@ -59,75 +59,75 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiApiGatewayLogGroup7BC2F58D": Object { + "ApiApiGatewayLogGroup7BC2F58D": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "RetentionInDays": 30, }, "Type": "AWS::Logs::LogGroup", "UpdateReplacePolicy": "Retain", }, - "ApiLambdaNodejsGetItemFunction690D1743": Object { - "DependsOn": Array [ + "ApiLambdaNodejsGetItemFunction690D1743": { + "DependsOn": [ "ApiLambdaNodejsGetItemFunctionServiceRoleDefaultPolicy47E2D438", "ApiLambdaNodejsGetItemFunctionServiceRoleE5916FAE", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, - "S3Key": "a616604aaa5cc7457cca5373a05c61891e93469ced11392a0cd056762c7c50aa.zip", + "S3Key": "0157fe07cfc88764efa12fcb763d754f369f10425465a09d15e1d590506494df.zip", }, - "Environment": Object { - "Variables": Object { + "Environment": { + "Variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1", - "DDB_TABLE": Object { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "index.getItem", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 256, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaNodejsGetItemFunctionServiceRoleE5916FAE", "Arn", ], }, "Runtime": "nodejs14.x", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaNodejsGetItemFunctionLogRetentionAEF27AB1": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaNodejsGetItemFunctionLogRetentionAEF27AB1": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaNodejsGetItemFunction690D1743", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -135,20 +135,20 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaNodejsGetItemFunctionServiceRoleDefaultPolicy47E2D438": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaNodejsGetItemFunctionServiceRoleDefaultPolicy47E2D438": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -156,32 +156,32 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { - "Action": Array [ + { + "Action": [ "dynamodb:Query", "dynamodb:GetItem", ], "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -196,47 +196,47 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaNodejsGetItemFunctionServiceRoleDefaultPolicy47E2D438", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaNodejsGetItemFunctionServiceRoleE5916FAE", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaNodejsGetItemFunctionServiceRoleE5916FAE": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaNodejsGetItemFunctionServiceRoleE5916FAE": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -247,67 +247,67 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaNodejsListItemsFunction7383885E": Object { - "DependsOn": Array [ + "ApiLambdaNodejsListItemsFunction7383885E": { + "DependsOn": [ "ApiLambdaNodejsListItemsFunctionServiceRoleDefaultPolicy79E6AC10", "ApiLambdaNodejsListItemsFunctionServiceRole568FA032", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, - "S3Key": "0d9e5c676e6afe9e67a4e2ec1973be8d83308ef75062c2a39b03be6da1d6dcb3.zip", + "S3Key": "1e9ca361a3f211f391de1a63a75aa25053dbf11ebf7b6ad57020c9d08caeafa5.zip", }, - "Environment": Object { - "Variables": Object { + "Environment": { + "Variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1", - "DDB_TABLE": Object { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "index.listItems", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 256, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaNodejsListItemsFunctionServiceRole568FA032", "Arn", ], }, "Runtime": "nodejs14.x", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaNodejsListItemsFunctionLogRetention28222FF3": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaNodejsListItemsFunctionLogRetention28222FF3": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaNodejsListItemsFunction7383885E", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -315,39 +315,39 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaNodejsListItemsFunctionServiceRole568FA032": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaNodejsListItemsFunctionServiceRole568FA032": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -358,20 +358,20 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaNodejsListItemsFunctionServiceRoleDefaultPolicy79E6AC10": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaNodejsListItemsFunctionServiceRoleDefaultPolicy79E6AC10": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -379,32 +379,32 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { - "Action": Array [ + { + "Action": [ "dynamodb:Query", "dynamodb:Scan", ], "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -419,75 +419,75 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaNodejsListItemsFunctionServiceRoleDefaultPolicy79E6AC10", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaNodejsListItemsFunctionServiceRole568FA032", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaNodejsPutItemFunctionFC2FA584": Object { - "DependsOn": Array [ + "ApiLambdaNodejsPutItemFunctionFC2FA584": { + "DependsOn": [ "ApiLambdaNodejsPutItemFunctionServiceRoleDefaultPolicy04245F1A", "ApiLambdaNodejsPutItemFunctionServiceRoleB67323AE", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, - "S3Key": "da011cc76728148664f8d21f1fb5767cc8c16ccefedd41942eae64a6135e4699.zip", + "S3Key": "17b346b18d1dd1c466b1915e9cd7962315bf33dabe5eabff497ee1eef6315afd.zip", }, - "Environment": Object { - "Variables": Object { + "Environment": { + "Variables": { "AWS_NODEJS_CONNECTION_REUSE_ENABLED": "1", - "DDB_TABLE": Object { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "index.putItem", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 256, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaNodejsPutItemFunctionServiceRoleB67323AE", "Arn", ], }, "Runtime": "nodejs14.x", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaNodejsPutItemFunctionLogRetentionF06A63D6": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaNodejsPutItemFunctionLogRetentionF06A63D6": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaNodejsPutItemFunctionFC2FA584", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -495,39 +495,39 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaNodejsPutItemFunctionServiceRoleB67323AE": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaNodejsPutItemFunctionServiceRoleB67323AE": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -538,20 +538,20 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaNodejsPutItemFunctionServiceRoleDefaultPolicy04245F1A": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaNodejsPutItemFunctionServiceRoleDefaultPolicy04245F1A": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -559,29 +559,29 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { + { "Action": "dynamodb:PutItem", "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -596,28 +596,28 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaNodejsPutItemFunctionServiceRoleDefaultPolicy04245F1A", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaNodejsPutItemFunctionServiceRoleB67323AE", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaNodejsgetItemConcurrentExecutionsAlarmFFA1BD91": Object { - "Properties": Object { + "ApiLambdaNodejsgetItemConcurrentExecutionsAlarmFFA1BD91": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsGetItemFunction690D1743", }, }, @@ -631,20 +631,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsgetItemDurationAlarm5EA5942E": Object { - "Properties": Object { + "ApiLambdaNodejsgetItemDurationAlarm5EA5942E": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsGetItemFunction690D1743", }, }, @@ -658,20 +658,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsgetItemErrorsAlarm5A5A18BF": Object { - "Properties": Object { + "ApiLambdaNodejsgetItemErrorsAlarm5A5A18BF": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsGetItemFunction690D1743", }, }, @@ -685,20 +685,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsgetItemThrottlesAlarmB352F6E5": Object { - "Properties": Object { + "ApiLambdaNodejsgetItemThrottlesAlarmB352F6E5": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsGetItemFunction690D1743", }, }, @@ -712,20 +712,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejslistItemsConcurrentExecutionsAlarmD2695C91": Object { - "Properties": Object { + "ApiLambdaNodejslistItemsConcurrentExecutionsAlarmD2695C91": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsListItemsFunction7383885E", }, }, @@ -739,20 +739,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejslistItemsDurationAlarmEE962444": Object { - "Properties": Object { + "ApiLambdaNodejslistItemsDurationAlarmEE962444": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsListItemsFunction7383885E", }, }, @@ -766,20 +766,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejslistItemsErrorsExecutionsAlarm509E4CEC": Object { - "Properties": Object { + "ApiLambdaNodejslistItemsErrorsExecutionsAlarm509E4CEC": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsListItemsFunction7383885E", }, }, @@ -793,20 +793,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejslistItemsThrottlesAlarm9C26D78C": Object { - "Properties": Object { + "ApiLambdaNodejslistItemsThrottlesAlarm9C26D78C": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsListItemsFunction7383885E", }, }, @@ -820,20 +820,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsputItemConcurrentExecutionsAlarm96A1F417": Object { - "Properties": Object { + "ApiLambdaNodejsputItemConcurrentExecutionsAlarm96A1F417": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsPutItemFunctionFC2FA584", }, }, @@ -847,20 +847,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsputItemDurationAlarm4DEC7925": Object { - "Properties": Object { + "ApiLambdaNodejsputItemDurationAlarm4DEC7925": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsPutItemFunctionFC2FA584", }, }, @@ -874,20 +874,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsputItemErrorsAlarmB59BB9FA": Object { - "Properties": Object { + "ApiLambdaNodejsputItemErrorsAlarmB59BB9FA": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsPutItemFunctionFC2FA584", }, }, @@ -901,20 +901,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaNodejsputItemThrottlesAlarmDA173E04": Object { - "Properties": Object { + "ApiLambdaNodejsputItemThrottlesAlarmDA173E04": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaNodejsPutItemFunctionFC2FA584", }, }, @@ -928,67 +928,67 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonGetItemFunction7F81F93B": Object { - "DependsOn": Array [ + "ApiLambdaPythonGetItemFunction7F81F93B": { + "DependsOn": [ "ApiLambdaPythonGetItemFunctionServiceRoleDefaultPolicy550CE002", "ApiLambdaPythonGetItemFunctionServiceRole87970B01", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, "S3Key": "6c6248559cf324952895870a3b546cf7cbfbafe0cce9e4a60bc61e6ec8eef051.zip", }, - "Environment": Object { - "Variables": Object { - "DDB_TABLE": Object { + "Environment": { + "Variables": { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "getItem.lambda_handler", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:017000801446:layer:AWSLambdaPowertoolsPython:3", "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 256, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaPythonGetItemFunctionServiceRole87970B01", "Arn", ], }, "Runtime": "python3.7", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaPythonGetItemFunctionLogRetentionBA7F7CC2": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaPythonGetItemFunctionLogRetentionBA7F7CC2": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaPythonGetItemFunction7F81F93B", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -996,39 +996,39 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaPythonGetItemFunctionServiceRole87970B01": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaPythonGetItemFunctionServiceRole87970B01": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -1039,20 +1039,20 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaPythonGetItemFunctionServiceRoleDefaultPolicy550CE002": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaPythonGetItemFunctionServiceRoleDefaultPolicy550CE002": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -1060,32 +1060,32 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { - "Action": Array [ + { + "Action": [ "dynamodb:Query", "dynamodb:GetItem", ], "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -1100,75 +1100,75 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaPythonGetItemFunctionServiceRoleDefaultPolicy550CE002", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaPythonGetItemFunctionServiceRole87970B01", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaPythonListItemsFunction6E2E7058": Object { - "DependsOn": Array [ + "ApiLambdaPythonListItemsFunction6E2E7058": { + "DependsOn": [ "ApiLambdaPythonListItemsFunctionServiceRoleDefaultPolicy365FE2DB", "ApiLambdaPythonListItemsFunctionServiceRoleD3B9A3A3", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, "S3Key": "9935294482ff6ee39a0af20cfbf740c113a6d493e51300bfd6e98e85e6e9f360.zip", }, - "Environment": Object { - "Variables": Object { - "DDB_TABLE": Object { + "Environment": { + "Variables": { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "listItems.lambda_handler", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:017000801446:layer:AWSLambdaPowertoolsPython:3", "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 2048, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaPythonListItemsFunctionServiceRoleD3B9A3A3", "Arn", ], }, "Runtime": "python3.7", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaPythonListItemsFunctionLogRetention4AAEE7BC": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaPythonListItemsFunctionLogRetention4AAEE7BC": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaPythonListItemsFunction6E2E7058", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -1176,39 +1176,39 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaPythonListItemsFunctionServiceRoleD3B9A3A3": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaPythonListItemsFunctionServiceRoleD3B9A3A3": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -1219,20 +1219,20 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaPythonListItemsFunctionServiceRoleDefaultPolicy365FE2DB": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaPythonListItemsFunctionServiceRoleDefaultPolicy365FE2DB": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -1240,32 +1240,32 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { - "Action": Array [ + { + "Action": [ "dynamodb:Query", "dynamodb:Scan", ], "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -1280,75 +1280,75 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaPythonListItemsFunctionServiceRoleDefaultPolicy365FE2DB", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaPythonListItemsFunctionServiceRoleD3B9A3A3", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaPythonPutItemFunction0EA5A227": Object { - "DependsOn": Array [ + "ApiLambdaPythonPutItemFunction0EA5A227": { + "DependsOn": [ "ApiLambdaPythonPutItemFunctionServiceRoleDefaultPolicyBA2B5B41", "ApiLambdaPythonPutItemFunctionServiceRole2AD40DC0", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, "S3Key": "dc0a332c2c8fb4d4e7977a51466ff04fda2926977fd3f496acfa00722ded9563.zip", }, - "Environment": Object { - "Variables": Object { - "DDB_TABLE": Object { + "Environment": { + "Variables": { + "DDB_TABLE": { "Ref": "DatastoreTable6900098D", }, }, }, "Handler": "putItem.lambda_handler", - "KmsKeyArn": Object { - "Fn::GetAtt": Array [ + "KmsKeyArn": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, - "Layers": Array [ + "Layers": [ "arn:aws:lambda:ap-northeast-1:017000801446:layer:AWSLambdaPowertoolsPython:3", "arn:aws:lambda:ap-northeast-1:580247275435:layer:LambdaInsightsExtension:14", ], "MemorySize": 256, - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "ApiLambdaPythonPutItemFunctionServiceRole2AD40DC0", "Arn", ], }, "Runtime": "python3.7", "Timeout": 25, - "TracingConfig": Object { + "TracingConfig": { "Mode": "Active", }, }, "Type": "AWS::Lambda::Function", }, - "ApiLambdaPythonPutItemFunctionLogRetention1C3D6644": Object { - "Properties": Object { - "LogGroupName": Object { - "Fn::Join": Array [ + "ApiLambdaPythonPutItemFunctionLogRetention1C3D6644": { + "Properties": { + "LogGroupName": { + "Fn::Join": [ "", - Array [ + [ "/aws/lambda/", - Object { + { "Ref": "ApiLambdaPythonPutItemFunction0EA5A227", }, ], ], }, "RetentionInDays": 90, - "ServiceToken": Object { - "Fn::GetAtt": Array [ + "ServiceToken": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A", "Arn", ], @@ -1356,39 +1356,39 @@ Object { }, "Type": "Custom::LogRetention", }, - "ApiLambdaPythonPutItemFunctionServiceRole2AD40DC0": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "ApiLambdaPythonPutItemFunctionServiceRole2AD40DC0": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy", @@ -1399,20 +1399,20 @@ Object { }, "Type": "AWS::IAM::Role", }, - "ApiLambdaPythonPutItemFunctionServiceRoleDefaultPolicyBA2B5B41": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "ApiLambdaPythonPutItemFunctionServiceRoleDefaultPolicyBA2B5B41": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", ], "Effect": "Allow", "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", @@ -1420,29 +1420,29 @@ Object { "kms:Describe*", ], "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ + "Resource": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], }, }, - Object { + { "Action": "dynamodb:PutItem", "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ + "Resource": [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ - Object { - "Fn::GetAtt": Array [ + [ + { + "Fn::GetAtt": [ "DatastoreTable6900098D", "Arn", ], @@ -1457,28 +1457,28 @@ Object { "Version": "2012-10-17", }, "PolicyName": "ApiLambdaPythonPutItemFunctionServiceRoleDefaultPolicyBA2B5B41", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "ApiLambdaPythonPutItemFunctionServiceRole2AD40DC0", }, ], }, "Type": "AWS::IAM::Policy", }, - "ApiLambdaPythongetItemConcurrentExecutionsAlarm09E169A6": Object { - "Properties": Object { + "ApiLambdaPythongetItemConcurrentExecutionsAlarm09E169A6": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonGetItemFunction7F81F93B", }, }, @@ -1492,20 +1492,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythongetItemDurationAlarmD9B0D891": Object { - "Properties": Object { + "ApiLambdaPythongetItemDurationAlarmD9B0D891": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonGetItemFunction7F81F93B", }, }, @@ -1519,20 +1519,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythongetItemErrorsAlarm1636EC90": Object { - "Properties": Object { + "ApiLambdaPythongetItemErrorsAlarm1636EC90": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonGetItemFunction7F81F93B", }, }, @@ -1546,20 +1546,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythongetItemThrottlesAlarm34456187": Object { - "Properties": Object { + "ApiLambdaPythongetItemThrottlesAlarm34456187": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonGetItemFunction7F81F93B", }, }, @@ -1573,20 +1573,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonlistItemsConcurrentExecutionsAlarm307F2F04": Object { - "Properties": Object { + "ApiLambdaPythonlistItemsConcurrentExecutionsAlarm307F2F04": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonListItemsFunction6E2E7058", }, }, @@ -1600,20 +1600,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonlistItemsDurationAlarm8D3DC059": Object { - "Properties": Object { + "ApiLambdaPythonlistItemsDurationAlarm8D3DC059": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonListItemsFunction6E2E7058", }, }, @@ -1627,20 +1627,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonlistItemsErrorsExecutionsAlarm50F77830": Object { - "Properties": Object { + "ApiLambdaPythonlistItemsErrorsExecutionsAlarm50F77830": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonListItemsFunction6E2E7058", }, }, @@ -1654,20 +1654,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonlistItemsThrottlesAlarm6969E734": Object { - "Properties": Object { + "ApiLambdaPythonlistItemsThrottlesAlarm6969E734": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonListItemsFunction6E2E7058", }, }, @@ -1681,20 +1681,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonputItemConcurrentExecutionsAlarmA11DBC15": Object { - "Properties": Object { + "ApiLambdaPythonputItemConcurrentExecutionsAlarmA11DBC15": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonPutItemFunction0EA5A227", }, }, @@ -1708,20 +1708,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonputItemDurationAlarm3B22CCB7": Object { - "Properties": Object { + "ApiLambdaPythonputItemDurationAlarm3B22CCB7": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonPutItemFunction0EA5A227", }, }, @@ -1735,20 +1735,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonputItemErrorsAlarm6023E1EC": Object { - "Properties": Object { + "ApiLambdaPythonputItemErrorsAlarm6023E1EC": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonPutItemFunction0EA5A227", }, }, @@ -1762,20 +1762,20 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiLambdaPythonputItemThrottlesAlarm7981B2AC": Object { - "Properties": Object { + "ApiLambdaPythonputItemThrottlesAlarm7981B2AC": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "FunctionName", - "Value": Object { + "Value": { "Ref": "ApiLambdaPythonPutItemFunction0EA5A227", }, }, @@ -1789,14 +1789,14 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "ApiRestApiAccount598A1DA6": Object { + "ApiRestApiAccount598A1DA6": { "DeletionPolicy": "Retain", - "DependsOn": Array [ + "DependsOn": [ "ApiRestApiE35FEAFE", ], - "Properties": Object { - "CloudWatchRoleArn": Object { - "Fn::GetAtt": Array [ + "Properties": { + "CloudWatchRoleArn": { + "Fn::GetAtt": [ "ApiRestApiCloudWatchRoleB7879BFC", "Arn", ], @@ -1805,28 +1805,28 @@ Object { "Type": "AWS::ApiGateway::Account", "UpdateReplacePolicy": "Retain", }, - "ApiRestApiCloudWatchRoleB7879BFC": Object { + "ApiRestApiCloudWatchRoleB7879BFC": { "DeletionPolicy": "Retain", - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "apigateway.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs", @@ -1838,8 +1838,8 @@ Object { "Type": "AWS::IAM::Role", "UpdateReplacePolicy": "Retain", }, - "ApiRestApiDeploymentDC05A82D897c301a1bec5a379eebd5094efed118": Object { - "DependsOn": Array [ + "ApiRestApiDeploymentDC05A82D897c301a1bec5a379eebd5094efed118": { + "DependsOn": [ "ApiRestApinodejsitemtitleGETC0EE8F85", "ApiRestApinodejsitemtitle29B62070", "ApiRestApinodejsitemPOST296B5713", @@ -1855,33 +1855,33 @@ Object { "ApiRestApipythonlist4EC12D2C", "ApiRestApipython2F6D6644", ], - "Properties": Object { + "Properties": { "Description": "Automatically created by the RestApi construct", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Deployment", }, - "ApiRestApiDeploymentStageprodE828476C": Object { - "DependsOn": Array [ + "ApiRestApiDeploymentStageprodE828476C": { + "DependsOn": [ "ApiRestApiAccount598A1DA6", ], - "Properties": Object { - "AccessLogSetting": Object { - "DestinationArn": Object { - "Fn::GetAtt": Array [ + "Properties": { + "AccessLogSetting": { + "DestinationArn": { + "Fn::GetAtt": [ "ApiApiGatewayLogGroup7BC2F58D", "Arn", ], }, - "Format": "{\\"requestId\\":\\"$context.requestId\\",\\"ip\\":\\"$context.identity.sourceIp\\",\\"user\\":\\"$context.identity.user\\",\\"caller\\":\\"$context.identity.caller\\",\\"requestTime\\":\\"$context.requestTime\\",\\"httpMethod\\":\\"$context.httpMethod\\",\\"resourcePath\\":\\"$context.resourcePath\\",\\"status\\":\\"$context.status\\",\\"protocol\\":\\"$context.protocol\\",\\"responseLength\\":\\"$context.responseLength\\"}", + "Format": "{"requestId":"$context.requestId","ip":"$context.identity.sourceIp","user":"$context.identity.user","caller":"$context.identity.caller","requestTime":"$context.requestTime","httpMethod":"$context.httpMethod","resourcePath":"$context.resourcePath","status":"$context.status","protocol":"$context.protocol","responseLength":"$context.responseLength"}", }, - "DeploymentId": Object { + "DeploymentId": { "Ref": "ApiRestApiDeploymentDC05A82D897c301a1bec5a379eebd5094efed118", }, - "MethodSettings": Array [ - Object { + "MethodSettings": [ + { "DataTraceEnabled": false, "HttpMethod": "*", "LoggingLevel": "INFO", @@ -1889,7 +1889,7 @@ Object { "ResourcePath": "/*", }, ], - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, "StageName": "prod", @@ -1897,57 +1897,57 @@ Object { }, "Type": "AWS::ApiGateway::Stage", }, - "ApiRestApiE35FEAFE": Object { - "Properties": Object { + "ApiRestApiE35FEAFE": { + "Properties": { "Name": "RestApi", }, "Type": "AWS::ApiGateway::RestApi", }, - "ApiRestApinodejsD890E984": Object { - "Properties": Object { - "ParentId": Object { - "Fn::GetAtt": Array [ + "ApiRestApinodejsD890E984": { + "Properties": { + "ParentId": { + "Fn::GetAtt": [ "ApiRestApiE35FEAFE", "RootResourceId", ], }, "PathPart": "nodejs", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApinodejsitemB718EB4B": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApinodejsitemB718EB4B": { + "Properties": { + "ParentId": { "Ref": "ApiRestApinodejsD890E984", }, "PathPart": "item", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApinodejsitemPOST296B5713": Object { - "Properties": Object { + "ApiRestApinodejsitemPOST296B5713": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "POST", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaNodejsPutItemFunctionFC2FA584", "Arn", ], @@ -1957,43 +1957,43 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApinodejsitemB718EB4B", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApinodejsitemPOSTApiPermissionDevBLEAServerlessApiRestApiEBE3BF9APOSTnodejsitem1DBCEB01": Object { - "Properties": Object { + "ApiRestApinodejsitemPOSTApiPermissionDevBLEAServerlessApiRestApiEBE3BF9APOSTnodejsitem1DBCEB01": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsPutItemFunctionFC2FA584", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/POST/nodejs/item", @@ -2003,30 +2003,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApinodejsitemPOSTApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9APOSTnodejsitem1523F9C5": Object { - "Properties": Object { + "ApiRestApinodejsitemPOSTApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9APOSTnodejsitem1523F9C5": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsPutItemFunctionFC2FA584", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/POST/nodejs/item", @@ -2036,46 +2036,46 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApinodejsitemtitle29B62070": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApinodejsitemtitle29B62070": { + "Properties": { + "ParentId": { "Ref": "ApiRestApinodejsitemB718EB4B", }, "PathPart": "{title}", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApinodejsitemtitleGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETnodejsitemtitle81B2BFF3": Object { - "Properties": Object { + "ApiRestApinodejsitemtitleGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETnodejsitemtitle81B2BFF3": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsGetItemFunction690D1743", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/GET/nodejs/item/*", @@ -2085,30 +2085,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApinodejsitemtitleGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETnodejsitemtitleB659ABEB": Object { - "Properties": Object { + "ApiRestApinodejsitemtitleGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETnodejsitemtitleB659ABEB": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsGetItemFunction690D1743", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/GET/nodejs/item/*", @@ -2118,24 +2118,24 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApinodejsitemtitleGETC0EE8F85": Object { - "Properties": Object { + "ApiRestApinodejsitemtitleGETC0EE8F85": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "GET", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaNodejsGetItemFunction690D1743", "Arn", ], @@ -2145,45 +2145,45 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApinodejsitemtitle29B62070", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApinodejslistEE136EF7": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApinodejslistEE136EF7": { + "Properties": { + "ParentId": { "Ref": "ApiRestApinodejsD890E984", }, "PathPart": "list", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApinodejslistGET729AFFC7": Object { - "Properties": Object { + "ApiRestApinodejslistGET729AFFC7": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "GET", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaNodejsListItemsFunction7383885E", "Arn", ], @@ -2193,43 +2193,43 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApinodejslistEE136EF7", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApinodejslistGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETnodejslist5B482CF3": Object { - "Properties": Object { + "ApiRestApinodejslistGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETnodejslist5B482CF3": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsListItemsFunction7383885E", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/GET/nodejs/list", @@ -2239,30 +2239,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApinodejslistGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETnodejslist5E7FE9FC": Object { - "Properties": Object { + "ApiRestApinodejslistGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETnodejslist5E7FE9FC": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaNodejsListItemsFunction7383885E", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/GET/nodejs/list", @@ -2272,51 +2272,51 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipython2F6D6644": Object { - "Properties": Object { - "ParentId": Object { - "Fn::GetAtt": Array [ + "ApiRestApipython2F6D6644": { + "Properties": { + "ParentId": { + "Fn::GetAtt": [ "ApiRestApiE35FEAFE", "RootResourceId", ], }, "PathPart": "python", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApipythonitemF1EBD3B9": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApipythonitemF1EBD3B9": { + "Properties": { + "ParentId": { "Ref": "ApiRestApipython2F6D6644", }, "PathPart": "item", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApipythonitemPOST15FD049D": Object { - "Properties": Object { + "ApiRestApipythonitemPOST15FD049D": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "POST", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaPythonPutItemFunction0EA5A227", "Arn", ], @@ -2326,43 +2326,43 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApipythonitemF1EBD3B9", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApipythonitemPOSTApiPermissionDevBLEAServerlessApiRestApiEBE3BF9APOSTpythonitem5761D1B8": Object { - "Properties": Object { + "ApiRestApipythonitemPOSTApiPermissionDevBLEAServerlessApiRestApiEBE3BF9APOSTpythonitem5761D1B8": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonPutItemFunction0EA5A227", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/POST/python/item", @@ -2372,30 +2372,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipythonitemPOSTApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9APOSTpythonitem715A3E20": Object { - "Properties": Object { + "ApiRestApipythonitemPOSTApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9APOSTpythonitem715A3E20": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonPutItemFunction0EA5A227", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/POST/python/item", @@ -2405,36 +2405,36 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipythonitemtitle896EFCA5": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApipythonitemtitle896EFCA5": { + "Properties": { + "ParentId": { "Ref": "ApiRestApipythonitemF1EBD3B9", }, "PathPart": "{title}", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApipythonitemtitleGET4BA7981E": Object { - "Properties": Object { + "ApiRestApipythonitemtitleGET4BA7981E": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "GET", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaPythonGetItemFunction7F81F93B", "Arn", ], @@ -2444,43 +2444,43 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApipythonitemtitle896EFCA5", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApipythonitemtitleGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETpythonitemtitle9380763F": Object { - "Properties": Object { + "ApiRestApipythonitemtitleGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETpythonitemtitle9380763F": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonGetItemFunction7F81F93B", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/GET/python/item/*", @@ -2490,30 +2490,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipythonitemtitleGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETpythonitemtitleE2FDEC9D": Object { - "Properties": Object { + "ApiRestApipythonitemtitleGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETpythonitemtitleE2FDEC9D": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonGetItemFunction7F81F93B", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/GET/python/item/*", @@ -2523,36 +2523,36 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipythonlist4EC12D2C": Object { - "Properties": Object { - "ParentId": Object { + "ApiRestApipythonlist4EC12D2C": { + "Properties": { + "ParentId": { "Ref": "ApiRestApipython2F6D6644", }, "PathPart": "list", - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Resource", }, - "ApiRestApipythonlistGETA946A0F8": Object { - "Properties": Object { + "ApiRestApipythonlistGETA946A0F8": { + "Properties": { "AuthorizationType": "NONE", "HttpMethod": "GET", - "Integration": Object { + "Integration": { "IntegrationHttpMethod": "POST", "Type": "AWS_PROXY", - "Uri": Object { - "Fn::Join": Array [ + "Uri": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":apigateway:ap-northeast-1:lambda:path/2015-03-31/functions/", - Object { - "Fn::GetAtt": Array [ + { + "Fn::GetAtt": [ "ApiLambdaPythonListItemsFunction6E2E7058", "Arn", ], @@ -2562,43 +2562,43 @@ Object { ], }, }, - "ResourceId": Object { + "ResourceId": { "Ref": "ApiRestApipythonlist4EC12D2C", }, - "RestApiId": Object { + "RestApiId": { "Ref": "ApiRestApiE35FEAFE", }, }, "Type": "AWS::ApiGateway::Method", }, - "ApiRestApipythonlistGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETpythonlist6FD5F4CB": Object { - "Properties": Object { + "ApiRestApipythonlistGETApiPermissionDevBLEAServerlessApiRestApiEBE3BF9AGETpythonlist6FD5F4CB": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonListItemsFunction6E2E7058", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/", - Object { + { "Ref": "ApiRestApiDeploymentStageprodE828476C", }, "/GET/python/list", @@ -2608,30 +2608,30 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "ApiRestApipythonlistGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETpythonlistC2B18F06": Object { - "Properties": Object { + "ApiRestApipythonlistGETApiPermissionTestDevBLEAServerlessApiRestApiEBE3BF9AGETpythonlistC2B18F06": { + "Properties": { "Action": "lambda:InvokeFunction", - "FunctionName": Object { - "Fn::GetAtt": Array [ + "FunctionName": { + "Fn::GetAtt": [ "ApiLambdaPythonListItemsFunction6E2E7058", "Arn", ], }, "Principal": "apigateway.amazonaws.com", - "SourceArn": Object { - "Fn::Join": Array [ + "SourceArn": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":execute-api:ap-northeast-1:", - Object { + { "Ref": "AWS::AccountId", }, ":", - Object { + { "Ref": "ApiRestApiE35FEAFE", }, "/test-invoke-stage/GET/python/list", @@ -2641,27 +2641,27 @@ Object { }, "Type": "AWS::Lambda::Permission", }, - "CMK56817A4C": Object { + "CMK56817A4C": { "DeletionPolicy": "Retain", - "Properties": Object { + "Properties": { "Description": "BLEA Guest Sample: CMK for ServerlessApi", "EnableKeyRotation": true, - "KeyPolicy": Object { - "Statement": Array [ - Object { + "KeyPolicy": { + "Statement": [ + { "Action": "kms:*", "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::Join": Array [ + "Principal": { + "AWS": { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::", - Object { + { "Ref": "AWS::AccountId", }, ":root", @@ -2671,22 +2671,22 @@ Object { }, "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*", ], - "Condition": Object { - "ArnLike": Object { - "aws:PrincipalArn": Object { - "Fn::Join": Array [ + "Condition": { + "ArnLike": { + "aws:PrincipalArn": { + "Fn::Join": [ "", - Array [ + [ "arn:aws:iam::", - Object { + { "Ref": "AWS::AccountId", }, ":role/BLEA-LambdaNodejs-*", @@ -2696,27 +2696,27 @@ Object { }, }, "Effect": "Allow", - "Principal": Object { + "Principal": { "AWS": "*", }, "Resource": "*", }, - Object { - "Action": Array [ + { + "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*", ], - "Condition": Object { - "ArnLike": Object { - "aws:PrincipalArn": Object { - "Fn::Join": Array [ + "Condition": { + "ArnLike": { + "aws:PrincipalArn": { + "Fn::Join": [ "", - Array [ + [ "arn:aws:iam::", - Object { + { "Ref": "AWS::AccountId", }, ":role/BLEA-LambdaPython-*", @@ -2726,7 +2726,7 @@ Object { }, }, "Effect": "Allow", - "Principal": Object { + "Principal": { "AWS": "*", }, "Resource": "*", @@ -2738,11 +2738,11 @@ Object { "Type": "AWS::KMS::Key", "UpdateReplacePolicy": "Retain", }, - "CMKAliasFD5A95C9": Object { - "Properties": Object { + "CMKAliasFD5A95C9": { + "Properties": { "AliasName": "alias/DevBLEAServerlessApi", - "TargetKeyId": Object { - "Fn::GetAtt": Array [ + "TargetKeyId": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], @@ -2750,20 +2750,20 @@ Object { }, "Type": "AWS::KMS::Alias", }, - "DatastoreDynamoConsumedReadCapacityUnitE16CED8A": Object { - "Properties": Object { + "DatastoreDynamoConsumedReadCapacityUnitE16CED8A": { + "Properties": { "ActionsEnabled": true, - "AlarmActions": Array [ - Object { + "AlarmActions": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], "ComparisonOperator": "GreaterThanOrEqualToThreshold", "DatapointsToAlarm": 3, - "Dimensions": Array [ - Object { + "Dimensions": [ + { "Name": "TableName", - "Value": Object { + "Value": { "Ref": "DatastoreTable6900098D", }, }, @@ -2777,55 +2777,55 @@ Object { }, "Type": "AWS::CloudWatch::Alarm", }, - "DatastoreTable6900098D": Object { + "DatastoreTable6900098D": { "DeletionPolicy": "Retain", - "Properties": Object { - "AttributeDefinitions": Array [ - Object { + "Properties": { + "AttributeDefinitions": [ + { "AttributeName": "title", "AttributeType": "S", }, - Object { + { "AttributeName": "content", "AttributeType": "S", }, - Object { + { "AttributeName": "createdAt", "AttributeType": "S", }, ], "BillingMode": "PAY_PER_REQUEST", - "KeySchema": Array [ - Object { + "KeySchema": [ + { "AttributeName": "title", "KeyType": "HASH", }, - Object { + { "AttributeName": "content", "KeyType": "RANGE", }, ], - "LocalSecondaryIndexes": Array [ - Object { + "LocalSecondaryIndexes": [ + { "IndexName": "CreatedAtLSI", - "KeySchema": Array [ - Object { + "KeySchema": [ + { "AttributeName": "title", "KeyType": "HASH", }, - Object { + { "AttributeName": "createdAt", "KeyType": "RANGE", }, ], - "Projection": Object { + "Projection": { "ProjectionType": "ALL", }, }, ], - "SSESpecification": Object { - "KMSMasterKeyId": Object { - "Fn::GetAtt": Array [ + "SSESpecification": { + "KMSMasterKeyId": { + "Fn::GetAtt": [ "CMK56817A4C", "Arn", ], @@ -2837,50 +2837,51 @@ Object { "Type": "AWS::DynamoDB::Table", "UpdateReplacePolicy": "Retain", }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": Object { - "DependsOn": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aFD4BFC8A": { + "DependsOn": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", ], - "Properties": Object { - "Code": Object { - "S3Bucket": Object { + "Properties": { + "Code": { + "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-ap-northeast-1", }, - "S3Key": "5fa1330271b8967d9254ba2d4a07144f8acefe8b77e6d6bba38261373a50d5f8.zip", + "S3Key": "5bc602ecde93c947efe5899ae355f999986a1acbe610b1c0b9c468d738857555.zip", }, "Handler": "index.handler", - "Role": Object { - "Fn::GetAtt": Array [ + "Role": { + "Fn::GetAtt": [ "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", "Arn", ], }, - "Runtime": "nodejs16.x", + "Runtime": "nodejs18.x", + "Timeout": 900, }, "Type": "AWS::Lambda::Function", }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", @@ -2891,12 +2892,12 @@ Object { }, "Type": "AWS::IAM::Role", }, - "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ + "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ "logs:PutRetentionPolicy", "logs:DeleteRetentionPolicy", ], @@ -2907,28 +2908,28 @@ Object { "Version": "2012-10-17", }, "PolicyName": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRoleDefaultPolicyADDA7DEB", - "Roles": Array [ - Object { + "Roles": [ + { "Ref": "LogRetentionaae0aa3c5b4d4f87b02d85b201efdd8aServiceRole9741ECFB", }, ], }, "Type": "AWS::IAM::Policy", }, - "MonitoringAlarmTopicAF62D4F1": Object { + "MonitoringAlarmTopicAF62D4F1": { "Type": "AWS::SNS::Topic", }, - "MonitoringAlarmTopicPolicyCB9CCFB0": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { + "MonitoringAlarmTopicPolicyCB9CCFB0": { + "Properties": { + "PolicyDocument": { + "Statement": [ + { "Action": "sns:Publish", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "cloudwatch.amazonaws.com", }, - "Resource": Object { + "Resource": { "Ref": "MonitoringAlarmTopicAF62D4F1", }, "Sid": "0", @@ -2936,66 +2937,66 @@ Object { ], "Version": "2012-10-17", }, - "Topics": Array [ - Object { + "Topics": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], }, "Type": "AWS::SNS::TopicPolicy", }, - "MonitoringChatbotChannel3696F0E4": Object { - "Properties": Object { + "MonitoringChatbotChannel3696F0E4": { + "Properties": { "ConfigurationName": "DevBLEAServerlessApiMonitoring9149EEBF", - "IamRoleArn": Object { - "Fn::GetAtt": Array [ + "IamRoleArn": { + "Fn::GetAtt": [ "MonitoringChatbotRoleD766A77D", "Arn", ], }, "SlackChannelId": "CYYYYYYYYYY", "SlackWorkspaceId": "TXXXXXXXXXX", - "SnsTopicArns": Array [ - Object { + "SnsTopicArns": [ + { "Ref": "MonitoringAlarmTopicAF62D4F1", }, ], }, "Type": "AWS::Chatbot::SlackChannelConfiguration", }, - "MonitoringChatbotRoleD766A77D": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { + "MonitoringChatbotRoleD766A77D": { + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { "Action": "sts:AssumeRole", "Effect": "Allow", - "Principal": Object { + "Principal": { "Service": "chatbot.amazonaws.com", }, }, ], "Version": "2012-10-17", }, - "ManagedPolicyArns": Array [ - Object { - "Fn::Join": Array [ + "ManagedPolicyArns": [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/ReadOnlyAccess", ], ], }, - Object { - "Fn::Join": Array [ + { + "Fn::Join": [ "", - Array [ + [ "arn:", - Object { + { "Ref": "AWS::Partition", }, ":iam::aws:policy/CloudWatchReadOnlyAccess", @@ -3006,33 +3007,33 @@ Object { }, "Type": "AWS::IAM::Role", }, - "MonitoringEmailSubsc6D15C956": Object { - "Properties": Object { + "MonitoringEmailSubsc6D15C956": { + "Properties": { "Endpoint": "notify-security@example.com", "Protocol": "email", - "TopicArn": Object { + "TopicArn": { "Ref": "MonitoringAlarmTopicAF62D4F1", }, }, "Type": "AWS::SNS::Subscription", }, }, - "Rules": Object { - "CheckBootstrapVersion": Object { - "Assertions": Array [ - Object { - "Assert": Object { - "Fn::Not": Array [ - Object { - "Fn::Contains": Array [ - Array [ + "Rules": { + "CheckBootstrapVersion": { + "Assertions": [ + { + "Assert": { + "Fn::Not": [ + { + "Fn::Contains": [ + [ "1", "2", "3", "4", "5", ], - Object { + { "Ref": "BootstrapVersion", }, ],