

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 al almacenamiento sin conexión entre cuentas
<a name="feature-store-cross-account-access-offline-store"></a>

 Amazon SageMaker Feature Store permite a los usuarios crear un grupo de características en una cuenta (cuenta A) y configurarlo con una tienda offline utilizando un bucket de Amazon S3 en otra cuenta (cuenta B). Puede configurar esto según los pasos de la siguiente sección.

**Topics**
+ [Paso 1: Configurar el rol de acceso al almacenamiento sin conexión en la cuenta A](#feature-store-setup-step1)
+ [Paso 2: Configurar un bucket de Amazon S3 para el almacenamiento sin conexión en la cuenta B](#feature-store-setup-step2)
+ [Paso 3: Configura una clave de AWS KMS cifrado para una tienda offline en la cuenta A](#feature-store-setup-step3)
+ [Paso 4: Crear un grupo de características en la cuenta A](#feature-store-setup-step4)

## Paso 1: Configurar el rol de acceso al almacenamiento sin conexión en la cuenta A
<a name="feature-store-setup-step1"></a>

En primer lugar, configura un rol para que Amazon SageMaker Feature Store escriba los datos en la tienda offline. La forma más sencilla de lograrlo es crear un nuevo rol con la política `AmazonSageMakerFeatureStoreAccess` o usar un rol existente que ya tenga asociada la política `AmazonSageMakerFeatureStoreAccess`. Este documento se refiere a esta política como `Account-A-Offline-Feature-Store-Role-ARN`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::*SageMaker*",
                "arn:aws:s3:::*Sagemaker*",
                "arn:aws:s3:::*sagemaker*"
            ]
        }
    ]
}
```

------

El fragmento de código anterior muestra la política `AmazonSageMakerFeatureStoreAccess`. De forma predeterminada, la sección `Resource` de la política se limita a los buckets de S3 con nombres que contienen `SageMaker`, `Sagemaker` o `sagemaker`. Esto significa que el bucket Amazon S3 del almacenamiento sin conexión que se utilice debe seguir esta convención de nomenclatura. Si este no es su caso, o si desea delimitar aún más el recurso, puede copiar y pegar la política en su política de bucket de Amazon S3 en la consola, personalizar la sección `Resource` para que sea `arn:aws:s3:::your-offline-store-bucket-name` y, a continuación, asociarla al rol. 

Además, este rol debe tener AWS KMS permisos adjuntos. Como mínimo, se requiere el permiso `kms:GenerateDataKey` para poder escribir en el almacenamiento sin conexión con la clave administrada por el cliente. Consulta el paso 3 para saber por qué se necesita una clave administrada por el cliente en un escenario entre cuentas y cómo configurarla. El siguiente ejemplo muestra una política insertada: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:*:111122223333:key/*"
        }
    ]
}
```

------

La sección `Resource` de esta política se aplica a cualquier clave de la cuenta A. Para delimitar esto aún más, después de configurar la clave de KMS del almacenamiento sin conexión en el paso 3, vuelva a esta política y sustitúyala por el ARN de la clave.

## Paso 2: Configurar un bucket de Amazon S3 para el almacenamiento sin conexión en la cuenta B
<a name="feature-store-setup-step2"></a>

Cree un bucket de Amazon S3 en la cuenta B. Si utiliza la política `AmazonSageMakerFeatureStoreAccess` predeterminada, el nombre del bucket debe incluir `SageMaker`, `Sagemaker` o `sagemaker`. Edite la política de bucket como se muestra en el siguiente ejemplo para permitir que la cuenta A lea y escriba objetos.

En este documento se hace referencia al siguiente ejemplo de política de bucket como `Account-B-Offline-Feature-Store-Bucket`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3CrossAccountBucketAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetBucketAcl"
            ],
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN"
                ]
            },
            "Resource": [
                "arn:aws:s3:::offline-store-bucket-name/*",
                "arn:aws:s3:::offline-store-bucket-name"
            ]
        }
    ]
}
```

------

En la política anterior, la principal es `Account-A-Offline-Feature-Store-Role-ARN` la función creada en la cuenta A en el paso 1 y proporcionada a Amazon SageMaker Feature Store para que escriba en la tienda offline. Puede proporcionar varios roles de ARN en `Principal`.

## Paso 3: Configura una clave de AWS KMS cifrado para una tienda offline en la cuenta A
<a name="feature-store-setup-step3"></a>

Amazon SageMaker Feature Store garantiza que el cifrado del lado del servidor esté siempre activado para los objetos de Amazon S3 de la tienda offline. En los casos de uso entre cuentas, debe proporcionar una clave administrada por el cliente para controlar quién puede escribir en el almacenamiento sin conexión (en este caso, `Account-A-Offline-Feature-Store-Role-ARN` de la cuenta A) y quién puede leer desde el almacenamiento sin conexión (en este caso, las identidades de la cuenta B). 

En este documento se hace referencia al siguiente ejemplo de política de claves como `Account-A-Offline-Feature-Store-KMS-Key-ARN`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "key-consolepolicy-3",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow access for Key Administrators",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                "arn:aws:iam::111122223333:role/Administrator"
                ]
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow Feature Store to get information about the customer managed key",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "kms:Describe*",
                "kms:Get*",
                "kms:List*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "Account-A-Offline-Feature-Store-Role-ARN",
                    "arn:aws:iam::444455556666:root"
                ]
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:DescribeKey",
                "kms:CreateGrant",
                "kms:RetireGrant",
                "kms:ReEncryptFrom",
                "kms:ReEncryptTo",
                "kms:GenerateDataKey",
                "kms:ListAliases",
                "kms:ListGrants"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Paso 4: Crear un grupo de características en la cuenta A
<a name="feature-store-setup-step4"></a>

A continuación, cree el grupo de características en la cuenta A, con un bucket de Amazon S3 de almacenamiento sin conexión en la cuenta B. Para ello, proporcione los siguientes parámetros para `RoleArn`, `OfflineStoreConfig.S3StorageConfig.KmsKeyId` y `OfflineStoreConfig.S3StorageConfig.S3Uri`, respectivamente: 
+ Proporcione `Account-A-Offline-Feature-Store-Role-ARN` como `RoleArn`.
+ Proporcione `Account-A-Offline-Feature-Store-KMS-Key-ARN` para `OfflineStoreConfig.S3StorageConfig.KmsKeyId`.
+ Proporcione `Account-B-Offline-Feature-Store-Bucket` para `OfflineStoreConfig.S3StorageConfig.S3Uri`.