【发布时间】:2021-11-15 04:49:11
【问题描述】:
我在非默认 VPC 的私有子网中使用无服务器创建了一个 lambda 函数。我想在计划的时间重新启动 elasticbeanstalk 应用程序的应用服务器。我使用了 boto3,这里是参考 [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/elasticbeanstalk.html][1]
问题是当我在本地运行该函数时,它会运行并重新启动应用程序服务器。但是当我使用 sls deploy 进行部署时,它无法正常工作,并且当我从 lambda 控制台对其进行测试时,我得到了空响应。
代码如下:
import json
from logging import log
from loguru import logger
import boto3
from datetime import datetime
import pytz
def main(event, context):
try:
client = boto3.client("elasticbeanstalk", region_name="us-west-1")
applications = client.describe_environments()
current_hour = datetime.now(pytz.timezone("US/Eastern")).hour
for env in applications["Environments"]:
applicationname = env["EnvironmentName"]
if applicationname == "xxxxx-xxx":
response = client.restart_app_server(
EnvironmentName=applicationname,
)
logger.info(response)
print("restarted the application")
return {"statusCode": 200, "body": json.dumps("restarted the instance")}
except Exception as e:
logger.exception(e)
if __name__ == "__main__":
main("", "")
这里是 serverless.yml 文件:
service: beanstalk-starter
frameworkVersion: '2'
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
profile: xxxx-admin
region: us-west-1
memorySize: 512
timeout: 15
vpc:
securityGroupIds:
- sg-xxxxxxxxxxx (open on all ports for inbound)
subnetIds:
- subnet-xxxxxxxxxxxxxxxx (private)
- subnet-xxxxxxxxxxxxxxxx (private)
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
functions:
main:
handler: handler.main
events:
- schedule: rate(1 minute)
来自 lambda 控制台的响应:
The area below shows the result returned by your function execution. Learn more about returning results from your function.
null
任何帮助将不胜感激!让我知道我在这里缺少什么!
【问题讨论】:
标签: python amazon-web-services aws-lambda amazon-elastic-beanstalk boto3