in chalice/deploy/planner.py [0:0]
def _plan_sqseventsource(self, resource):
# type: (models.SQSEventSource) -> Sequence[InstructionMsg]
queue_arn_varname = '%s_queue_arn' % resource.resource_name
uuid_varname = '%s_uuid' % resource.resource_name
function_arn = Variable(
'%s_lambda_arn' % resource.lambda_function.resource_name
)
if not isinstance(resource.queue, models.QueueARN):
instruction_for_queue_arn = self._arn_parse_instructions(
function_arn)
instruction_for_queue_arn.append(
models.StoreValue(
name=queue_arn_varname,
value=StringFormat(
'arn:{partition}:sqs:{region_name}:{account_id}:%s' % (
resource.queue
),
['partition', 'region_name', 'account_id'],
),
)
)
queue_name = resource.queue
else:
instruction_for_queue_arn = [
models.StoreValue(
name=queue_arn_varname,
value=resource.queue.arn,
)
]
queue_name = resource.queue.queue_name
if self._remote_state.resource_exists(resource):
deployed = self._remote_state.resource_deployed_values(resource)
uuid = deployed['event_uuid']
return instruction_for_queue_arn + [
models.APICall(
method_name='update_lambda_event_source',
params={
'event_uuid': uuid,
'batch_size': resource.batch_size,
'maximum_batching_window_in_seconds':
resource.maximum_batching_window_in_seconds,
'maximum_concurrency': resource.maximum_concurrency
}
)
] + self._batch_record_resource(
'sqs_event', resource.resource_name, {
'queue_arn': deployed['queue_arn'],
'event_uuid': uuid,
'queue': queue_name,
'lambda_arn': deployed['lambda_arn'],
}
)
return instruction_for_queue_arn + [
(models.APICall(
method_name='create_lambda_event_source',
params={'event_source_arn': Variable(queue_arn_varname),
'batch_size': resource.batch_size,
'maximum_batching_window_in_seconds':
resource.maximum_batching_window_in_seconds,
'maximum_concurrency': resource.maximum_concurrency,
'function_name': function_arn},
output_var=uuid_varname,
), 'Subscribing %s to SQS queue %s\n'
% (resource.lambda_function.function_name, resource.queue)
),
] + self._batch_record_resource(
'sqs_event', resource.resource_name, {
'queue_arn': Variable(queue_arn_varname),
'event_uuid': Variable(uuid_varname),
'queue': queue_name,
'lambda_arn': Variable(function_arn.name)
}
)