首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS CloudFormation -根据通过参数传入的完全限定域名计算IP

问AWS CloudFormation -根据通过参数传入的完全限定域名计算IP
EN

Stack Overflow用户
提问于 2020-04-16 02:03:58
回答 1查看 70关注 0票数 0

我希望用户传入一个完全合格的域名(FQDN),它不一定是AWS云的一部分。我要求FQDN对用户更友好(我知道要求IP会使这件事变得非常简单)。我想获取这个FQDN,计算它的IP,并在安全组入口CidrIp属性中使用该IP。

如何计算IP?

我的参数

代码语言:javascript
复制
Parameters:
  FQDN: 
    Type: String   #Pass in FQDN as a String
    Description: The Fully Qualified Domain Name (FQDN) of your server

我的安全组

代码语言:javascript
复制
SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    DependsOn: Subnet
    Properties:
      GroupDescription: Security Group governing ingress and egress rules.
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 8443
          ToPort: 8443
          CidrIp: <IP of FQDN>/32
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-16 06:56:16

您可以使用lambda支持的自定义资源来实现这一点,lambda将接受FQDN参数,确定IP,然后将其返回以在安全组资源中引用。

作为一个示例,下面是CloudFormation的外观(在这个特定的示例中使用SAM ):

代码语言:javascript
复制
Transform: AWS::Serverless-2016-10-31

Parameters:
  FQDN:
    Type: String

Resources:
  GetIpFromFqdnFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: main.handler
      Runtime: python3.7
      CodeUri: ./

  GetIpFromFqdn:
    Type: Custom::GetIpFromFqdn
    Properties:
      ServiceToken: !GetAtt GetIpFromFqdnFunction.Arn
      FQDN: !Ref FQDN

  SecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: SG allowing IP from given FQDN
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: !Sub ${GetIpFromFqdn}/32

使用crhelper处理事件时,lambda可能看起来像这样

代码语言:javascript
复制
from crhelper import CfnResource
import socket

helper = CfnResource()

def handler(event, context):
    helper(event, context)


@helper.create
@helper.update
def get_ip_from_fqdn(event, _):
    fqdn = event['ResourceProperties']['FQDN']
    ip = socket.gethostbyname(fqdn)

    return ip


@helper.delete
def no_op(_, _):
    pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61235535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档