AWS Lambda别名只会记录INIT_START事件到CloudWatch可能是因为别名设置中没有将相应的别名与日志组关联。要解决这个问题,需要在Lambda函数中添加以下代码:
import logging
import os
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def lambda_handler(event, context):
logger.info('Function initiated')
# 根据需求执行其他操作
然后,在函数配置中创建别名并将其与相关的日志组关联。这样就能够将日志发到CloudWatch。
import boto3
client = boto3.client('lambda')
def create_alias():
response = client.create_alias(
FunctionName='function_name',
Name='alias_name',
FunctionVersion='function_version',
Description='alias_description'
)
#将日志关联到别名
response = client.put_function_logging_permission(
FunctionName='function_name',
StatementId='statement_id', #可选
Principal='principal',
SourceArn='arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/function_name:*',
#替换为你的日志组ARN
#接受CURRENT、LATEST和也非数字$LATEST作为有效的FunctionVersion
FunctionVersion='LATEST',
#加入以下条目以避免在未指定日期时存在无期限访问
#Condition={
#'key':'value'
#}
)
create_alias()
这样一来,AWS Lambda别名中的所有事件都将记录到指定的日志组并被记录到CloudWatch中。