o #wd@slddlmZmZmZmZmZmZ m Z m Z mZmZmZmZmZddlmZddlmZmZGdddeZdS)) CfnOutputDurationStackaws_sqsaws_s3aws_s3_notificationsaws_iam aws_lambdaaws_snsaws_cloudwatchaws_cloudwatch_actions aws_dynamodbTags) Construct)FunctionTracingcs*eZdZdededdffdd ZZS) SqsBlogStackscope construct_idreturnNc stj||fi|tj|dtdddd}t|dd|tj gddgd t j |d t d d }t|ddt j |d t d t jd|dd}t|dd|tj gd|jgd tj|dtjdtjjdtjjd}t|ddt|d}|j} t|ddtj|dtjjtjdd|t j!d} | "d|j#t| dd|$| t%&| } |'tj(j)| tj tj*j+dg|jgdd|jiid} tj,| gd |_-t./|d!} t| ddt0j1|d"d"|2d#d$t0j3j4d%}|5t67| t|ddtj dgtj*j+t8|j9g|jgd&} |:| tj|d'tjjtjdd(|t j!d}t|dd|;||j|d-|j?d.dS)/NZInventoryFunctionRolezlambda.amazonaws.comzRole for Lambda functions) assumed_by role_name descriptionZ department inventory)zlogs:CreateLogGroupzlogs:CreateLogStreamzlogs:PutLogEventszarn:aws:logs:*:*:*)actions resourcesZInventoryUpdatesDlqi,)visibility_timeoutZInventoryUpdatesQueue)max_receive_countqueue)rdead_letter_queue)zsqs:ReceiveMessagezsqs:DeleteMessagezsqs:GetQueueAttributesZInventoryUpdatesid)nametype) partition_key billing_modeZInventoryUpdatesBucketZCSVProcessingToSQSFunctionzsqs_blog/lambdaz)CSVProcessingToSQSFunction.lambda_handler)runtimecodehandlerroletracingZ SQS_QUEUE_URLzsqs:SendMessageZ ArnEqualsz aws:SourceArn)effectrr conditions) statementsZInventoryUpdatesTopicZOldInventoryUpdatesAlarmiX) alarm_namemetric thresholdevaluation_periodscomparison_operator)rr+ principalsrZSQSToDynamoDBFunctionz$SQSToDynamoDBFunction.lambda_handlerZMyQueueTrigger )event_source_arn batch_sizeZDYNAMODB_TABLE_NAMEzS3 Bucket Name)value)@super__init__iamRoleServicePrincipalrofadd add_to_policyPolicyStatementsqsQueuersecondsDeadLetterQueue queue_arndynamodbTable Attribute AttributeTypeSTRING BillingModePAY_PER_REQUESTs3Bucket bucket_arn_lambdarRuntime PYTHON_3_8Code from_assetrACTIVEadd_environment queue_url grant_reads3_notificationsLambdaDestinationadd_event_notification EventTypeOBJECT_CREATEDEffectALLOWPolicyDocumentZ queue_policysnsTopic cloudwatchAlarm(metric_approximate_age_of_oldest_messageComparisonOperator"GREATER_THAN_OR_EQUAL_TO_THRESHOLDadd_alarm_actioncloudwatch_actions SnsAction ArnPrincipalrole_arnadd_to_resource_policygrant_read_write_dataadd_event_source_mapping table_namer bucket_name)selfrrkwargsr)ZdlqrtablebucketrPZcsv_processing_to_sqs_function notificationpolicytopicalarmZsqs_to_dynamodb_function __class__eC:\Users\makvac\Desktop\Development\Serverless\sqs-best-practices-blog-cdk\sqs_blog\sqs_blog_stack.pyr:s          zSqsBlogStack.__init__)__name__ __module__ __qualname__rstrr: __classcell__r}r}r{r~rs"rN)aws_cdkrrrrrBrrNrrZrr;r rQr rbr rdr rjr rGr constructsrZaws_cdk.aws_lambdarrrr}r}r}r~s<