

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.

# Acceso a Internet para VPC-connected flujos de trabajo
<a name="workflows-vpc-internet"></a>

Al conectar una AWS HealthOmics ejecución a una VPC, la ejecución solo puede acceder a los recursos disponibles en esa VPC. Para permitir que su ejecución acceda a la Internet pública o a AWS los servicios externos a la VPC, debe configurar la VPC con los recursos de red adecuados.

En este tema se describe cómo configurar la VPC para proporcionar acceso a Internet y una conectividad eficiente a AWS los servicios durante sus VPC-connected carreras. Para obtener información sobre la conexión de ejecuciones a una VPC, consulte. [Conexión de HealthOmics flujos de trabajo a una VPC](workflows-vpc-networking.md)

**importante**  
La conexión de una ejecución a una subred pública no le proporciona acceso a Internet ni una dirección IP pública. Utilice siempre subredes privadas con rutas de puerta de enlace NAT para las carreras que requieran conectividad a Internet.

**Topics**
+ [Configuración de una VPC con acceso a Internet](#vpc-internet-setup)
+ [Terminales de VPC para servicios AWS](#vpc-endpoints)
+ [Configuración del grupo de seguridad](#vpc-internet-security-groups)
+ [Configuración de la tabla de rutas](#vpc-internet-route-tables)
+ [Permisos de IAM para los servicios AWS](#vpc-iam-permissions)
+ [Prueba de conectividad de VPC](#vpc-testing-connectivity)
+ [Ejemplos](#vpc-internet-examples)
+ [Prácticas recomendadas](#vpc-internet-best-practices)

## Configuración de una VPC con acceso a Internet
<a name="vpc-internet-setup"></a>

Para que sus VPC-connected carreras tengan acceso a Internet, cree una VPC con subredes privadas que enruten el tráfico saliente a través de una puerta de enlace NAT.

Esta configuración proporciona:
+ Subredes privadas para tareas de HealthOmics flujo de trabajo
+ Subredes públicas con puertas de enlace NAT para el acceso saliente a Internet

### Regiones y zonas de disponibilidad admitidas
<a name="vpc-internet-regions-azs"></a>

HealthOmics Los flujos de trabajo funcionan en las siguientes regiones y zonas de disponibilidad. Al crear la VPC, asegúrese de que las subredes estén en una o más de estas zonas de disponibilidad.



- **us-west-2**
  - **Nombre de la zona de disponibilidad:** us-west-2a / **ID de zona de disponibilidad:** usw2-az2
  - **Nombre de la zona de disponibilidad:** us-west-2b / **ID de zona de disponibilidad:** usw2-az1
  - **Nombre de la zona de disponibilidad:** us-west-2c / **ID de zona de disponibilidad:** usw2-az3
  - **Nombre de la zona de disponibilidad:** us-west-2d / **ID de zona de disponibilidad:** usw2-az4

- **us-east-1**
  - **Nombre de la zona de disponibilidad:** us-east-1a / **ID de zona de disponibilidad:** use1-az4
  - **Nombre de la zona de disponibilidad:** us-east-1b / **ID de zona de disponibilidad:** use1-az6
  - **Nombre de la zona de disponibilidad:** us-east-1c / **ID de zona de disponibilidad:** use1-az1
  - **Nombre de la zona de disponibilidad:** us-east-1d / **ID de zona de disponibilidad:** use1-az2
  - **Nombre de la zona de disponibilidad:** us-east-1f / **ID de zona de disponibilidad:** use1-az5

- **eu-west-1**
  - **Nombre de la zona de disponibilidad:** eu-west-1a / **ID de zona de disponibilidad:** euw1-az2
  - **Nombre de la zona de disponibilidad:** eu-west-1b / **ID de zona de disponibilidad:** euw1-az3
  - **Nombre de la zona de disponibilidad:** eu-west-1c / **ID de zona de disponibilidad:** euw1-az1

- **eu-central-1**
  - **Nombre de la zona de disponibilidad:** eu-central-1a / **ID de zona de disponibilidad:** euc1-az2
  - **Nombre de la zona de disponibilidad:** eu-central-1b / **ID de zona de disponibilidad:** euc1-az3
  - **Nombre de la zona de disponibilidad:** eu-central-1c / **ID de zona de disponibilidad:** euc1-az1

- **eu-west-2**
  - **Nombre de la zona de disponibilidad:** eu-west-2a / **ID de zona de disponibilidad:** euw2-az2
  - **Nombre de la zona de disponibilidad:** eu-west-2b / **ID de zona de disponibilidad:** euw2-az3
  - **Nombre de la zona de disponibilidad:** eu-west-2c / **ID de zona de disponibilidad:** euw2-az1

- **ap-southeast-1**
  - **Nombre de la zona de disponibilidad:** ap-southeast-1a / **ID de zona de disponibilidad:** apse1-az2
  - **Nombre de la zona de disponibilidad:** ap-southeast-1b / **ID de zona de disponibilidad:** apse1-az1
  - **Nombre de la zona de disponibilidad:** ap-southeast-1c / **ID de zona de disponibilidad:** apse1-az3

- **il-central-1**
  - **Nombre de la zona de disponibilidad:** il-central-1a / **ID de zona de disponibilidad:** ilc1-az1
  - **Nombre de la zona de disponibilidad:** il-central-1b / **ID de zona de disponibilidad:** ilc1-az2
  - **Nombre de la zona de disponibilidad:** il-central-1c / **ID de zona de disponibilidad:** ilc1-az3

- **ap-northeast-2**
  - **Nombre de la zona de disponibilidad:** ap-northeast-2a / **ID de zona de disponibilidad:** apne2-az1
  - **Nombre de la zona de disponibilidad:** ap-northeast-2b / **ID de zona de disponibilidad:** apne2-az2
  - **Nombre de la zona de disponibilidad:** ap-northeast-2c / **ID de zona de disponibilidad:** apne2-az3



1. En la consola de Amazon VPC, elija Create **VPC**.

1. Seleccione **VPC y más** para crear automáticamente una VPC con subredes públicas y privadas.

1. Configure los siguientes ajustes:
   + **Número de zonas de disponibilidad: 2** o más
   + **Número de subredes públicas**: una por zona de disponibilidad. En este ejemplo, 2
   + **Número de subredes privadas**: una por zona de disponibilidad. En este ejemplo, 2
   + **Puertas de enlace NAT**: 1 por AZ (para producción) o 1 (para development/testing)
   + **Puntos de enlace de VPC:** punto de enlace de S3 Gateway (opcional: el tráfico de Amazon S3 en la región se enruta a través de la VPC del HealthOmics servicio de forma predeterminada)

Al crear la configuración de HealthOmics VPC, especifique las subredes privadas. Las ejecuciones utilizan la puerta de enlace NAT de la subred pública para acceder a Internet.

## Terminales de VPC para servicios AWS
<a name="vpc-endpoints"></a>

Puede configurar los puntos de enlace de la VPC para permitir que las ejecuciones accedan a AWS los servicios sin atravesar la Internet pública. Esto mejora la seguridad y puede reducir los costes de transferencia de datos.

**importante**  
Si su definición de flujo de trabajo necesita acceder a AWS servicios (como consultas de Amazon Athena, operaciones de Amazon DynamoDB u otras llamadas a la API), debe asegurarse de que los puntos de enlace de VPC necesarios estén configurados en su VPC. Sin los puntos de enlace adecuados, su flujo de trabajo podría fallar y provocar errores de autenticación o conectividad.

**nota**  
In-Region El tráfico de Amazon S3 se enruta a través de la VPC del HealthOmics servicio de forma predeterminada. Si configura los puntos de enlace de la interfaz Amazon S3, el tráfico se enruta a través de su VPC. Recomendamos utilizar los puntos de enlace de Amazon S3 para optimizar el rendimiento y los costes. Para obtener más información, consulte los [puntos de enlace de puerta de enlace para Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html) en la *AWS PrivateLink guía*.

En la siguiente tabla se enumeran los puntos finales de VPC que se utilizan con más frecuencia para las ejecuciones: HealthOmics 


| Servicio | Tipo de punto de conexión | Endpoint name (Nombre del punto de conexión) | 
| --- | --- | --- | 
| Amazon S3 | Puerta de enlace | com.amazonaws. {{region}}.s3 | 
| Tablas de Amazon S3 | Interfaz | com.amazonaws. {{region}}Tablas.s3 | 
| Amazon ECR (API) | Interfaz | com.amazonaws. {{region}}.ecr.api | 
| Amazon ECR (Docker) | Interfaz | com.amazonaws. {{region}}.ecr.dkr | 
| SSM | Interfaz | com.amazonaws. {{region}}.ssm | 
| CloudWatch Registros | Interfaz | com.amazonaws. {{region}}.logs | 
| Amazon Athena | Interfaz | com.amazonaws. {{region}}.athena | 

La lista completa de los servicios a los que puede acceder a través de los AWS PrivateLink puntos finales se encuentra en [AWS los servicios que](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html) se integran con. AWS PrivateLink Para obtener instrucciones detalladas sobre la configuración de los terminales, consulte [Acceder a AWS los servicios AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) en la *AWS PrivateLink Guía*.

### Requisitos de NAT Gateway
<a name="vpc-nat-gateway-requirements"></a>

Para carreras que requieren acceso público a Internet:
+ La puerta de enlace NAT debe implementarse en una subred pública
+ La subred pública debe tener una ruta a un Internet Gateway
+ Las subredes privadas (donde se ejecutan las ejecuciones) deben tener rutas a la puerta de enlace NAT

**nota**  
Las pasarelas NAT incurren en cargos por hora y por procesamiento de datos. Para optimizar los costos, considere usar puntos finales de VPC para el acceso al AWS servicio en lugar de enrutarlo a través de NAT Gateway.

## Configuración del grupo de seguridad
<a name="vpc-internet-security-groups"></a>

Configure sus grupos de seguridad para permitir que el tráfico saliente llegue a los destinos a los que deben acceder sus carreras:
+ **Acceso público a Internet**: permita el tráfico HTTPS saliente (puerto 443). Agregue reglas para otros protocolos según sea necesario, como HTTP (puerto 80).
+ **Servicios específicos**: configure las reglas en función de sus requisitos.
+ **On-premises recursos**: permita que el tráfico llegue a sus rangos de VPN o CIDR.

El siguiente ejemplo muestra una regla de grupo de seguridad para el acceso público a Internet:


| Tipo | Protocolo | Rango de puerto | Destino | Description (Descripción) | 
| --- | --- | --- | --- | --- | 
| HTTPS | TCP | 443 | 0.0.0. 0/0 | Permitir el acceso a HTTPS a Internet | 

## Configuración de la tabla de rutas
<a name="vpc-internet-route-tables"></a>

Asegúrese de que sus subredes privadas tengan entradas en la tabla de enrutamiento que dirijan el tráfico con destino a Internet a una puerta de enlace NAT:


| Destino | Target | 
| --- | --- | 
| 10.0.0. 0/16 | local | 
| 0.0.0. 0/0 | nat-xxxxxxxxx | 

Para acceder a los recursos locales, configure las rutas a una puerta de enlace o puerta de enlace privada virtual.

## Permisos de IAM para los servicios AWS
<a name="vpc-iam-permissions"></a>

Cuando sus tareas de flujo de trabajo accedan a AWS servicios como Amazon Athena, AWS Glue o Amazon DynamoDB en el modo de red de VPC, debe añadir los permisos necesarios al rol de servicio que transfiere a la API. `StartRun` Sin estos permisos, las tareas de flujo de trabajo fallarán o se producirán errores. `AccessDeniedException` `UnauthorizedException`

**importante**  
Los permisos de la función de servicio son independientes de la configuración de red de la VPC. Incluso con los puntos finales de VPC y los grupos de seguridad configurados correctamente, el flujo de trabajo fallará si la función de servicio carece de los permisos de IAM necesarios.

Si su flujo de trabajo falla debido a errores de permisos, compruebe los CloudWatch registros correspondientes a la ejecución del flujo de trabajo. Los mensajes de error más comunes incluyen `AccessDeniedException: You are not authorized to perform: action on the resource` (al rol de servicio le falta el permiso de IAM requerido) o `UnrecognizedClientException: The security token included in the request is invalid` (la política de confianza del rol de servicio puede estar mal configurada o el ARN del rol al que se le `StartRun` ha pasado es incorrecto).

### Permisos de servicio comunes
<a name="vpc-iam-common-services"></a>

Los siguientes ejemplos muestran los permisos de IAM para los AWS servicios que se utilizan con más frecuencia en los flujos de trabajo en modo VPC. Agregue estos permisos a su política de roles de servicio en función de los servicios a los que acceda su flujo de trabajo.

**Example permisos**  
Para los flujos de trabajo que ejecutan consultas:  

```
{
  "Effect": "Allow",
  "Action": [
    "athena:StartQueryExecution",
    "athena:GetQueryExecution",
    "athena:GetQueryResults",
    "athena:StopQueryExecution"
  ],
  "Resource": "arn:aws:athena:{{region}}:{{account-id}}:workgroup/{{workgroup-name}}"
}
```

**Example AWS Glue Permisos del catálogo de datos**  
Para los flujos de trabajo que acceden a AWS Glue bases de datos y tablas (normalmente se utilizan con Amazon Athena):  

```
{
  "Effect": "Allow",
  "Action": [
    "glue:GetDatabase",
    "glue:GetTable",
    "glue:GetPartitions",
    "glue:CreateTable",
    "glue:UpdateTable"
  ],
  "Resource": [
    "arn:aws:glue:{{region}}:{{account-id}}:catalog",
    "arn:aws:glue:{{region}}:{{account-id}}:database/{{database-name}}",
    "arn:aws:glue:{{region}}:{{account-id}}:table/{{database-name}}/*"
  ]
}
```
Si lo utiliza AWS Lake Formation para administrar los permisos de su catálogo de AWS Glue datos, también debe conceder los permisos de Lake Formation correspondientes. Para obtener más información, consulta [los permisos de Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lake-formation-permissions.html) en la *Guía para AWS Lake Formation desarrolladores*.

**Example Permisos de DynamoDB**  
Para los flujos de trabajo que leen o escriben en tablas de DynamoDB:  

```
{
  "Effect": "Allow",
  "Action": [
    "dynamodb:GetItem",
    "dynamodb:PutItem",
    "dynamodb:Query",
    "dynamodb:Scan"
  ],
  "Resource": "arn:aws:dynamodb:{{region}}:{{account-id}}:table/{{table-name}}"
}
```

**Example Permisos de Amazon S3 Tables**  
Para los flujos de trabajo que leen o escriben en tablas de Amazon S3:  

```
{
  "Effect": "Allow",
  "Action": [
    "s3tables:GetTableData",
    "s3tables:PutTableData"
  ],
  "Resource": "arn:aws:s3tables:{{region}}:{{account-id}}:bucket/{{bucket-name}}/table/{{table-id}}"
}
```
Amazon S3 Tables utiliza un punto de enlace diferente al de Amazon S3. Debe configurar un punto de enlace de VPC para Amazon S3 Tables y asegurarse de que su grupo de seguridad permita el tráfico HTTPS saliente (puerto 443) al servicio Amazon S3 Tables.

## Prueba de conectividad de VPC
<a name="vpc-testing-connectivity"></a>

Antes de ejecutar los flujos de trabajo de producción, compruebe que la configuración de la VPC permita la conectividad con los servicios externos necesarios.

### Cree un flujo de trabajo de prueba
<a name="vpc-test-workflow"></a>

Cree un flujo de trabajo sencillo que pruebe la conectividad con su servicio externo. Por ejemplo, cree un flujo de trabajo que intente establecer una conexión TCP a un punto final del servicio de destino.

### Ejecute la prueba
<a name="vpc-run-test"></a>

```
aws omics start-run \
  --workflow-id {{test-workflow-id}} \
  --role-arn {{role-arn}} \
  --output-uri s3://{{bucket-name}}/test-outputs/ \
  --networking-mode VPC \
  --configuration-name {{configuration-name}} \
  --parameters file://test-parameters.json
```

### Verificar los resultados
<a name="vpc-verify-results"></a>

Compruebe el resultado del flujo de trabajo para confirmar que la conectividad se ha realizado correctamente:

```
{
  "connectivity_test.result": "Testing connection to external service...\nSUCCESS: Connection successful!\nTest completed"
}
```

Si la prueba no es satisfactoria, compruebe lo siguiente:
+ Las reglas del grupo de seguridad permiten el tráfico saliente a los puertos y destinos requeridos.
+ Las tablas de enrutamiento dirigen el tráfico a una puerta de enlace NAT para el acceso a Internet.
+ Se puede acceder al servicio externo desde su red.
+ Hay suficientes ENI disponibles en su cuenta.
+ La puerta de enlace NAT se encuentra en una subred pública con una ruta a una puerta de enlace de Internet.

**nota**  
El rendimiento de la red comienza en 10 Gbps por ENI y se amplía hasta 100 Gbps en un período de 60 minutos con tráfico continuo. Para flujos de trabajo con requisitos inmediatos de alto rendimiento, póngase en contacto con Support AWS .

## Ejemplos
<a name="vpc-internet-examples"></a>

### Acceso a los datos del NCBI con autenticación mediante API
<a name="vpc-example-ncbi"></a>

En este ejemplo se muestra cómo acceder a los datos del NCBI mediante la API de conjuntos de datos del NCBI con autenticación.

**Mejores prácticas para acceder a los recursos del NCBI**  
Los clientes deben usar la API REST siempre que sea posible y utilizar una clave de API proporcionada por el NCBI. Las solicitudes de acceso a los recursos del NCBI, como las solicitudes HTTP y FTP de datos públicos, procederán de terceros HealthOmics y se limitarán según la tarifa de terceros establecida por el NCBI. Es posible que se produzcan errores de ejecución debido a errores de aceleración durante los picos de uso. Recomendamos a los usuarios que obtengan su propia clave de API del NCBI y utilicen API especializadas para permitir una mayor simultaneidad y una mejor experiencia de desarrollo.

Para obtener su clave de API del NCBI, consulte la documentación sobre las claves de API del [NCBI](https://www.ncbi.nlm.nih.gov/datasets/docs/v2/api/api-keys/).

**Ejemplo de definición de flujo de trabajo:**

```
version 1.0
#WORKFLOW DEFINITION

# Meant to be used as integration test for public internet access via VPC tunnel
workflow TestFlow {
    input {
        String ncbi_api_url = "https://api.ncbi.nlm.nih.gov/datasets/v2/gene/accession/NM_021803.4?api_key=<YOUR_API_KEY>"
    }

    call DataProcessTask{
        input:
            ncbi_api_url = ncbi_api_url,
    }

    output {
        File output_file = DataProcessTask.output_file
    }

}

#Task Definitions
task DataProcessTask {
    input {
        String ncbi_api_url
    }

    command <<<
        set -eu
        # Download file from NCBI Datasets API with API key
        curl -fsSL "~{ncbi_api_url}" -o gene_data.json

        # Add data processing task here
        cat gene_data.json > processed_data.json

        # Echo the content to output file
        cat processed_data.json > outfile.txt
    >>>

    output {
        File output_file = "outfile.txt"
    }
}
```

**Puntos clave:**
+ `<YOUR_API_KEY>`Sustitúyala por tu clave API NCBI actual
+ El flujo de trabajo utiliza HTTPS para acceder a la API de conjuntos de datos del NCBI
+ La clave de API se pasa como parámetro de URL
+ Este enfoque proporciona límites de velocidad más altos (10 solicitudes por segundo) en comparación con el acceso no autenticado (5 solicitudes por segundo)

Para obtener más información sobre las claves de la API y los límites de velocidad del NCBI, consulte la documentación de la API de conjuntos de datos del [NCBI](https://www.ncbi.nlm.nih.gov/datasets/docs/v2/api/api-keys/).

## Prácticas recomendadas
<a name="vpc-internet-best-practices"></a>

1. **Utilice puntos finales de VPC para los servicios. AWS ** Configure los puntos de enlace de VPC para Amazon S3, Amazon ECR y otros AWS servicios a fin de reducir los costes de las puertas de enlace NAT y mejorar el rendimiento. Para obtener más información, consulte [Terminales de VPC para servicios AWS](#vpc-endpoints).

1. **Supervise los costos de la red.** Las redes de VPC generan costos por las puertas de enlace NAT, la transferencia de datos y los ENI. Supervise su consumo con AWS Cost Explorer.

1. **Planifique las zonas de disponibilidad.** Asegúrese de que sus subredes abarquen las zonas de disponibilidad en las que HealthOmics opera para respaldar la ubicación del flujo de trabajo.

1. **Utilice puertas de enlace NAT en cada zona de disponibilidad.** Para las cargas de trabajo de producción, implemente una puerta de enlace NAT en cada zona de disponibilidad para proporcionar redundancia.