def __init__()

in infra/bulkloader/throttled_indexer.py [0:0]


  def __init__(self, scope: Construct, id: str, riv_stack:IVpcRivStack, sharedStorage:RivSharedDataStores, subnet_group_name:str='Default', env:Mapping[str,str]={}, **kwargs) -> None:
    super().__init__(scope, id, **kwargs, riv_stack=riv_stack, subnet_group_name=subnet_group_name, env=env)

    '''
    Configure the Input Queue with redrive policy into a DLQ 
    '''
    self.dead_letter_queue = sqs.Queue(self,'DeadLetterQueue')

    self.input_queue = sqs.Queue(self,'InputQueue',
      retention_period= core.Duration.days(7),
      visibility_timeout= self.function_timeout,
      dead_letter_queue=sqs.DeadLetterQueue(
        max_receive_count=3,
        queue=self.dead_letter_queue))

    '''
    Configure the lambda to trigger from the queue.
    '''
    self.function.add_event_source(events.SqsEventSource(
      queue= self.input_queue,
      batch_size = 1))

    '''
    Grant additional permissions on the image bucket...
    '''
    #sharedStorage.images.image_bucket.grant_read(self.function.role)
    self.function.role.add_to_policy(statement=iam.PolicyStatement(
      effect= iam.Effect.ALLOW,
      actions=[
        's3:GetObject*',
        's3:GetBucket*',
        's3:List*',
        's3:PutObjectTagging',
      ],
      resources=[
        sharedStorage.images.image_bucket.bucket_arn,
        sharedStorage.images.image_bucket.bucket_arn+'/*'
      ]))

    '''
    Grant read access to the SSM Parameters...
    '''
    self.function.role.add_to_policy(statement=iam.PolicyStatement(
      effect= iam.Effect.ALLOW,
      actions=['ssm:GetParameter*'],
      resources=['arn:aws:ssm:{}:{}:parameter/riv/{}/userportal/url'.format(
        core.Stack.of(self).region, core.Aws.ACCOUNT_ID, riv_stack.riv_stack_name)]
    ))