

# Registrar una ubicación
<a name="access-grants-location-register"></a>

Tras [crear una instancia de Concesiones de acceso a Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html) en una Región de AWS de su cuenta, puede registrar una ubicación de S3 en esa instancia. Una ubicación de Concesiones de acceso a Amazon S3 asigna la ubicación predeterminada de S3 (`s3://`), un bucket o un prefijo a un rol de AWS Identity and Access Management (IAM). Concesiones de acceso a Amazon S3 asume este rol de IAM para vender credenciales temporales al beneficiario que accede a esa ubicación en particular. En primer lugar, debe registrar al menos una ubicación en su instancia de Concesiones de acceso a Amazon S3 para poder crear una concesión de acceso. 

**Caso de uso recomendado**  
Le recomendamos que registre la ubicación predeterminada (`s3://`) y la asigne a un rol de IAM. La ubicación en la ruta de S3 predeterminada (`s3://`) cubre el acceso a todos los buckets de S3 en esa Región de AWS de su cuenta. Al crear una concesión de acceso, puede limitar el ámbito de la concesión a un bucket, un prefijo o un objeto dentro de la ubicación predeterminada. 

**Casos de uso de administración de acceso complejos**  
Los casos de uso de administración de acceso más complejos pueden requerir que registre una ubicación diferente a la predeterminada. Estos son algunos ejemplos de estos casos de uso:
+ Supongamos que *amzn-s3-demo-bucket* es una ubicación registrada en su instancia de Concesiones de acceso a Amazon S3 con un rol de IAM asignado, pero a este rol de IAM se le niega el acceso a un prefijo concreto del bucket. En este caso, puede registrar el prefijo al que el rol de IAM no tiene acceso como una ubicación independiente y asignar esa ubicación a un rol de IAM diferente con el acceso necesario. 
+ Supongamos que desea crear concesiones que restrinjan el acceso solo a los usuarios dentro de un punto de conexión a la nube privada virtual (VPC). En este caso, puede registrar una ubicación para un bucket en el que el rol de IAM restrinja el acceso al punto de conexión de VPC. Más adelante, cuando un beneficiario solicite las credenciales a Concesiones de acceso a Amazon S3, este asumirá el rol de IAM de la ubicación para vender las credenciales temporales. Esta credencial denegará el acceso al bucket específico, a menos que el iniciador se encuentre dentro del punto de conexión de VPC. Esta denegación de permiso se aplica además del permiso normal READ, WRITE o READWRITE que se especifica en la concesión.

Al registrar una ubicación, también debe especificar el rol de IAM que Concesiones de acceso a Amazon S3 asume para vender credenciales temporales y limitar el ámbito de los permisos para una concesión específica. 

Si su caso de uso requiere que registre varias ubicaciones en su instancia de Concesiones de acceso a Amazon S3, puede registrar cualquiera de las siguientes opciones:


| S3 URI | rol de IAM | Descripción | 
| --- | --- | --- | 
| s3:// | Default-IAM-role |  La ubicación predeterminada, `s3://`, incluye todos los buckets de Región de AWS.  | 
| s3://amzn-s3-demo-bucket1/ | IAM-role-For-bucket |  En esta ubicación se incluyen todos los objetos del bucket especificado.  | 
| s3://amzn-s3-demo-bucket1/prefix-name | IAM-role-For-prefix |  En esta ubicación se incluyen todos los objetos del bucket con un nombre de clave de objeto que comience con este prefijo.  | 

Antes de poder registrar un bucket o prefijo específicos, asegúrese de que hace lo siguiente:
+ Cree uno o varios buckets que contengan los datos a los que desea otorgar acceso. Estos bucket deben encontrarse en la misma Región de AWS que su instancia de S3 Access Grants. Para obtener más información, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html). 

  La adición de un prefijo es un paso opcional. Los prefijos son cadenas al principio del nombre de la clave del objeto. Puede utilizarlos para organizar los objetos en su bucket, así como para administrar el acceso. Para añadir un prefijo a un bucket, consulte [Creación de nombres de clave de objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html). 
