wdzddlmZmZmZmZmZmZ m Z m Z mZmZmZmZmZddlmZddlmZmZGddeZdS)) CfnOutputDurationStackaws_sqsaws_s3aws_s3_notificationsaws_iam aws_lambdaaws_snsaws_cloudwatchaws_cloudwatch_actions aws_dynamodbTags) Construct)FunctionTracingc,eZdZdededdffd ZxZS) SqsBlogStackscope construct_idreturnNc 0 tj||fi|tj|dtjddd}t j|dd|tj gddg tj |d tj d  }t j|ddtj |d tj d tjd|}t j|dd|tj gd|jg t!j|dt!jdt jjt jj}t j|ddt/j|d}|j} t j|ddt5j|dt4jjt4jdd|t@j!} | "d|j#t j| dd|$| tKj&| } |'t.j(j)| tj tj*j+dg|jgdd|jii} tj,| g |_-t]j/|d!} t j| ddtaj1|d"d"|2d#d$t`j3j4%}|5tmj7| t j|ddtj dgtj*j+tj8|j9g|jg&} |:| t5j|d't4jjt4jdd(|t@j!}t j|dd|;||<d)|jd*+|"d,|j=t j|ddt}|d-|j?.dS)/NInventoryFunctionRolezlambda.amazonaws.comzRole for Lambda functions) assumed_by role_name description department inventory)zlogs:CreateLogGroupzlogs:CreateLogStreamzlogs:PutLogEventszarn:aws:logs:*:*:*)actions resourcesInventoryUpdatesDlqi,)visibility_timeoutInventoryUpdatesQueue)max_receive_countqueue)r"dead_letter_queue)zsqs:ReceiveMessagezsqs:DeleteMessagezsqs:GetQueueAttributesInventoryUpdatesid)nametype) partition_key billing_modeInventoryUpdatesBucketCSVProcessingToSQSFunctionzsqs_blog/lambdaz)CSVProcessingToSQSFunction.lambda_handler)runtimecodehandlerroletracing SQS_QUEUE_URLzsqs:SendMessage ArnEqualsz aws:SourceArn)effectrr conditions) statementsInventoryUpdatesTopicOldInventoryUpdatesAlarmiX) alarm_namemetric thresholdevaluation_periodscomparison_operator)rr7 principalsr SQSToDynamoDBFunctionz$SQSToDynamoDBFunction.lambda_handlerMyQueueTrigger )event_source_arn batch_sizeDYNAMODB_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_CREATEDEffectALLOWPolicyDocument 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)selfrrkwargsr3dlqr&tablebucketracsv_processing_to_sqs_function notificationpolicytopicalarmsqs_to_dynamodb_function __class__s R/Users/harniva/Desktop/sqs-best-practices-blog-cdk-main/sqs_blog/sqs_blog_stack.pyrKzSqsBlogStack.__init__st 77777x )+,BCC-3      , 444 3.XXX+,      i3'/44     {333 )'/44!1"#     <555 3.YYY'      t%7",$X=S=Z[[[!-=    <5554!9::&  L+666+2*:4A]+2?+E(/ (?(?@Q(R(R+V(,+2> +%+%+%& '77YYY .0044\;OOO 8:::(9:XZZ %%bl&A<PPP$:#&'}o#U_    !/F8DDD $ 788 <555 'A1AACC * = `     1;EBBCCC <555$&':#(778'     $$V,,,%,$4 )O.(():;;+Q)-,3N % % %   (**..|[III ##$<=== !:: "_ ;   !001FHXYYY ())--lKHHH $(0BCCCCCC)__name__ __module__ __qualname__rstrrK __classcell__)rs@rrrslVDiVDsVDVDVDVDVDVDVDVDVDVDVDrrN)aws_cdkrrrrrSrr_rrkr rLr rbr rtr rvr r|rrXr constructsraws_cdk.aws_lambdarrrrrrs! 00000000XDXDXDXDXD5XDXDXDXDXDr