Actualización del tipo de punto final AWS Transfer Family del servidor de VPC_ENDPOINT a VPC - AWS Transfer Family

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Actualización del tipo de punto final AWS Transfer Family del servidor de VPC_ENDPOINT a VPC

Puedes usar la AWS Management Console API Transfer Family o la API Transfer Family para actualizar el servidor EndpointType de VPC_ENDPOINT aVPC. AWS CloudFormation En las siguientes secciones se proporcionan procedimientos detallados y ejemplos para usar cada uno de estos métodos para actualizar un tipo de punto de conexión de servidor. Si tiene servidores en varias AWS regiones y en varias AWS cuentas, puede usar el script de ejemplo que se proporciona en la siguiente sección, con las modificaciones, para identificar los servidores mediante el VPC_ENDPOINT tipo que necesitará actualizar.

Identificar los servidores mediante el tipo de VPC_ENDPOINT punto de conexión

Puede identificar qué servidores utilizan VPC_ENDPOINT mediante AWS Management Console.

Identificación de los servidores que utilizan el punto de conexión VPC_ENDPOINT mediante la consola
  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. Seleccione Servidores en el panel de navegación para ver la lista de servidores de su cuenta en esa región.

  3. Ordene la lista de servidores por tipo de punto de conexión para ver todos los servidores que utilizan VPC_ENDPOINT.

Para identificar los servidores que se utilizan VPC_ENDPOINT en varias AWS regiones y cuentas

Si tiene servidores en varias AWS regiones y en varias AWS cuentas, puede utilizar el siguiente script de ejemplo, con modificaciones, para identificar los servidores mediante el tipo de VPC_ENDPOINT punto final. El script de ejemplo utiliza las llamadas a la ListServers API Amazon EC2 DescribeRegionsy Transfer Family para obtener una lista de los ID de servidor y las regiones de todos los servidores que utiliza. VPC_ENDPOINT Si tiene varias AWS cuentas, puede recorrerlas utilizando un rol de IAM con acceso de auditor de solo lectura si se autentica mediante perfiles de sesión ante su proveedor de identidad.

  1. A continuación se muestra un ejemplo simple.

    import boto3 profile = input("Enter the name of the AWS account you'll be working in: ") session = boto3.Session(profile_name=profile) ec2 = session.client("ec2") regions = ec2.describe_regions() for region in regions['Regions']: region_name = region['RegionName'] if region_name=='ap-northeast-3': #https://github.com/boto/boto3/issues/1943 continue transfer = session.client("transfer", region_name=region_name) servers = transfer.list_servers() for server in servers['Servers']: if server['EndpointType']=='VPC_ENDPOINT': print(server['ServerId'], region_name)
  2. Una vez que tenga la lista de servidores que desea actualizar, puede utilizar uno de los métodos descritos en las siguientes secciones para actualizar EndpointType a VPC.

Actualizar el tipo de punto final del servidor mediante el AWS Management Console

  1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

  2. En el panel de navegación, seleccione Servers (Servidores).

  3. Seleccione la casilla de verificación del servidor para el que desee cambiar el tipo de punto de conexión.

    importante

    Debe detener el servidor para poder cambiar el punto de conexión.

  4. En Acciones, seleccione Detener.

  5. En el cuadro de diálogo de confirmación que aparece, seleccione Detener para confirmar que desea detener el servidor.

    nota

    Antes de continuar con el siguiente paso, espere a que el estado del servidor cambie a Desconectado; esto puede tardar un par de minutos. Puede que tenga que elegir Actualizar en la página de Servidores para ver el cambio de estado.

  6. Cuando el estado cambie a Sin conexión, seleccione el servidor para que aparezca la página de detalles del servidor.

  7. En la sección Detalles del punto de conexión, elija Editar.

  8. Elija VPC alojada como tipo de punto de conexión.

  9. Seleccione Save.

  10. En Acciones, seleccione Iniciar y espere a que el estado del servidor cambie a En línea; esto puede tardar un par de minutos.

Actualización del tipo de punto final del servidor mediante AWS CloudFormation

En esta sección se describe AWS CloudFormation cómo actualizar el servidor EndpointType aVPC. Utilice este procedimiento para los servidores Transfer Family que haya desplegado mediante AWS CloudFormation. En este ejemplo, la AWS CloudFormation plantilla original utilizada para implementar el servidor Transfer Family se muestra de la siguiente manera:

AWS TemplateFormatVersion: '2010-09-09' Description: 'Create AWS Transfer Server with VPC_ENDPOINT endpoint type' Parameters: SecurityGroupId: Type: AWS::EC2::SecurityGroup::Id SubnetIds: Type: List<AWS::EC2::Subnet::Id> VpcId: Type: AWS::EC2::VPC::Id Resources: TransferServer: Type: AWS::Transfer::Server Properties: Domain: S3 EndpointDetails: VpcEndpointId: !Ref VPCEndpoint EndpointType: VPC_ENDPOINT IdentityProviderType: SERVICE_MANAGED Protocols: - SFTP VPCEndpoint: Type: AWS::EC2::VPCEndpoint Properties: ServiceName: com.amazonaws.us-east-1.transfer.server SecurityGroupIds: - !Ref SecurityGroupId SubnetIds: - !Select [0, !Ref SubnetIds] - !Select [1, !Ref SubnetIds] - !Select [2, !Ref SubnetIds] VpcEndpointType: Interface VpcId: !Ref VpcId

