在使用AWS SDK或CLI命令以编程方式注册/注销目标组时,可能会出现无限循环的情况。这会导致目标组无法成功更新,可能会影响负载均衡器的正常运行。
解决这个问题的方法是为每个目标组定义唯一的身份标识符。使用这个标识符在注册/注销过程中进行检查,以避免无限循环。
以下是一个使用Python AWS SDK的示例代码片段,演示了如何为目标组定义身份标识符,并在注册/注销过程中使用它:
import boto3
import hashlib
elbv2 = boto3.client('elbv2')
def register_target_group(target_group_arn, target_id):
identifier = hashlib.sha256(target_id.encode('utf-8')).hexdigest()
response = elbv2.register_targets(
TargetGroupArn=target_group_arn,
Targets=[
{
'Id': target_id,
'Port': 80,
'AvailabilityZone': 'us-west-2a',
'Weight': 1,
'CfInstanceId': identifier # 使用标识符进行检查
},
]
)
return response
def deregister_target_group(target_group_arn, target_id):
identifier = hashlib.sha256(target_id.encode('utf-8')).hexdigest()
response = elbv2.deregister_targets(
TargetGroupArn=target_group_arn,
Targets=[
{
'Id': target_id,
'CfInstanceId': identifier # 使用标识符进行检查
},
]
)
return response