+ Cree un rol de IAM que tenga permisos para acceder a sus datos de S3 en la Región de AWS. Para obtener más información, consulte [Creación de roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) en la *AWS IAM Identity CenterGuía del usuario de *. 
+  En la política de confianza del rol de IAM, proporcione al servicio de Concesiones de acceso a Amazon S3 acceso de entidad principal (`access-grants.s3.amazonaws.com`) al rol de IAM que ha creado. Para ello, puede crear un archivo JSON que contenga las siguientes instrucciones. Para agregar la política de confianza a su cuenta, consulte [Creación de un rol mediante políticas de confianza personalizadas](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html).

  *TestRolePolicy.json*

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
      "Statement": [
      {
        "Sid": "TestRolePolicy",
        "Effect": "Allow",
        "Principal": {
          "Service": "access-grants.s3.amazonaws.com"
        },
        "Action": [
          "sts:AssumeRole", 
          "sts:SetSourceIdentity"
        ],
        "Condition": {
          "StringEquals": {
            "aws:SourceAccount": "111122223333",
            "aws:SourceArn": "arn:aws:s3::111122223333:access-grants/default"
          }
        }
      }
    ]
  }
  ```

------

  Como alternativa, para un caso de uso del IAM Identity Center, utilice la siguiente política que incluye una segunda instrucción:
+ Cree una política de IAM para asociar permisos de Amazon S3 al rol de IAM que ha creado. Consulte el siguiente archivo `iam-policy.json` de ejemplo y sustituya `user input placeholders` por su propia información. 
**nota**  
Si utiliza el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) para cifrar sus datos, en el siguiente ejemplo se incluyen los permisos de AWS KMS necesarios para el rol de IAM de la política. Si no utiliza esta característica, puede eliminar estos permisos de su política de IAM. 
Puede restringir el acceso del rol de IAM a los datos de S3 solo si S3 Access Grants ofrece las credenciales. En este ejemplo se muestra cómo añadir una instrucción `Condition` para una instancia de S3 Access Grants. Para usar esta `Condition`, sustituya el ARN de instancia de Concesiones de acceso a Amazon S3 en la instrucción `Condition` por el ARN de instancia de Concesiones de acceso a Amazon S3, que tiene el siguiente formato: `arn:aws:s3:region:accountId:access-grants/default`. 

  *iam-policy.json*

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
         {
           "Sid": "ObjectLevelReadPermissions",
           "Effect":"Allow",
           "Action":[
              "s3:GetObject",
              "s3:GetObjectVersion",
              "s3:GetObjectAcl",
              "s3:GetObjectVersionAcl",
              "s3:ListMultipartUploadParts"
           ],
           "Resource":[ 
              "arn:aws:s3:::*"  
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"]
              }
          } 
        },
        {
           "Sid": "ObjectLevelWritePermissions",
           "Effect":"Allow",
           "Action":[
              "s3:PutObject",
              "s3:PutObjectAcl",
              "s3:PutObjectVersionAcl",
              "s3:DeleteObject",
              "s3:DeleteObjectVersion",
              "s3:AbortMultipartUpload"
           ],
           "Resource":[
              "arn:aws:s3:::*"  
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"]
              }
           } 
        },
        {
           "Sid": "BucketLevelReadPermissions",
           "Effect":"Allow",
           "Action":[
              "s3:ListBucket"
           ],
           "Resource":[
              "arn:aws:s3:::*"
           ],
           "Condition":{
              "StringEquals": { "aws:ResourceAccount": "accountId" },
              "ArnEquals": {
                  "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"]
              }
           }     
        },
  	  //Optionally add the following section if you use SSE-KMS encryption
        {
           "Sid": "KMSPermissions",
           "Effect":"Allow",
           "Action":[
              "kms:Decrypt",
              "kms:GenerateDataKey"
           ],
           "Resource":[
              "*"
           ]
        }
     ]
  }
  ```

Puede registrar una ubicación en su instancia de S3 Access Grants mediante la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), la API de REST de Amazon S3 o los SDK de AWS.

**nota**  
 Tras registrar la primera ubicación en su instancia de Concesiones de acceso a Amazon S3, la instancia seguirá sin tener ninguna concesión de acceso individual. Para crear una concesión de acceso, consulte [Crear concesiones](access-grants-grant-create.md). 

## Uso de la consola de S3
<a name="access-grants-location-register-console"></a>

Debe tener al menos una ubicación registrada antes de poder otorgar acceso a sus datos de S3 con S3 Access Grants. 

**Para registrar una ubicación en su instancia de S3 Access Grants**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, seleccione **Concesiones de acceso**.

