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.

Añadiendo clave de cifrado a un objeto ya creado en un cubo S3.

Tengo un cubo creado en una región diferente sin encriptación. Quiero agregar una encriptación KMS al objeto del cubo.

@staticmethod
def change_bucket_encryption(
        stack: Stack,
        bucket_arn: str,
        bucket_id: str,
        kms_key: aws_kms.Key) -> s3.Bucket:
    """Cambia la encriptación del cubo."""
    bucket = s3.Bucket.from_bucket_arn(
        scope=stack,
        id=bucket_id,
        bucket_arn=bucket_arn
    )
    bucket.encryption_key = kms_key
    return bucket

Esto está arrojando el siguiente error:

AttributeError: no se puede asignar el atributo 'encryption_key'
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error, no se puede establecer el atributo encryption_key para el objeto Bucket. En cambio, el objeto Bucket en AWS CDK debe crearse con la configuración de encriptación establecida.

    Para agregar encriptación KMS al objeto de bucket, puedes modificar el código de AWS CDK que crea el bucket. Aquí tienes un ejemplo de cómo crear un bucket con encriptación KMS:

    from aws_cdk import (
        core,
        aws_s3 as s3,
        aws_kms as kms,
    )
    
    class MyStack(core.Stack):
        def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
            super().__init__(scope, id, **kwargs)
    
            my_kms_key = kms.Key(
                self, 'MyKmsKey',
                alias='my/kms/key',
                description='Mi clave KMS'
            )
    
            my_bucket = s3.Bucket(
                self, 'MyBucket',
                encryption=s3.BucketEncryption.KMS,
                encryption_key=my_kms_key,
                bucket_name='nombre-de-mi-bucket',
                versioned=True,
                removal_policy=core.RemovalPolicy.DESTROY
            )
    

    En este ejemplo:

    • Se crea una clave KMS utilizando aws_kms.Key y se le asigna el nombre “MyKmsKey”.
    • Se crea un bucket de S3 utilizando aws_s3.Bucket.
    • Se establece el atributo encryption en s3.BucketEncryption.KMS para habilitar la encriptación KMS para el bucket.
    • Se establece el atributo encryption_key en la clave KMS creada anteriormente.
    • Otros atributos como bucket_name, versioned y removal_policy pueden configurarse según tus requisitos.

    Después de actualizar el código para crear el bucket con encriptación, puedes utilizar la función change_bucket_encryption para modificar la clave de encriptación del bucket si es necesario.

Comments are closed.