def METHOD_NAME(
    self,
    subnet_id: str,
    allocation_id: str,
    tags: Optional[Dict[str, str]] = None,
    connectivity_type: str = "public",
) -> NatGateway:
    nat_gateway = NatGateway(
        self, subnet_id, allocation_id, tags, connectivity_type
    )
    address_set: Dict[str, Any] = {}
    if allocation_id:
        eips = self.address_by_allocation([allocation_id])  # type: ignore[attr-defined]
        eip = eips[0] if len(eips) > 0 else None
        if eip:
            address_set["allocationId"] = allocation_id
            address_set["publicIp"] = eip.public_ip or None
            address_set["associationId"] = eip.association_id or None
    address_set["networkInterfaceId"] = nat_gateway._eni.id
    address_set["privateIp"] = nat_gateway._eni.private_ip_address
    nat_gateway.address_set.append(address_set)
    self.nat_gateways[nat_gateway.id] = nat_gateway
    return nat_gateway