

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.

# Creación de plantillas de proyectos personalizadas
<a name="sagemaker-projects-templates-custom"></a>

**importante**  
El 28 de octubre de 2024, se eliminaron las AWS CodeCommit plantillas. Para proyectos nuevos, seleccione entre las plantillas de proyectos disponibles que usen repositorios de Git de terceros. Para obtener más información, consulte [MLOps Plantillas de proyectos](sagemaker-projects-templates.md).

Si las plantillas SageMaker proporcionadas por la IA no se ajustan a sus necesidades (por ejemplo, si desea disponer de una organización más compleja CodePipeline con varias etapas o pasos de aprobación personalizados), cree sus propias plantillas.

Te recomendamos que empieces por usar plantillas SageMaker proporcionadas por la IA para saber cómo organizar el código y los recursos y construir a partir de ellos. **Para ello, tras habilitar el acceso de administrador a las plantillas de SageMaker IA, inicia sesión en ellas, selecciona **Portafolios** y [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/), a continuación, selecciona Importados.** Para obtener información acerca de Service Catalog, consulte [Overview of Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html) en la *Guía del usuario de Service Catalog*.

Crea tus propias plantillas de proyecto para MLOps personalizarlo. SageMaker Las plantillas de proyectos de IA son productos aprovisionados por catálogo de servicios para aprovisionar los recursos de su proyecto. MLOps 

Complete los siguientes pasos para crear una plantilla de proyecto personalizada.

1. Cree una cartera. Para obtener información, consulte el [Paso 3: Crear una cartera de Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html).

1. Cree un producto. Un producto es una plantilla. CloudFormation Puede crear varias versiones del producto. Para obtener información, consulte el [Paso 4: Crear un producto de Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-product.html).

   Para que el producto funcione con SageMaker los proyectos, añade los siguientes parámetros a la plantilla del producto.

   ```
   SageMakerProjectName:
   Type: String
   Description: Name of the project
   
   SageMakerProjectId:
   Type: String
   Description: Service generated Id of the project.
   ```
**importante**  
Te recomendamos que agrupes el CodeCommit repositorio en el repositorio de código de SageMaker IA para que los repositorios del proyecto estén visibles en el modo VPC. La plantilla de ejemplo y la adición necesaria se muestran en los siguientes ejemplos de código.  
Plantilla original (de muestra):  

   ```
   ModelBuildCodeCommitRepository:
       Type: AWS::CodeCommit::Repository
       Properties:
         # Max allowed length: 100 chars
         RepositoryName: !Sub sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild # max: 10+33+15+10=68
         RepositoryDescription: !Sub SageMaker Model building workflow infrastructure as code for the Project ${SageMakerProjectName}
         Code:
           S3:
             Bucket: SEEDCODE_BUCKETNAME
             Key: toolchain/model-building-workflow-v1.0.zip
           BranchName: main
   ```
Contenido adicional que se agregará en el modo VPC:  

   ```
   SageMakerRepository:
       Type: AWS::SageMaker::CodeRepository
       Properties:
           GitConfig:
               RepositoryUrl: !GetAtt ModelBuildCodeCommitRepository.CloneUrlHttp
               Branch: main
   ```

1. Agregue una restricción de lanzamiento. Una restricción de lanzamiento designa un rol de IAM que asume Service Catalog cuando un usuario final lanza un producto. Para obtener información, consulte [Paso 6: Agregar una restricción de lanzamiento para asignar un rol de IAM](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchconstraint.html).

1. Aprovisiona el producto [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/)para probar la plantilla. Si ya ha terminado con la plantilla, continúe con el siguiente paso para que la plantilla esté disponible en Studio (o Studio Classic).

1. Conceda acceso a la cartera de Service Catalog que creó en el paso 1 a su rol de ejecución de Studio (o Studio Classic). Use el rol de ejecución del dominio o un rol de usuario que tenga acceso a Studio (o Studio Classic). Para obtener información sobre cómo agregar un rol a la cartera, consulte el [Paso 7: Otorgar a los usuarios finales acceso a la cartera](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-deploy.html).

