in chalice/deploy/planner.py [0:0]
def _plan_lambdalayer(self, resource):
# type: (models.LambdaLayer) -> Sequence[InstructionMsg]
api_calls = [] # type: List[InstructionMsg]
filename = cast(str, resource.deployment_package.filename)
# Automatically clean up old layer versions.
# See:
# https://docs.aws.amazon.com/lambda/latest/dg/API_DeleteLayerVersion.html
msg = 'Creating'
if self._remote_state.resource_exists(resource):
state = self._remote_state.resource_deployed_values(resource)
# Deleting a layer version won't break functions still using it.
# From the doc link above:
#
# "To avoid breaking functions, a copy of the version remains in
# Lambda until no functions refer to it."
api_calls.append(
models.APICall(
method_name='delete_layer_version',
params={'layer_version_arn': state['layer_version_arn']}
)
)
msg = 'Updating'
api_calls.extend([(
models.APICall(
method_name='publish_layer',
params={'layer_name': resource.layer_name,
'zip_contents': self._osutils.get_file_contents(
filename, binary=True),
'runtime': resource.runtime},
output_var='layer_version_arn'
), "%s lambda layer: %s\n" % (msg, resource.layer_name)),
models.RecordResourceVariable(
resource_type='lambda_layer',
resource_name=resource.resource_name,
name='layer_version_arn',
variable_name='layer_version_arn',
)])
return api_calls