1. En la página **S3 Access Grants**, seleccione la región que contiene la instancia de S3 Access Grants con la que quiere trabajar.

   Si es la primera vez que utiliza la instancia de S3 Access Grants, asegúrese de haber completado el [Paso 1: Crear una instancia de S3 Access Grants](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-instance-create.html)) y de haber navegado al **Paso 2** del asistente **Configurar la instancia de Concesiones de acceso**. Si ya tiene una instancia de S3 Access Grants, seleccione **Ver detalles** y, en la pestaña **Ubicaciones**, elija **Registrar ubicación**.

   1. En **Ámbito de ubicación**, elija **Examinar S3** o introduzca la ruta URI de S3 a la ubicación que desee registrar. Para ver los formatos de URI de S3, consulte la tabla de [formatos de ubicación](#location-types). Tras introducir un URI, puede seleccionar **Ver** para navegar hasta la ubicación. 

   1. En **Rol de IAM**, elija una de las siguientes opciones: 
      + **Elija entre los roles de IAM existentes**

        Elija un rol de IAM de la lista desplegable. Después de elegir un rol, elija **Ver** para asegurarse de que este rol tiene los permisos necesarios para administrar la ubicación que está registrando. En concreto, asegúrese de que este rol conceda a S3 Access Grants los permisos `sts:AssumeRole` y`sts:SetSourceIdentity`. 
      + **Introduzca el ARN del rol de IAM**

        Vaya a la [consola de IAM](https://console.aws.amazon.com/iam/). Copie el Nombre de recurso de Amazon (ARN) del rol de IAM y péguelo en este cuadro. 

   1. Para terminar, seleccione **Siguiente** o **Registrar ubicación.**

1. Solución de problemas:

**No se puede registrar la ubicación**
   + Es posible que la ubicación ya esté registrada.

     Puede que no tenga el permiso `s3:CreateAccessGrantsLocation` para registrar ubicaciones. Póngase en contacto con el administrador de la cuenta.

## Uso de AWS CLI
<a name="access-grants-location-register-cli"></a>

Para instalar AWS CLI, consulte [Instalación de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de AWS Command Line Interface*. 

Puede registrar la ubicación predeterminada, `s3://`, o una ubicación personalizada en su instancia de S3 Access Grants. Asegúrese de crear primero un rol de IAM con acceso de entidad principal a la ubicación y, después, de conceder el permiso a S3 Access Grants para asumir este rol. 

Para utilizar los comandos de ejemplo siguientes, sustituya `user input placeholders` con su información.

**Example Crear una política de recursos**  
Cree una política que permita que S3 Access Grants pueda asumir el rol de IAM. Para ello, puede crear un archivo JSON que contenga las siguientes instrucciones. Para añadir la política de recursos a su cuenta, consulte [Crear y asociar su primera política administrada por el cliente](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html).  
*TestRolePolicy.json*    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Stmt1234567891011",
      "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"],
      "Effect": "Allow",
      "Principal": {"Service": "access-grants.s3.amazonaws.com"}
    }
  ]
}
```

**Example Crear el rol**  
Ejecute el siguiente comando de IAM para crear el rol.  

```
aws iam create-role --role-name accessGrantsTestRole \
 --region us-east-2 \
 --assume-role-policy-document file://TestRolePolicy.json
