检查S3存储桶是否包含最新的层包,并使用正确的ARN更新Lambda层版本。
代码示例:
import boto3
s3_bucket_name = 'your_bucket_name' layer_name = 'your_layer_name' layer_bucket_key = 'your_layer_bucket_key'
s3 = boto3.resource('s3') bucket = s3.Bucket(s3_bucket_name)
for obj in bucket.objects.filter(Prefix=layer_bucket_key): if obj.key.endswith('.zip'): print(f'{obj.key} is the latest layer package in {s3_bucket_name}') break else: raise ValueError(f'No layer package found in {s3_bucket_name}')
import boto3
layer_name = 'your_layer_name' layer_description = 'your_layer_description' layer_runtime = 'your_layer_runtime' layer_handler = 'your_layer_handler' layer_bucket_key = 'your_layer_bucket_key'
lambda_client = boto3.client('lambda')
response = lambda_client.publish_layer_version( LayerName=layer_name, Description=layer_description, Content={ 'S3Bucket': 'your_bucket_name', 'S3Key': layer_bucket_key }, CompatibleRuntimes=[layer_runtime], LicenseInfo='MIT', CompatibleArchitectures=['x86_64'], )
layer_arn = response['LayerVersionArn']
response = lambda_client.update_function_configuration( FunctionName='your_function_name', Layers=[layer_arn], )
print(f'Lambda function {response["FunctionName"]} is now using layer {layer_arn}')