由於Auto Scaling終止實例,因此我使用aws lambda執行自定義操作。它看起來像這樣AWS Lambda在完成生命週期操作時掛起
def scaledown_handler(event, context):
# customs actions
client = boto3.client('autoscaling')
response = client.complete_lifecycle_action(LifecycleHookName=event['detail']['LifecycleHookName'],
LifecycleActionToken=event['detail']['LifecycleActionToken'],
AutoScalingGroupName=event['detail']['AutoScalingGroupName'],
LifecycleActionResult='CONTINUE',
InstanceId=event['detail']['EC2InstanceId'])
的問題是,該功能只是掛在client.complete_lifecycle_action()
和完成由超時無任何反應,我的EC2實例總是「等待終止生命週期行動」。
aws autoscaling complete-lifecycle-action
在AWS CLI工作正常,但我需要從AWS拉姆達做到了這一點。如何找出complete_lifecycle_action()
爲什麼沒有響應而掛起?
您是否將Lambda函數放入VPC中? –
是的,Lambda與我的ec2實例處於相同的VPC。 –
你真的需要它在VPC嗎?如果您的VPC中沒有NAT網關,則Lambda功能將無法訪問VPC外的任何內容。 AWS API存在於VPC之外,因此Lambda函數正在嘗試訪問它的網絡超時。 –