// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snapshot test fleet provisioning stack 1`] = ` Object { "Outputs": Object { "RpiImageBucketName": Object { "Description": "Download the raspbian image from this S3 bucket", "Value": Object { "Ref": "RpiImageOutputBucketC16CAC8A", }, }, }, "Parameters": Object { "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133ArtifactHashF51B7FAA": Object { "Description": "Artifact hash for asset \\"905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133\\"", "Type": "String", }, "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133S3BucketAE038D3F": Object { "Description": "S3 bucket for asset \\"905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133\\"", "Type": "String", }, "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133S3VersionKeyC8B59851": Object { "Description": "S3 key for asset version \\"905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133\\"", "Type": "String", }, "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cArtifactHash627DAAA7": Object { "Description": "Artifact hash for asset \\"c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c\\"", "Type": "String", }, "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cS3BucketEAC9DD43": Object { "Description": "S3 bucket for asset \\"c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c\\"", "Type": "String", }, "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cS3VersionKeyDD9AE9E7": Object { "Description": "S3 key for asset version \\"c691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49c\\"", "Type": "String", }, "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7ArtifactHash028A95C7": Object { "Description": "Artifact hash for asset \\"fa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7\\"", "Type": "String", }, "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3Bucket769C4375": Object { "Description": "S3 bucket for asset \\"fa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7\\"", "Type": "String", }, "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3VersionKeyDE2B75FE": Object { "Description": "S3 key for asset version \\"fa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7\\"", "Type": "String", }, }, "Resources": Object { "BootstrapPolicy": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "iot:Connect", ], "Effect": "Allow", "Resource": Array [ "*", ], }, Object { "Action": Array [ "iot:Publish", "iot:Receive", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:aws:iot:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":topic/$aws/certificates/create/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:aws:iot:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":topic/$aws/provisioning-templates/", Object { "Ref": "ProvisioningTemplate", }, "/provision/*", ], ], }, ], }, Object { "Action": Array [ "iot:Subscribe", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:aws:iot:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":topicfilter/$aws/certificates/create/*", ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:aws:iot:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":topicfilter/$aws/provisioning-templates/", Object { "Ref": "ProvisioningTemplate", }, "/provision/*", ], ], }, ], }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IoT::Policy", }, "BuildRpiImagePipelineAC9DAF7F": Object { "DependsOn": Array [ "BuildRpiImagePipelineRoleDefaultPolicyEC568D69", "BuildRpiImagePipelineRole6C10218D", ], "Properties": Object { "ArtifactStore": Object { "Location": Object { "Ref": "BuildRpiImagePipelineArtifactsBucketC0B23EB0", }, "Type": "S3", }, "RestartExecutionOnUpdate": true, "RoleArn": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineRole6C10218D", "Arn", ], }, "Stages": Array [ Object { "Actions": Array [ Object { "ActionTypeId": Object { "Category": "Source", "Owner": "AWS", "Provider": "S3", "Version": "1", }, "Configuration": Object { "S3Bucket": Object { "Ref": "rpiImageBuilderSourceBucket3B1B047A", }, "S3ObjectKey": "rpi-image-builder.zip", }, "Name": "Source", "OutputArtifacts": Array [ Object { "Name": "Artifact_Source_Source", }, ], "RoleArn": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineSourceCodePipelineActionRoleDD9FB482", "Arn", ], }, "RunOrder": 1, }, ], "Name": "Source", }, Object { "Actions": Array [ Object { "ActionTypeId": Object { "Category": "Build", "Owner": "AWS", "Provider": "CodeBuild", "Version": "1", }, "Configuration": Object { "ProjectName": Object { "Ref": "BuildRpiImageProject8E27C755", }, }, "InputArtifacts": Array [ Object { "Name": "Artifact_Source_Source", }, ], "Name": "BuildRpiImage", "OutputArtifacts": Array [ Object { "Name": "Artifact_BuildRpiImage_BuildRpiImage", }, ], "RoleArn": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRole1796EDA5", "Arn", ], }, "RunOrder": 1, }, ], "Name": "BuildRpiImage", }, Object { "Actions": Array [ Object { "ActionTypeId": Object { "Category": "Deploy", "Owner": "AWS", "Provider": "S3", "Version": "1", }, "Configuration": Object { "BucketName": Object { "Ref": "RpiImageOutputBucketC16CAC8A", }, "Extract": "false", }, "InputArtifacts": Array [ Object { "Name": "Artifact_BuildRpiImage_BuildRpiImage", }, ], "Name": "StoreRpiImage", "RoleArn": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRole153F34F1", "Arn", ], }, "RunOrder": 1, }, ], "Name": "StoreRpiImage", }, ], }, "Type": "AWS::CodePipeline::Pipeline", }, "BuildRpiImagePipelineArtifactsBucketC0B23EB0": Object { "DeletionPolicy": "Retain", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "aws:kms", }, }, ], }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRole1796EDA5": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "AWS": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::", Object { "Ref": "AWS::AccountId", }, ":root", ], ], }, }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRoleDefaultPolicy3651F2DE": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "codebuild:BatchGetBuilds", "codebuild:StartBuild", "codebuild:StopBuild", ], "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "BuildRpiImageProject8E27C755", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRoleDefaultPolicy3651F2DE", "Roles": Array [ Object { "Ref": "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRole1796EDA5", }, ], }, "Type": "AWS::IAM::Policy", }, "BuildRpiImagePipelineRole6C10218D": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "codepipeline.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BuildRpiImagePipelineRoleDefaultPolicyEC568D69": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", "s3:PutObject*", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineSourceCodePipelineActionRoleDD9FB482", "Arn", ], }, }, Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineBuildRpiImageCodePipelineActionRole1796EDA5", "Arn", ], }, }, Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRole153F34F1", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "BuildRpiImagePipelineRoleDefaultPolicyEC568D69", "Roles": Array [ Object { "Ref": "BuildRpiImagePipelineRole6C10218D", }, ], }, "Type": "AWS::IAM::Policy", }, "BuildRpiImagePipelineSourceCodePipelineActionRoleDD9FB482": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "AWS": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::", Object { "Ref": "AWS::AccountId", }, ":root", ], ], }, }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BuildRpiImagePipelineSourceCodePipelineActionRoleDefaultPolicyE263AC18": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "rpiImageBuilderSourceBucket3B1B047A", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "rpiImageBuilderSourceBucket3B1B047A", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:DeleteObject*", "s3:PutObject*", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "BuildRpiImagePipelineSourceCodePipelineActionRoleDefaultPolicyE263AC18", "Roles": Array [ Object { "Ref": "BuildRpiImagePipelineSourceCodePipelineActionRoleDD9FB482", }, ], }, "Type": "AWS::IAM::Policy", }, "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRole153F34F1": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "AWS": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::", Object { "Ref": "AWS::AccountId", }, ":root", ], ], }, }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRoleDefaultPolicyD2A609DB": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "s3:DeleteObject*", "s3:PutObject*", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "RpiImageOutputBucketC16CAC8A", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "RpiImageOutputBucketC16CAC8A", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRoleDefaultPolicyD2A609DB", "Roles": Array [ Object { "Ref": "BuildRpiImagePipelineStoreRpiImageCodePipelineActionRole153F34F1", }, ], }, "Type": "AWS::IAM::Policy", }, "BuildRpiImageProject8E27C755": Object { "Properties": Object { "Artifacts": Object { "Type": "CODEPIPELINE", }, "EncryptionKey": "alias/aws/s3", "Environment": Object { "ComputeType": "BUILD_GENERAL1_SMALL", "Image": "aws/codebuild/standard:4.0", "ImagePullCredentialsType": "CODEBUILD", "PrivilegedMode": true, "Type": "LINUX_CONTAINER", }, "ServiceRole": Object { "Fn::GetAtt": Array [ "BuildRpiImageProjectRole25C801ED", "Arn", ], }, "Source": Object { "BuildSpec": "{ \\"version\\": \\"0.2\\", \\"env\\": { \\"variables\\": { \\"SSH_PUBLIC_KEY\\": \\"ssh-rsa ....\\", \\"WIFI_SSID\\": \\"samplewifi\\", \\"WIFI_COUNTRY\\": \\"US\\", \\"ARTIFACT_IMAGE_NAME\\": \\"aws-raspbian.img\\" }, \\"secrets-manager\\": { \\"WIFI_PASSWORD\\": \\"RPI_WIFI_PASSWORD\\" } }, \\"phases\\": { \\"install\\": { \\"commands\\": [ \\"apt-get update\\", \\"apt-get -y install p7zip-full wget libxml2-utils kpartx\\" ] }, \\"build\\": { \\"commands\\": [ \\"./build-rpi-image.bash\\" ] } }, \\"artifacts\\": { \\"files\\": [ \\"$ARTIFACT_IMAGE_NAME\\" ] } }", "Type": "CODEPIPELINE", }, }, "Type": "AWS::CodeBuild::Project", }, "BuildRpiImageProjectRole25C801ED": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "codebuild.amazonaws.com", }, }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IAM::Role", }, "BuildRpiImageProjectRoleDefaultPolicy00916D55": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":log-group:/aws/codebuild/", Object { "Ref": "BuildRpiImageProject8E27C755", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":logs:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":log-group:/aws/codebuild/", Object { "Ref": "BuildRpiImageProject8E27C755", }, ":*", ], ], }, ], }, Object { "Action": Array [ "codebuild:CreateReportGroup", "codebuild:CreateReport", "codebuild:UpdateReport", "codebuild:BatchPutTestCases", "codebuild:BatchPutCodeCoverages", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":codebuild:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":report-group/", Object { "Ref": "BuildRpiImageProject8E27C755", }, "-*", ], ], }, }, Object { "Action": Array [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", ], "Effect": "Allow", "Resource": Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":secretsmanager:", Object { "Ref": "AWS::Region", }, ":", Object { "Ref": "AWS::AccountId", }, ":secret:RPI_WIFI_PASSWORD-??????", ], ], }, }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", "s3:PutObject*", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "BuildRpiImagePipelineArtifactsBucketC0B23EB0", "Arn", ], }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "BuildRpiImageProjectRoleDefaultPolicy00916D55", "Roles": Array [ Object { "Ref": "BuildRpiImageProjectRole25C801ED", }, ], }, "Type": "AWS::IAM::Policy", }, "ConfigureRpiImageBuilderCR": Object { "DeletionPolicy": "Delete", "Properties": Object { "BOOTSTRAP_POLICY_NAME": Object { "Ref": "BootstrapPolicy", }, "CONFIGURED_RPI_IMAGE_BUILDER_BUCKET_NAME": Object { "Ref": "rpiImageBuilderSourceBucket3B1B047A", }, "CONFIGURED_RPI_IMAGE_BUILDER_OBJECT_KEY": "rpi-image-builder.zip", "PROVISIONING_TEMPLATE_NAME": Object { "Ref": "ProvisioningTemplate", }, "RPI_IMAGE_BUILDER_BUCKET_NAME": Object { "Ref": "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3Bucket769C4375", }, "RPI_IMAGE_BUILDER_OBJECT_KEY": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 0, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3VersionKeyDE2B75FE", }, ], }, ], }, Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3VersionKeyDE2B75FE", }, ], }, ], }, ], ], }, "ServiceToken": Object { "Fn::GetAtt": Array [ "ConfigureRpiImageBuilderProviderframeworkonEventAC61CC8C", "Arn", ], }, }, "Type": "AWS::CloudFormation::CustomResource", "UpdateReplacePolicy": "Delete", }, "ConfigureRpiImageBuilderFunction30F5701A": Object { "DependsOn": Array [ "ConfigureRpiImageBuilderFunctionServiceRoleDefaultPolicyDB1E741D", "ConfigureRpiImageBuilderFunctionServiceRole153D3C6D", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Ref": "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133S3BucketAE038D3F", }, "S3Key": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 0, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133S3VersionKeyC8B59851", }, ], }, ], }, Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParameters905bd0b2aa0d2d29b9a96032e907debc7a708461559d10ae79a728b6dabd7133S3VersionKeyC8B59851", }, ], }, ], }, ], ], }, }, "Handler": "app.on_event", "Role": Object { "Fn::GetAtt": Array [ "ConfigureRpiImageBuilderFunctionServiceRole153D3C6D", "Arn", ], }, "Runtime": "python3.7", "Timeout": 60, }, "Type": "AWS::Lambda::Function", }, "ConfigureRpiImageBuilderFunctionServiceRole153D3C6D": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "ConfigureRpiImageBuilderFunctionServiceRoleDefaultPolicyDB1E741D": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "iot:CreateKeysAndCertificate", "iot:AttachPolicy", "iot:DescribeEndpoint", "iot:CreateThingType", "iot:UpdateEventConfigurations", ], "Effect": "Allow", "Resource": "*", }, Object { "Action": Array [ "s3:DeleteObject*", "s3:PutObject*", "s3:Abort*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::GetAtt": Array [ "rpiImageBuilderSourceBucket3B1B047A", "Arn", ], }, Object { "Fn::Join": Array [ "", Array [ Object { "Fn::GetAtt": Array [ "rpiImageBuilderSourceBucket3B1B047A", "Arn", ], }, "/*", ], ], }, ], }, Object { "Action": Array [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", ], "Effect": "Allow", "Resource": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3Bucket769C4375", }, ], ], }, Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":s3:::", Object { "Ref": "AssetParametersfa5e4ce2f1a38b166ce8d54e19fad00c2a423ce792311c70a1101e1df64746f7S3Bucket769C4375", }, "/*", ], ], }, ], }, ], "Version": "2012-10-17", }, "PolicyName": "ConfigureRpiImageBuilderFunctionServiceRoleDefaultPolicyDB1E741D", "Roles": Array [ Object { "Ref": "ConfigureRpiImageBuilderFunctionServiceRole153D3C6D", }, ], }, "Type": "AWS::IAM::Policy", }, "ConfigureRpiImageBuilderProviderframeworkonEventAC61CC8C": Object { "DependsOn": Array [ "ConfigureRpiImageBuilderProviderframeworkonEventServiceRoleDefaultPolicy06477CC6", "ConfigureRpiImageBuilderProviderframeworkonEventServiceRole586AA64D", ], "Properties": Object { "Code": Object { "S3Bucket": Object { "Ref": "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cS3BucketEAC9DD43", }, "S3Key": Object { "Fn::Join": Array [ "", Array [ Object { "Fn::Select": Array [ 0, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cS3VersionKeyDD9AE9E7", }, ], }, ], }, Object { "Fn::Select": Array [ 1, Object { "Fn::Split": Array [ "||", Object { "Ref": "AssetParametersc691172cdeefa2c91b5a2907f9d81118e47597634943344795f1a844192dd49cS3VersionKeyDD9AE9E7", }, ], }, ], }, ], ], }, }, "Description": "AWS CDK resource provider framework - onEvent (TestStack/ConfigureRpiImageBuilderProvider)", "Environment": Object { "Variables": Object { "USER_ON_EVENT_FUNCTION_ARN": Object { "Fn::GetAtt": Array [ "ConfigureRpiImageBuilderFunction30F5701A", "Arn", ], }, }, }, "Handler": "framework.onEvent", "Role": Object { "Fn::GetAtt": Array [ "ConfigureRpiImageBuilderProviderframeworkonEventServiceRole586AA64D", "Arn", ], }, "Runtime": "nodejs10.x", "Timeout": 900, }, "Type": "AWS::Lambda::Function", }, "ConfigureRpiImageBuilderProviderframeworkonEventServiceRole586AA64D": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "lambda.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "ConfigureRpiImageBuilderProviderframeworkonEventServiceRoleDefaultPolicy06477CC6": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Resource": Object { "Fn::GetAtt": Array [ "ConfigureRpiImageBuilderFunction30F5701A", "Arn", ], }, }, ], "Version": "2012-10-17", }, "PolicyName": "ConfigureRpiImageBuilderProviderframeworkonEventServiceRoleDefaultPolicy06477CC6", "Roles": Array [ Object { "Ref": "ConfigureRpiImageBuilderProviderframeworkonEventServiceRole586AA64D", }, ], }, "Type": "AWS::IAM::Policy", }, "ProvisioningRoleArn512F0052": Object { "Properties": Object { "AssumeRolePolicyDocument": Object { "Statement": Array [ Object { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": Object { "Service": "iot.amazonaws.com", }, }, ], "Version": "2012-10-17", }, "ManagedPolicyArns": Array [ Object { "Fn::Join": Array [ "", Array [ "arn:", Object { "Ref": "AWS::Partition", }, ":iam::aws:policy/service-role/AWSIoTThingsRegistration", ], ], }, ], }, "Type": "AWS::IAM::Role", }, "ProvisioningTemplate": Object { "Properties": Object { "Enabled": true, "ProvisioningRoleArn": Object { "Fn::GetAtt": Array [ "ProvisioningRoleArn512F0052", "Arn", ], }, "TemplateBody": Object { "Fn::Join": Array [ "", Array [ "{ \\"Parameters\\": { \\"SerialNumber\\": { \\"Type\\": \\"String\\" }, \\"AWS::IoT::Certificate::Id\\": { \\"Type\\": \\"String\\" } }, \\"Resources\\": { \\"certificate\\": { \\"Properties\\": { \\"CertificateId\\": { \\"Ref\\": \\"AWS::IoT::Certificate::Id\\" }, \\"Status\\": \\"Active\\" }, \\"Type\\": \\"AWS::IoT::Certificate\\" }, \\"policy\\": { \\"Properties\\": { \\"PolicyName\\": \\"", Object { "Ref": "thingsPolicy", }, "\\" }, \\"Type\\": \\"AWS::IoT::Policy\\" }, \\"thing\\": { \\"OverrideSettings\\": { \\"AttributePayload\\": \\"MERGE\\", \\"ThingGroups\\": \\"DO_NOTHING\\", \\"ThingTypeName\\": \\"REPLACE\\" }, \\"Properties\\": { \\"ThingGroups\\": [], \\"ThingName\\": { \\"Ref\\": \\"SerialNumber\\" } }, \\"Type\\": \\"AWS::IoT::Thing\\" } }, \\"DeviceConfiguration\\": { } }", ], ], }, }, "Type": "AWS::IoT::ProvisioningTemplate", }, "RpiImageOutputBucketC16CAC8A": Object { "DeletionPolicy": "Retain", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "rpiImageBuilderSourceBucket3B1B047A": Object { "DeletionPolicy": "Retain", "Properties": Object { "BucketEncryption": Object { "ServerSideEncryptionConfiguration": Array [ Object { "ServerSideEncryptionByDefault": Object { "SSEAlgorithm": "AES256", }, }, ], }, "PublicAccessBlockConfiguration": Object { "BlockPublicAcls": true, "BlockPublicPolicy": true, "IgnorePublicAcls": true, "RestrictPublicBuckets": true, }, "VersioningConfiguration": Object { "Status": "Enabled", }, }, "Type": "AWS::S3::Bucket", "UpdateReplacePolicy": "Retain", }, "thingsPolicy": Object { "Properties": Object { "PolicyDocument": Object { "Statement": Array [ Object { "Action": Array [ "iot:*", ], "Effect": "Allow", "Resource": Array [ "*", ], }, ], "Version": "2012-10-17", }, }, "Type": "AWS::IoT::Policy", }, }, } `;