San*_*Nag 6 python amazon-web-services aws-lambda
在我的基于主键“deviceId”和 sortkey 时间戳(采用 YYYY-MM-DD HH:MN:SS 格式)扫描 dynamodb 的 python lambda 代码中,我需要扫描每个最近 15 分钟的数据(从现在开始) 。我在孟买地区 (ap-south-1),如何在以下 lambda 代码中设置本地时区。因为它选择默认的 utc 日期时间。理想情况下,lambda 必须扫描 & 如果返回计数 >= 10 则 Thermostat+5 。
import boto3
import math
import json
import time
from datetime import datetime,timedelta
from dateutil.tz import tzlocal
from boto3.dynamodb.conditions import Key, Attr
client = boto3.client('dynamodb')
dynamodb = boto3.resource('dynamodb')
def lambda_handler(event, context):
#table_name= "thermostat_dynamo"
table_name= "newsensor"
Primary_Column_Name = 'deviceId'
table = dynamodb.Table(table_name)
#key_param = "thermostat"
#thermostatVal = table.get_item(Key={key_param:event[key_param]}) ## get record from dynamodb for this sensor
thermostatVal= 77
#now = datetime.now()
now = datetime.now(tzlocal())
fifteen_min_ago = now - timedelta(seconds=900)
now = now.strftime('%F %T')
fifteen_min_ago = fifteen_min_ago.strftime('%F %T')
fe = Key('timeStamp').between(fifteen_min_ago,now);
response = table.scan(FilterExpression=fe & Attr('temperature').lt(thermostatVal))
if response['Count'] == 10:
#return thermostatVal+5
thermonew = thermostatVal + 5
tosensor = '{"thermostat":'+'"%s"}' %thermonew
print(tosensor)
#response = client.publish(topic="updatehomesensor", qos=1, payload=tosensor)
return
elif response['Count'] < 10:
#tosensor = '{"thermostat":'+'"%s"}' %thermostatVal
print('{"thermostat":'+'"%s"}' %thermostatVal)
#response = client.publish(topic="updatehomesensor", qos=1, payload=tosensor)
return
Run Code Online (Sandbox Code Playgroud)
小智 22
所有 Lambda 实例均设置为 UTC 时区。如果您想更改该行为,则需要更新环境变量。
下面的详细文档提到 TZ 作为保留环境变量 https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html。
因此,在您的情况下,您想要设置 lambda 以使用 IST [ 印度标准时区 ]。您需要执行以下步骤。
它应该如下所示
保存环境变量后,您的环境将使用 TZ 变量中提到的时区。
| 归档时间: |
|
| 查看次数: |
15639 次 |
| 最近记录: |