es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La operación CreateDeviceFleet de AWS ha fallado porque “el ID de cuenta no tiene propiedad sobre el bucket”.

Estoy teniendo un problema con AWS cuando intento crear un conjunto de dispositivos con Sagemaker:

import boto3

sagemaker_client = boto3.client('sagemaker', region_name=AWS_REGION)
sagemaker_client.create_device_fleet(
    DeviceFleetName=device_fleet_name,
    RoleArn=iot_role_arn,
    OutputConfig={
        'S3OutputLocation': s3_device_fleet_output
    }
)

Genera la siguiente excepción:

ClientError: Se produjo un error (ValidationException) al llamar a la operación CreateDeviceFleet: El ID de cuenta <my-account-id> no tiene propiedad en el bucket: <bucket-name>

No lo entiendo porque yo creé el bucket, así que debería ser el propietario. No he encontrado cómo verificar o cambiar la propiedad del bucket.

Intenté cambiar la política del bucket de la siguiente manera pero no funcionó.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Statement1",
            "Principal": {
                "AWS": "arn:aws:iam::<id>:user/<user>"
            },
            "Effect": "Allow",
            "Action": "<em>",
            "Resource": [
                "arn:aws:s3:::<bucket-name>",
                "arn:aws:s3:::<bucket-name>/*"
            ]
        }
    ]
}

También lo intenté con la interfaz gráfica de Sagemaker, pero falló por la misma razón (ValidationException, el ID de cuenta <my-account-id> no tiene propiedad en el bucket: <bucket-name>).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás enfrentando está relacionado con la propiedad del bucket de S3. Aunque creaste el bucket, es posible que la cuenta asociada a tus credenciales de AWS no tenga la propiedad del bucket. Puedes intentar los siguientes pasos para verificar y modificar la propiedad del bucket:

    1. Verificar quién es el propietario del bucket – Puedes verificar quién es el propietario del bucket yendo a la consola de S3, seleccionando el bucket en cuestión y revisando el campo “Propietario del Bucket” en la pestaña “Descripción general” (Overview). Si el bucket es propiedad de una cuenta diferente, puedes contactar al propietario para que te conceda la propiedad o te brinde acceso al bucket.
    2. Concederte la propiedad del bucket – Si tienes los permisos necesarios, puedes otorgarte la propiedad del bucket utilizando la AWS CLI. Utiliza el siguiente comando, reemplazando con el nombre de tu bucket:

    aws s3api put-bucket-ownership-control --bucket <nombre-del-bucket> --ownership-controls
         Owns
    

    Esto establece la propiedad a la cuenta de AWS asociada con tus credenciales.

    1. Conceder permisos a Sagemaker para acceder al bucket – Si el problema de propiedad se ha resuelto, puedes verificar la política del bucket de S3 para asegurarte de que Sagemaker tenga los permisos necesarios para leer/escribir en el bucket. Puedes utilizar la siguiente política como ejemplo, reemplazando con el nombre de tu bucket y con tu ID de cuenta de AWS:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AccesoSagemaker",
                "Effect": "Allow",
                "Principal": {
                    "Service": "sagemaker.amazonaws.com"
                },
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::<nombre-del-bucket>/*"
                ]
            }
        ]
    }
    

    Una vez que hayas actualizado la política, intenta crear nuevamente el conjunto de dispositivos y verifica si el problema se ha resuelto.

    Si los pasos anteriores no ayudan, también puedes intentar crear un nuevo bucket de S3 y otorgarle propiedad a tu cuenta antes de intentar utilizarlo con Sagemaker.

Comments are closed.