【问题标题】:CloudFormation : Create VPC Endpoint in the VPC in which a lambda is runningCloudFormation :在运行 lambda 的 VPC 中创建 VPC 端点
【发布时间】:2020-02-17 11:46:08
【问题描述】:

我有一个在 VPC 中运行的 lambda 函数。

我需要在此 VPC 中使用我拥有的服务名称创建一个终端节点。我已经创建了一个并通过控制台执行所有操作来测试从 lambda 到服务的连接。但现在我需要在 CFT 中执行此操作。

我知道如何创建 VPC 端点,但不知道如何将端点链接到运行 lambda 的 VPC 的 VPC Id。

这就是我创建 lambda 以在 VPC 中运行的方式。

Type: AWS::Serverless::Function
Properties:
  Handler: 'handleRequest'
  Runtime: java8
  CodeUri:
    Bucket: {}
    Key: BATS::SAM::CodeS3Key
  Description: Lambda.
  Timeout: 20
  Role:
    Fn::GetAtt: [LambdaRole, Arn]
  VpcConfig:
    Fn::If:
    - RunLambdaInVPC
    - SecurityGroupIds: [{Ref: LambdaSecurityGroup}]
      SubnetIds:
      - {'Fn::ImportValue': PrivateSubnet01}
      - {'Fn::ImportValue': PrivateSubnet02}
    - {Ref: 'AWS::NoValue'}

下面是我正在创建的 VPC 端点,但看不到如何提供 VPC Id:

Type: AWS::EC2::VPCEndpoint
Properties:
  SecurityGroupIds: [{Ref: LambdaSecurityGroup}]
  ServiceName: 'ServiceName'
  SubnetIds:
    - {'Fn::ImportValue': PrivateSubnet01}
    - {'Fn::ImportValue': PrivateSubnet02}
  VpcId : <??>

【问题讨论】:

  • VpcId 属性是The ID of the VPC in which the endpoint will be used. docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
  • @AmitBaranes 我知道,问题是如何获取 VPC 的 ID?我可以在控制台中看到创建 lambda 时堆栈默认创建的 VPC 的 ID,但我认为这不是创建对硬编码值的依赖的适当方式。
  • VPC 不是动态创建的,因此您绝对应该将其编码为配置(或环境变量)。启动私有网络需要了解所有私有 CIDR 以防止冲突。
  • @iammrmehul 模板似乎正在从另一个堆栈导入子网信息。其他堆栈也可以导出 VPC ID 吗?
  • @LostJon 专用网络实际上已经设置和测试。我唯一担心的是在专用链接 VPCE(我用来访问目标服务)中创建的 DNS 服务器名称基本上是硬编码的。我想通过在 CFT 中设置 VPCE 然后在其上使用 Fn::GetAttr 来获取 DNS 服务器名称,从而使其成为 CFT 的一部分。

标签: amazon-web-services aws-lambda amazon-cloudformation amazon-vpc


【解决方案1】:

回答您对@JohnRotenstein 的问题...

我在 AWS::ECU::Subnet aws 文档中看到子网可以返回 VPC ID。我可以简单地使用 Fn::GetAtt: [PrivateSubnet01, VpcId] 作为值吗?

不,你不能。您可以从创建子网的模板中的子网resource 中获取 VPC ID,但您不在该模板中并且没有子网资源。您有一个子网 ID(就是一个字符串,例如“subnet-1234abcd”)。

因此,修改创建 VPC(并输出子网 ID)的原始模板,使其也输出 VPC ID。然后将该 VPC ID 导入您的新模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-16
    • 2021-02-20
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2012-04-23
    • 2019-07-04
    相关资源
    最近更新 更多