```
Al ejecutar el comando `create-role` se devuelve la política:   

```
{
    "Role": {
        "Path": "/",
        "RoleName": "accessGrantsTestRole",
        "RoleId": "AROASRDGX4WM4GH55GIDA",
        "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole",
        "CreateDate": "2023-05-31T18:11:06+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",		 	 	 
            "Statement": [
                {
                    "Sid": "Stmt1685556427189",
                    "Action": [
                        "sts:AssumeRole",
                        "sts:SetSourceIdentity"
                    ],
                    "Effect": "Allow",
                    "Principal": {
                        "Service":"access-grants.s3.amazonaws.com"
                    }
                }
            ]
        }
    }
}
```

**Example**  
Crear una política de IAM para asociar permisos de Amazon S3 al rol de IAM. Consulte el siguiente archivo `iam-policy.json` de ejemplo y sustituya `user input placeholders` por su propia información.   
Si utiliza el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) para cifrar sus datos, en el siguiente ejemplo se añaden los permisos de AWS KMS necesarios para el rol de IAM de la política. Si no utiliza esta característica, puede eliminar estos permisos de su política de IAM.   
Para garantizar que el rol de IAM solo se pueda utilizar para acceder a los datos de S3 en caso de que S3 Access Grants proporcione las credenciales, en este ejemplo se muestra cómo añadir una instrucción `Condition` que especifique la instancia de S3 Access Grants (`s3:AccessGrantsInstance: InstanceArn`) en su política de IAM. Al utilizar la siguiente política de ejemplo, sustituya `user input placeholders` con su propia información.
*iam-policy.json*    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
         "Sid": "ObjectLevelReadPermissions",
         "Effect": "Allow",
         "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetObjectAcl",
            "s3:GetObjectVersionAcl",
            "s3:ListMultipartUploadParts"
         ],
         "Resource": [ 
            "arn:aws:s3:::*"  
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
        } 
      },
      {
         "Sid": "ObjectLevelWritePermissions",
         "Effect": "Allow",
         "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:PutObjectVersionAcl",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:AbortMultipartUpload"
         ],
         "Resource": [
            "arn:aws:s3:::*"  
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
         } 
      },
      {
         "Sid": "BucketLevelReadPermissions",
         "Effect": "Allow",
         "Action": [
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::*"
         ],
         "Condition": {
            "StringEquals": { "aws:ResourceAccount": "111122223333" },
            "ArnEquals": {
                "s3:AccessGrantsInstanceArn": ["arn:aws:s3:us-east-1::access-grants/default"]
            }
         }     
      },
      {
         "Sid": "KMSPermissions",
         "Effect": "Allow",
         "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
         ],
         "Resource": [
            "*"
         ],
         "Condition": {
            "StringEquals": {
               "kms:ViaService": "s3.us-east-1.amazonaws.com"
            }
         }
      }
   ]
}
```

**Example**  
Use el siguiente comando:  

```
aws iam put-role-policy \
--role-name accessGrantsTestRole \
--policy-name accessGrantsTestRole \
--policy-document file://iam-policy.json
```

**Example Registrar la ubicación predeterminada**  

```
aws s3control create-access-grants-location \
 --account-id 111122223333 \
 --location-scope s3:// \
 --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole
```
Respuesta:  

```
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "default",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default",
    "LocationScope": "s3://" 
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
}
```

**Example Registrar una ubicación personalizada**  

```
aws s3control create-access-grants-location \
 --account-id 111122223333 \
 --location-scope s3://DOC-BUCKET-EXAMPLE/ \
 --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole
```
Respuesta:  

```
{"CreatedAt": "2023-05-31T18:23:48.107000+00:00",
    "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456",
    "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888",
    "LocationScope": "s3://DOC-BUCKET-EXAMPLE/",
    "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole"
}
```

## Uso de la API de REST
<a name="access-grants-location-register-rest-api"></a>

Para obtener información sobre la compatibilidad con la API de REST de Amazon S3 para administrar una instancia de S3 Access Grants, consulte las siguientes secciones en la *Referencia de la API de Amazon Simple Storage Service*:
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_DeleteAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_GetAccessGrantsLocation.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_ListAccessGrantsLocations.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_UpdateAccessGrantsLocation.html) 

## Uso de los AWS SDK
<a name="access-grants-location-register-using-sdk"></a>

En esta sección se proporcionan ejemplos de cómo registrar ubicaciones con los SDK de AWS.

Para utilizar los siguientes ejemplos, reemplace los `user input placeholders` con su propia información.

------
#### [ Java ]

Puede registrar la ubicación predeterminada, `s3://`, o una ubicación personalizada en su instancia de S3 Access Grants. Asegúrese de crear primero un rol de IAM con acceso de entidad principal a la ubicación y, después, de conceder el permiso a S3 Access Grants para asumir este rol. 

Para utilizar los comandos de ejemplo siguientes, sustituya `user input placeholders` con su información.

**Example Registrar una ubicación predeterminada**  
Solicitud:  

```
public void createAccessGrantsLocation() {
CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.locationScope("s3://")
.iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole")
.build();
CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest);
LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse);
}
```
Response: (Respuesta:)  

```
CreateAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:11.027Z,
AccessGrantsLocationId=default,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default,
LocationScope=s3://,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
```

**Example Registrar una ubicación personalizada**  
Solicitud:  

```
public void createAccessGrantsLocation() {
CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder()
.accountId("111122223333")
.locationScope("s3://DOC-BUCKET-EXAMPLE/")
.iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole")
.build();
CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest);
LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse);
}
```
Response: (Respuesta:)  

```
CreateAccessGrantsLocationResponse(
CreatedAt=2023-06-07T04:35:10.027Z,
AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012,
AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666,
LocationScope= s3://test-bucket-access-grants-user123/,
IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole
)
```

------