Lambda函数会按执行时间(以100毫秒为单位)计算费用。 当Lambda函数处于空闲状态时,AWS会自动删除旧的计算实例以减少成本,因此不会计算费用。但是当Lambda函数使用了其他AWS服务时(例如Amazon S3),可能会产生费用。
具体来说,如果Lambda函数注册了S3事件通知(例如在对象创建时触发Lambda函数)并且等待S3事件的触发,则AWS Lambda函数不会收取与等待事件的持续时间相关的费用。当事件触发时,Lambda函数将根据其实际执行时间计算费用。这意味着,当Lambda函数处于等待状态而不执行计算时,不会计算费用。只有在调用回调函数或返回结果前,Lambda函数才会收取费用。
以下是一个使用S3触发Lambda函数的示例代码:
import boto3
def lambda_handler(event, context):
# Get the object from the event and show its content type
s3 = boto3.client('s3')
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
obj = s3.get_object(Bucket=bucket, Key=key)
body = obj['Body'].read()
print("Content type: " + obj['ContentType'])
print("Content:\n" + body.decode('utf-8'))
在这个例子中,当S3对象被创建时,Lambda函数将被触发并获取该对象的内容类型和内容。由于Lambda函数在等待S3事件时不会产生费用,因此只有当Lambda函数实际执行才会收取费用。