La plantilla se actualiza con los siguientes cambios:

  • EndpointType cambió a VPC.

  • Se ha eliminado el recurso AWS::EC2::VPCEndpoint.

  • SecurityGroupId, SubnetIds y VpcId pasaron a la sección EndpointDetails del recurso AWS::Transfer::Server,

  • Se ha eliminado VpcEndpointId propiedad de EndpointDetails.

La plantilla actualizada es el siguiente:

AWS TemplateFormatVersion: '2010-09-09' Description: 'Create AWS Transfer Server with VPC endpoint type' Parameters: SecurityGroupId: Type: AWS::EC2::SecurityGroup::Id SubnetIds: Type: List<AWS::EC2::Subnet::Id> VpcId: Type: AWS::EC2::VPC::Id Resources: TransferServer: Type: AWS::Transfer::Server Properties: Domain: S3 EndpointDetails: SecurityGroupIds: - !Ref SecurityGroupId SubnetIds: - !Select [0, !Ref SubnetIds] - !Select [1, !Ref SubnetIds] - !Select [2, !Ref SubnetIds] VpcId: !Ref VpcId EndpointType: VPC IdentityProviderType: SERVICE_MANAGED Protocols: - SFTP
Para actualizar el tipo de punto final de los servidores Transfer Family implementados mediante AWS CloudFormation
  1. Detenga el servidor que desea actualizar siguiendo estos pasos.

    1. Abra la AWS Transfer Family consola en https://console.aws.amazon.com/transfer/.

    2. En el panel de navegación, seleccione Servers (Servidores).

    3. Seleccione la casilla de verificación del servidor para el que desee cambiar el tipo de punto de conexión.

      importante

      Debe detener el servidor para poder cambiar el punto de conexión.

    4. En Acciones, seleccione Detener.

    5. En el cuadro de diálogo de confirmación que aparece, seleccione Detener para confirmar que desea detener el servidor.

      nota

      Antes de continuar con el siguiente paso, espere a que el estado del servidor cambie a Desconectado; esto puede tardar un par de minutos. Puede que tenga que elegir Actualizar en la página de Servidores para ver el cambio de estado.

  2. Actualice la CloudFormation pila

    1. Abre la AWS CloudFormation consola en https://console.aws.amazon.com/cloudformation.

    2. Seleccione la pila de que se va a utilizar para crear el servidor de Transfer Family.

    3. Elija Actualizar.

    4. Elija Reemplazar la plantilla actual

    5. Cargue la nueva plantilla. CloudFormation Los conjuntos de cambios le ayudan a comprender cómo afectarán los cambios en las plantillas a los recursos en ejecución antes de implementarlos. En este ejemplo, se modificará el recurso del servidor de transferencia y se eliminará el recurso VPCEndpoint. El servidor de tipo punto de conexión de VPC crea un punto de conexión de VPC en su nombre y reemplaza el recurso original VPCEndpoint.

      Tras cargar la nueva plantilla, el conjunto de cambios será el siguiente:

      Muestra la página de vista previa del conjunto de cambios para reemplazar la AWS CloudFormation plantilla actual.
    6. Actualice la pila.

  3. Cuando se complete la actualización de la pila, diríjase a la consola de administración de Transfer Family en https://console.aws.amazon.com/transfer/.

  4. Reinicie el servidor. Seleccione el servidor en el que ha realizado la actualización y AWS CloudFormation, a continuación, seleccione Iniciar en el menú Acciones.

Actualización del servidor EndpointType mediante la API

Puede usar el comando describe-server AWS CLI o el comando API UpdateServer. El siguiente script de ejemplo detiene el servidor Transfer Family, lo actualiza EndpointType, elimina el VPC_ENDPOINT e inicia el servidor.

import boto3 import time profile = input("Enter the name of the AWS account you'll be working in: ") region_name = input("Enter the AWS Region you're working in: ") server_id = input("Enter the AWS Transfer Server Id: ") session = boto3.Session(profile_name=profile) ec2 = session.client("ec2", region_name=region_name) transfer = session.client("transfer", region_name=region_name) group_ids=[] transfer_description = transfer.describe_server(ServerId=server_id) if transfer_description['Server']['EndpointType']=='VPC_ENDPOINT': transfer_vpc_endpoint = transfer_description['Server']['EndpointDetails']['VpcEndpointId'] transfer_vpc_endpoint_descriptions = ec2.describe_vpc_endpoints(VpcEndpointIds=[transfer_vpc_endpoint]) for transfer_vpc_endpoint_description in transfer_vpc_endpoint_descriptions['VpcEndpoints']: subnet_ids=transfer_vpc_endpoint_description['SubnetIds'] group_id_list=transfer_vpc_endpoint_description['Groups'] vpc_id=transfer_vpc_endpoint_description['VpcId'] for group_id in group_id_list: group_ids.append(group_id['GroupId']) if transfer_description['Server']['State']=='ONLINE': transfer_stop = transfer.stop_server(ServerId=server_id) print(transfer_stop) time.sleep(300) #safe transfer_update = transfer.update_server(ServerId=server_id,EndpointType='VPC',EndpointDetails={'SecurityGroupIds':group_ids,'SubnetIds':subnet_ids,'VpcId':vpc_id}) print(transfer_update) time.sleep(10) transfer_start = transfer.start_server(ServerId=server_id) print(transfer_start) delete_vpc_endpoint = ec2.delete_vpc_endpoints(VpcEndpointIds=[transfer_vpc_endpoint])