コード例 #1
0
class DynamoDBTable(Resource):
    resource_type = 'AWS::DynamoDB::Table'
    property_types = {
        'AttributeDefinitions':
        PropertyType(True, list_of(is_type(dict))),
        'GlobalSecondaryIndexes':
        PropertyType(False, list_of(is_type(dict))),
        'KeySchema':
        PropertyType(False, list_of(is_type(dict))),
        'LocalSecondaryIndexes':
        PropertyType(False, list_of(is_type(dict))),
        'ProvisionedThroughput':
        PropertyType(False,
                     dict_of(is_str(), one_of(is_type(int), is_type(dict)))),
        'StreamSpecification':
        PropertyType(False, is_type(dict)),
        'TableName':
        PropertyType(False, one_of(is_str(), is_type(dict))),
        'Tags':
        PropertyType(False, list_of(is_type(dict))),
        'SSESpecification':
        PropertyType(False, is_type(dict)),
        'BillingMode':
        PropertyType(False, is_str())
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn"),
        "stream_arn": lambda self: fnGetAtt(self.logical_id, "StreamArn")
    }
コード例 #2
0
ファイル: cognito.py プロジェクト: ccarrylab/mock_test_aws
class CognitoUserPool(Resource):
    resource_type = "AWS::Cognito::UserPool"
    property_types = {
        "AdminCreateUserConfig": PropertyType(False, is_type(dict)),
        "AliasAttributes": PropertyType(False, list_of(is_str())),
        "AutoVerifiedAttributes": PropertyType(False, list_of(is_str())),
        "DeviceConfiguration": PropertyType(False, is_type(dict)),
        "EmailConfiguration": PropertyType(False, is_type(dict)),
        "EmailVerificationMessage": PropertyType(False, is_str()),
        "EmailVerificationSubject": PropertyType(False, is_str()),
        "LambdaConfig": PropertyType(False, is_type(dict)),
        "MfaConfiguration": PropertyType(False, is_str()),
        "Policies": PropertyType(False, is_type(dict)),
        "Schema": PropertyType(False, list_of(dict)),
        "SmsAuthenticationMessage": PropertyType(False, is_str()),
        "SmsConfiguration": PropertyType(False, list_of(dict)),
        "SmsVerificationMessage": PropertyType(False, is_str()),
        "UsernameAttributes": PropertyType(False, list_of(is_str())),
        "UserPoolAddOns": PropertyType(False, list_of(dict)),
        "UserPoolName": PropertyType(False, is_str()),
        "UserPoolTags": PropertyType(False, is_type(dict)),
        "VerificationMessageTemplate": PropertyType(False, is_type(dict)),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn"),
        "provider_name":
        lambda self: fnGetAtt(self.logical_id, "ProviderName"),
        "provider_url": lambda self: fnGetAtt(self.logical_id, "ProviderURL"),
    }
コード例 #3
0
class CognitoUserPool(Resource):
    resource_type = 'AWS::Cognito::UserPool'
    property_types = {
        'AdminCreateUserConfig': PropertyType(False, is_type(dict)),
        'AliasAttributes': PropertyType(False, list_of(is_str())),
        'AutoVerifiedAttributes': PropertyType(False, list_of(is_str())),
        'DeviceConfiguration': PropertyType(False, is_type(dict)),
        'EmailConfiguration': PropertyType(False, is_type(dict)),
        'EmailVerificationMessage': PropertyType(False, is_str()),
        'EmailVerificationSubject': PropertyType(False, is_str()),
        'LambdaConfig': PropertyType(False, is_type(dict)),
        'MfaConfiguration': PropertyType(False, is_str()),
        'Policies': PropertyType(False, is_type(dict)),
        'Schema': PropertyType(False, list_of(dict)),
        'SmsAuthenticationMessage': PropertyType(False, is_str()),
        'SmsConfiguration': PropertyType(False, list_of(dict)),
        'SmsVerificationMessage': PropertyType(False, is_str()),
        'UsernameAttributes': PropertyType(False, list_of(is_str())),
        'UserPoolAddOns': PropertyType(False, list_of(dict)),
        'UserPoolName': PropertyType(False, is_str()),
        'UserPoolTags': PropertyType(False, is_str()),
        'VerificationMessageTemplate': PropertyType(False, is_type(dict))
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn"),
        "provider_name":
        lambda self: fnGetAtt(self.logical_id, "ProviderName"),
        "provider_url": lambda self: fnGetAtt(self.logical_id, "ProviderURL")
    }
