如何为aws lambda python代码将时间戳设置为aws区域时区

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 [ 印度标准时区 ]。您需要执行以下步骤。

  1. 在函数的配置选项卡中,向下滚动到环境变量部分。
  2. 单击编辑并添加值为 Asia/Calcutta [ For IST ] 的变量 TZ。

它应该如下所示

在此输入图像描述

保存环境变量后,您的环境将使用 TZ 变量中提到的时区。

  • 这对我有用!对于那些正在寻找放置在这里的时区值的人,请查看此链接 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones (3认同)