【问题标题】:How to disconnect Amazon VPN using Lambda如何使用 Lambda 断开 Amazon VPN
【发布时间】:2017-09-23 01:28:42
【问题描述】:

我想创建 Amazon DirectConnect 连接作为 VPN 以将数据从我的公司网络传输到 RDS 实例。连接并不便宜,我当然不需要一直打开它。大概每天10分钟就够了。有没有办法使用 Lambda 函数来安排 VPN 连接的连接/断开事件,就像使用 Python 的 Boto3 库启动/停止 EC2 或 RDS 实例一样:

def handler(event, context):

    ec2 = boto3.client('ec2', region_name=region)

    ec2.start_instances(InstanceIds=instances)

虽然 Boto3 支持DirectConnect,但它似乎没有任何方法可以打开和关闭连接。有没有办法控制连接?

【问题讨论】:

  • 直觉表明像这样对系统进行游戏是不可能的。另外... Direct Connect 不是 VPN。
  • 即使您避免了 30c/小时的费率(或您为 Direct Connect 支付的任何费用),与您为将数据中心连接到 AWS 的光纤线路支付的任何费用相比,这都相形见绌。贵公司真的负担不起 7 美元/天?

标签: amazon-web-services aws-lambda vpn boto3 aws-direct-connect


【解决方案1】:

处理程序代码如下所示

def handler(event, context):
    client = boto3.client('directconnect')
    response = client.delete_connection(
        connectionId='string'
     )

此 lambda 只会删除按端口小时数和数据传输费用计费的连接。

如果您有定义的时间窗口,您可以创建 lambda 并使用触发器自动创建和删除连接。

文档可在此处获得:

http://boto3.readthedocs.io/en/latest/reference/services/directconnect.html#DirectConnect.Client.delete_connection

编辑 1:

将 LAG 与连接关联和解除关联:

http://boto3.readthedocs.io/en/latest/reference/services/directconnect.html#DirectConnect.Client.associate_connection_with_lag

http://boto3.readthedocs.io/en/latest/reference/services/directconnect.html#DirectConnect.Client.disassociate_connection_from_lag

您需要检查当所有连接被移除时是否不会产生相关的端口费用。这样您就可以维护您的 connectionid。

或者,您可以将您的 connectionid 作为参考存储在数据库中,并在需要时从那里提取。

希望对你有帮助。

【讨论】:

  • 所以重新连接将使用client.create_connection 方法?我怀疑这会生成一个带有新连接 ID 的新连接,对吧?如果是这种情况,我需要重新配置所有内容,例如具有新连接 ID 的虚拟接口。这种方式可能行不通,因为我真的想自动化日常的开关事件
猜你喜欢
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
相关资源
最近更新 更多