コード例 #4
0
class S3Bucket(Resource):
    resource_type = 'AWS::S3::Bucket'
    property_types = {
        'AccessControl': PropertyType(False, any_type()),
        'AccelerateConfiguration': PropertyType(False, any_type()),
        'AnalyticsConfigurations': PropertyType(False, any_type()),
        'BucketEncryption': PropertyType(False, any_type()),
        'BucketName': PropertyType(False, is_str()),
        'CorsConfiguration': PropertyType(False, any_type()),
        'InventoryConfigurations': PropertyType(False, any_type()),
        'LifecycleConfiguration': PropertyType(False, any_type()),
        'LoggingConfiguration': PropertyType(False, any_type()),
        'MetricsConfigurations': PropertyType(False, any_type()),
        'NotificationConfiguration': PropertyType(False, is_type(dict)),
        'PublicAccessBlockConfiguration': PropertyType(False, is_type(dict)),
        'ReplicationConfiguration': PropertyType(False, any_type()),
        'Tags': PropertyType(False, is_type(list)),
        'VersioningConfiguration': PropertyType(False, any_type()),
        'WebsiteConfiguration': PropertyType(False, any_type()),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #5
0
class LambdaFunction(Resource):
    resource_type = "AWS::Lambda::Function"
    property_types = {
        "Code": PropertyType(True, is_type(dict)),
        "PackageType": PropertyType(False, is_str()),
        "DeadLetterConfig": PropertyType(False, is_type(dict)),
        "Description": PropertyType(False, is_str()),
        "FunctionName": PropertyType(False, is_str()),
        "Handler": PropertyType(False, is_str()),
        "MemorySize": PropertyType(False, is_type(int)),
        "Role": PropertyType(False, is_str()),
        "Runtime": PropertyType(False, is_str()),
        "Timeout": PropertyType(False, is_type(int)),
        "VpcConfig": PropertyType(False, is_type(dict)),
        "Environment": PropertyType(False, is_type(dict)),
        "Tags": PropertyType(False, list_of(is_type(dict))),
        "TracingConfig": PropertyType(False, is_type(dict)),
        "KmsKeyArn": PropertyType(False, one_of(is_type(dict), is_str())),
        "Layers": PropertyType(False, list_of(one_of(is_str(),
                                                     is_type(dict)))),
        "ReservedConcurrentExecutions": PropertyType(False, any_type()),
        "FileSystemConfigs": PropertyType(False, list_of(is_type(dict))),
        "CodeSigningConfigArn": PropertyType(False, is_str()),
        "ImageConfig": PropertyType(False, is_type(dict)),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #6
0
class SQSQueuePolicy(Resource):
    resource_type = 'AWS::SQS::QueuePolicy'
    property_types = {
        'PolicyDocument': PropertyType(True, is_type(dict)),
        'Queues': PropertyType(True, list_of(str)),
    }
    runtime_attrs = {"arn": lambda self: fnGetAtt(self.logical_id, "Arn")}
コード例 #7
0
class S3Bucket(Resource):
    resource_type = "AWS::S3::Bucket"
    property_types = {
        "AccessControl": PropertyType(False, any_type()),
        "AccelerateConfiguration": PropertyType(False, any_type()),
        "AnalyticsConfigurations": PropertyType(False, any_type()),
        "BucketEncryption": PropertyType(False, any_type()),
        "BucketName": PropertyType(False, is_str()),
        "CorsConfiguration": PropertyType(False, any_type()),
        "InventoryConfigurations": PropertyType(False, any_type()),
        "LifecycleConfiguration": PropertyType(False, any_type()),
        "LoggingConfiguration": PropertyType(False, any_type()),
        "MetricsConfigurations": PropertyType(False, any_type()),
        "NotificationConfiguration": PropertyType(False, is_type(dict)),
        "PublicAccessBlockConfiguration": PropertyType(False, is_type(dict)),
        "ReplicationConfiguration": PropertyType(False, any_type()),
        "Tags": PropertyType(False, is_type(list)),
        "VersioningConfiguration": PropertyType(False, any_type()),
        "WebsiteConfiguration": PropertyType(False, any_type()),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #8
0
class LambdaFunction(Resource):
    resource_type = 'AWS::Lambda::Function'
    property_types = {
        'Code': PropertyType(True, is_type(dict)),
        'DeadLetterConfig': PropertyType(False, is_type(dict)),
        'Description': PropertyType(False, is_str()),
        'FunctionName': PropertyType(False, is_str()),
        'Handler': PropertyType(True, is_str()),
        'MemorySize': PropertyType(False, is_type(int)),
        'Role': PropertyType(False, is_str()),
        'Runtime': PropertyType(False, is_str()),
        'Timeout': PropertyType(False, is_type(int)),
        'VpcConfig': PropertyType(False, is_type(dict)),
        'Environment': PropertyType(False, is_type(dict)),
        'Tags': PropertyType(False, list_of(is_type(dict))),
        'TracingConfig': PropertyType(False, is_type(dict)),
        'KmsKeyArn': PropertyType(False, one_of(is_type(dict), is_str())),
        'Layers': PropertyType(False, list_of(one_of(is_str(),
                                                     is_type(dict)))),
        'ReservedConcurrentExecutions': PropertyType(False, any_type())
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #9
0
    def _construct_alias_target(self, domain):
        alias_target = {}
        route53 = domain.get("Route53")
        target_health = route53.get("EvaluateTargetHealth")

        if target_health is not None:
            alias_target["EvaluateTargetHealth"] = target_health
        if domain.get("EndpointConfiguration") == "REGIONAL":
            alias_target["HostedZoneId"] = fnGetAtt(self.domain.get("ApiDomainName"), "RegionalHostedZoneId")
            alias_target["DNSName"] = fnGetAtt(self.domain.get("ApiDomainName"), "RegionalDomainName")
        else:
            if route53.get("DistributionDomainName") is None:
                route53["DistributionDomainName"] = fnGetAtt(self.domain.get("ApiDomainName"), "DistributionDomainName")
            alias_target["HostedZoneId"] = "Z2FDTNDATAQYW2"
            alias_target["DNSName"] = route53.get("DistributionDomainName")
        return alias_target
コード例 #10
0
    def _construct_alias_target(self, domain):
        alias_target = {}
        route53 = domain.get("Route53")
        target_health = route53.get("EvaluateTargetHealth")

        if target_health is not None:
            alias_target["EvaluateTargetHealth"] = target_health
        if domain.get("EndpointConfiguration") == "REGIONAL":
            alias_target["HostedZoneId"] = fnGetAtt(self.domain.get("ApiDomainName"), "RegionalHostedZoneId")
            alias_target["DNSName"] = fnGetAtt(self.domain.get("ApiDomainName"), "RegionalDomainName")
        else:
            raise InvalidResourceException(
                self.logical_id,
                "Only REGIONAL endpoint is supported on HTTP APIs.",
            )
        return alias_target
コード例 #11
0
class SQSQueue(Resource):
    resource_type = 'AWS::SQS::Queue'
    property_types = {}
    runtime_attrs = {
        "queue_url": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn"),
    }
コード例 #12
0
class IotTopicRule(Resource):
    resource_type = 'AWS::IoT::TopicRule'
    property_types = {'TopicRulePayload': PropertyType(False, is_type(dict))}

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #13
0
class DynamoDBTable(Resource):
    resource_type = "AWS::DynamoDB::Table"
    property_types = {
        "AttributeDefinitions": PropertyType(True, list_of(is_type(dict))),
        "GlobalSecondaryIndexes": PropertyType(False, list_of(is_type(dict))),
        "KeySchema": PropertyType(False, list_of(is_type(dict))),
        "LocalSecondaryIndexes": PropertyType(False, list_of(is_type(dict))),
        "ProvisionedThroughput": PropertyType(False, dict_of(is_str(), one_of(is_type(int), is_type(dict)))),
        "StreamSpecification": PropertyType(False, is_type(dict)),
        "TableName": PropertyType(False, one_of(is_str(), is_type(dict))),
        "Tags": PropertyType(False, list_of(is_type(dict))),
        "SSESpecification": PropertyType(False, is_type(dict)),
        "BillingMode": PropertyType(False, is_str()),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn"),
        "stream_arn": lambda self: fnGetAtt(self.logical_id, "StreamArn"),
    }
コード例 #14
0
    def _construct_alias_target(self, domain):
        alias_target = {}
        route53 = domain.get('Route53')
        target_health = route53.get('EvaluateTargetHealth')

        if target_health is not None:
            alias_target['EvaluateTargetHealth'] = target_health
        if domain.get('EndpointConfiguration') == 'REGIONAL':
            alias_target['HostedZoneId'] = fnGetAtt(
                self.domain.get('ApiDomainName'), 'RegionalHostedZoneId')
            alias_target['DNSName'] = fnGetAtt(
                self.domain.get('ApiDomainName'), 'RegionalDomainName')
        else:
            if route53.get('DistributionDomainName') is None:
                raise InvalidResourceException(
                    self.logical_id,
                    "Custom Domains support for EDGE requires the name "
                    "of a Distribution resource")
            alias_target['HostedZoneId'] = 'Z2FDTNDATAQYW2'
            alias_target['DNSName'] = route53.get('DistributionDomainName')
        return alias_target
コード例 #15
0
class LambdaVersion(Resource):
    resource_type = 'AWS::Lambda::Version'
    property_types = {
        'CodeSha256': PropertyType(False, is_str()),
        'Description': PropertyType(False, is_str()),
        'FunctionName': PropertyType(True, one_of(is_str(), is_type(dict)))
    }

    runtime_attrs = {
        "arn": lambda self: ref(self.logical_id),
        "version": lambda self: fnGetAtt(self.logical_id, "Version")
    }
コード例 #16
0
ファイル: log.py プロジェクト: Adjucate/autograder
class SubscriptionFilter(Resource):
    resource_type = "AWS::Logs::SubscriptionFilter"
    property_types = {
        "LogGroupName": PropertyType(True, is_str()),
        "FilterPattern": PropertyType(True, is_str()),
        "DestinationArn": PropertyType(True, is_str()),
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #17
0
ファイル: iam.py プロジェクト: ccarrylab/mock_test_aws
class IAMRole(Resource):
    resource_type = "AWS::IAM::Role"
    property_types = {
        "AssumeRolePolicyDocument": PropertyType(True, is_type(dict)),
        "ManagedPolicyArns": PropertyType(False, is_type(list)),
        "Path": PropertyType(False, is_str()),
        "Policies": PropertyType(False, is_type(list)),
        "PermissionsBoundary": PropertyType(False, is_str()),
        "Tags": PropertyType(False, list_of(is_type(dict))),
    }

    runtime_attrs = {"name": lambda self: ref(self.logical_id), "arn": lambda self: fnGetAtt(self.logical_id, "Arn")}
コード例 #18
0
ファイル: iam.py プロジェクト: tonysoftca/aws-SAM
class IAMRole(Resource):
    resource_type = 'AWS::IAM::Role'
    property_types = {
        'AssumeRolePolicyDocument': PropertyType(True, is_type(dict)),
        'ManagedPolicyArns': PropertyType(False, is_type(list)),
        'Path': PropertyType(False, is_str()),
        'Policies': PropertyType(False, is_type(list))
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #19
0
class LambdaLayerVersion(Resource):
    """Lambda layer version resource"""

    resource_type = "AWS::Lambda::LayerVersion"
    property_types = {
        "Content": PropertyType(True, is_type(dict)),
        "Description": PropertyType(False, is_str()),
        "LayerName": PropertyType(False, is_str()),
        "CompatibleRuntimes": PropertyType(False, list_of(one_of(is_str(), is_type(dict)))),
        "LicenseInfo": PropertyType(False, is_str()),
    }

    runtime_attrs = {"name": lambda self: ref(self.logical_id), "arn": lambda self: fnGetAtt(self.logical_id, "Arn")}
コード例 #20
0
class EventsRule(Resource):
    resource_type = 'AWS::Events::Rule'
    property_types = {
            'Description': PropertyType(False, is_str()),
            'EventPattern': PropertyType(False, is_type(dict)),
            'Name': PropertyType(False, is_str()),
            'RoleArn': PropertyType(False, is_str()),
            'ScheduleExpression': PropertyType(False, is_str()),
            'State': PropertyType(False, is_str()),
            'Targets': PropertyType(False, list_of(is_type(dict)))
    }

    runtime_attrs = {
        "rule_id": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #21
0
class EventsRule(Resource):
    resource_type = "AWS::Events::Rule"
    property_types = {
        "Description": PropertyType(False, is_str()),
        "EventBusName": PropertyType(False, is_str()),
        "EventPattern": PropertyType(False, is_type(dict)),
        "Name": PropertyType(False, is_str()),
        "RoleArn": PropertyType(False, is_str()),
        "ScheduleExpression": PropertyType(False, is_str()),
        "State": PropertyType(False, is_str()),
        "Targets": PropertyType(False, list_of(is_type(dict))),
    }

    runtime_attrs = {
        "rule_id": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #22
0
class LambdaLayerVersion(Resource):
    """ Lambda layer version resource
    """

    resource_type = 'AWS::Lambda::LayerVersion'
    property_types = {
        'Content': PropertyType(True, is_type(dict)),
        'Description': PropertyType(False, is_str()),
        'LayerName': PropertyType(False, is_str()),
        'CompatibleRuntimes': PropertyType(False, list_of(is_str())),
        'LicenseInfo': PropertyType(False, is_str())
    }

    runtime_attrs = {
        "name": lambda self: ref(self.logical_id),
        "arn": lambda self: fnGetAtt(self.logical_id, "Arn")
    }
コード例 #23
0
class StepFunctionsStateMachine(Resource):
    resource_type = "AWS::StepFunctions::StateMachine"
    property_types = {
        "Definition": PropertyType(False, is_type(dict)),
        "DefinitionString": PropertyType(False, is_str()),
        "DefinitionS3Location": PropertyType(False, is_type(dict)),
        "LoggingConfiguration": PropertyType(False, is_type(dict)),
        "RoleArn": PropertyType(True, is_str()),
        "StateMachineName": PropertyType(False, is_str()),
        "StateMachineType": PropertyType(False, is_str()),
        "Tags": PropertyType(False, list_of(is_type(dict))),
        "DefinitionSubstitutions": PropertyType(False, is_type(dict)),
    }

    runtime_attrs = {
        "arn": lambda self: ref(self.logical_id),
        "name": lambda self: fnGetAtt(self.logical_id, "Name"),
    }
コード例 #24
0
    def to_cloudformation(self, **kwargs):
        function = kwargs.get("function")

        if not function:
            raise TypeError("Missing required keyword argument: function")

        if "userpool" not in kwargs or kwargs["userpool"] is None:
            raise TypeError("Missing required keyword argument: userpool")

        if "userpool_id" not in kwargs or kwargs["userpool_id"] is None:
            raise TypeError("Missing required keyword argument: userpool_id")

        userpool = kwargs["userpool"]
        userpool_id = kwargs["userpool_id"]

        resources = []
        source_arn = fnGetAtt(userpool_id, "Arn")
        resources.append(
            self._construct_permission(function, source_arn=source_arn, prefix=function.logical_id + "Cognito")
        )

        self._inject_lambda_config(function, userpool)
        resources.append(CognitoUserPool.from_dict(userpool_id, userpool))
        return resources