1. Para que la plantilla de su proyecto esté disponible en la lista de **plantillas de su organización** en Studio (o Studio Classic), cree una etiqueta con la siguiente clave y valor para el producto Service Catalog que creó en el paso 2.
   + **clave**: `sagemaker:studio-visibility`
   + **valor**: `true`

Tras completar estos pasos, los usuarios de Studio (o Studio Classic) de su organización pueden crear un proyecto con la plantilla que ha creado si siguen los pasos que se indican [Creación de un MLOps proyecto con Amazon SageMaker Studio o Studio Classic](sagemaker-projects-create.md) y seleccionan **plantillas de la organización** a la hora de elegir una plantilla.

## Uso de una plantilla de un bucket de Amazon S3
<a name="sagemaker-projects-templates-s3"></a>

También puede crear SageMaker proyectos con plantillas almacenadas en Amazon S3.

**nota**  
Si bien puede utilizar las plantillas que contiene AWS Service Catalog, le recomendamos que las almacene en un bucket de S3 y cree proyectos con esas plantillas.

### Configuración de administrador
<a name="sagemaker-projects-templates-s3-setup"></a>

Antes de poder crear proyectos con plantillas en un bucket de S3, lleve a cabo los siguientes pasos.

1. [Cree un depósito de S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) y cargue las plantillas en el depósito.

1. [Configure una política CORS en su bucket de S3 para configurar los permisos de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html).

1. Añada la siguiente etiqueta clave-valor a la plantilla para que la IA pueda verla. SageMaker 

   ```
   sagemaker:studio-visibility : true
   ```

1. [Crear un dominio](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html).

1. Cuando SageMaker AI termine de crear tu dominio, añade la siguiente etiqueta clave-valor al dominio:

   ```
   sagemaker:projectS3TemplatesLocation : s3://<amzn-s3-demo-bucket>
   ```

A continuación, utilice la AWS consola, Python o las operaciones [CreateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProject.html)y [UpdateProject](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateProject.html)API para crear o actualizar un SageMaker proyecto a partir de plantillas incluidas en el bucket de S3.

------
#### [ Studio ]

**Crear un proyecto**

1. Abre la consola Amazon SageMaker AI en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. En el panel de navegación izquierdo, selecciona **Implementaciones**, **Proyectos** y **Crear proyecto**.

1. Seleccione **Plantillas de organización** y, a continuación, **Plantillas S3** para ver las plantillas que tiene a su disposición. Si no ve la plantilla que esperaba, notifíqueselo a su administrador.

1. Elija la plantilla que desee usar y, a continuación, elija **Siguiente**.

1. Introduce un nombre para el proyecto, una descripción opcional y los demás campos obligatorios. Cuando haya terminado, elija **Crear**.

**Actualiza un proyecto**

1. Abre la consola Amazon SageMaker AI en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Abre la consola de SageMaker Studio siguiendo las instrucciones de [Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html).

1. Elige el proyecto que deseas actualizar. Selecciona **Acciones** y, a continuación, selecciona **Actualizar proyecto**.

1. Al actualizar un proyecto, puede actualizar los parámetros de la plantilla o la URL de la plantilla. Cuando haya terminado, elija **Siguiente**.

1. Revise las actualizaciones del proyecto en la tabla de resumen y seleccione **Actualizar**.

------
#### [ Python Boto3 ]

Tras crear el bucket de S3 y cargar las plantillas, puede utilizar el siguiente ejemplo para crear un SageMaker proyecto.

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.create_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProviders=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

Para actualizar un SageMaker proyecto, consulta el siguiente ejemplo.

```
sagemaker_client = boto3.client('sagemaker', region_name='us-west-2')

response = sagemaker_client.update_project(
    ProjectName='my-custom-project',
    ProjectDescription='SageMaker project with custom CFN template stored in S3',
    TemplateProvidersToUpdate=[{
        'CfnTemplateProvider': {
            'TemplateName': 'CustomProjectTemplate',
            'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml',
            'Parameters': [
                {'Key': 'ParameterKey', 'Value': 'ParameterValue'}
            ]
        }
    }]
)
print(f"Project ARN: {response['ProjectArn']}")
```

------