Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

467
Vistas
Cómo resolver la dependencia circular entre los recursos de AWS utilizando AWS CDK

Estoy creando recursos de S3, SQS y KMS con aws cdk. Habilité el cifrado en los recursos de S3 y SQS. Cuando habilité la notificación de S3 a SQS, recibo un error de dependencia circular. Cuando elimino la configuración de KMS de mi código, funciona.

Repositorio de GitHub: https://github.com/techcoderunner/s3-sqs-kms-sample

 from aws_cdk import aws_kms as kms from aws_cdk import aws_s3 as s3 from aws_cdk import aws_sqs as sqs from aws_cdk import aws_s3_notifications as s3notif kms_key = kms.Key(self, 'ssl_s3_sqs_kms_key', alias='sslS3SqsKmsKey', description='This is kms key', enabled=True, enable_key_rotation=True, policy=kms_policy_document, ) # Create the S3 bucket bucket = s3.Bucket( self, "ssl_s3_bucket_raw_kms", bucket_name="ssl-s3-bucket-kms-raw", encryption=s3.BucketEncryption.KMS, encryption_key=kms_key, ) # Create the SQS queue queue = sqs.Queue( self, "ssl_sqs_event_queue", queue_name="ssl-sqs-kms-event-queue", encryption=sqs.QueueEncryption.KMS, encryption_master_key=kms_key, ) # Create S3 notification object which points to SQS notification = s3notif.SqsDestination(queue) filter1 = s3.NotificationKeyFilter(prefix="home/") # Attach notificaton event to S3 bucket bucket.add_event_notification(s3.EventType.OBJECT_CREATED,notification,filter1)
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Abrí un informe de error de GitHub para esto.

Parece que el problema raíz es que se agrega la siguiente condición a la clave KMS:

Plantilla de salida de CDK ssls3sqskmskey83E47315.Properties.KeyPolicy.Statement[1] :

 { "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Condition": { "ArnLike": { "aws:SourceArn": { "Fn::GetAtt": [ "ssls3bucketrawkms4B1E1122", "Arn" ] } } }, },

El depósito de S3 depende de la clave de KMS para el cifrado, y la clave de KMS tiene una condición que depende del depósito de S3.

Solución alterna

Pude implementar la pila después de usar escotillas de escape para eliminar la condición:

 # Delete the circular reference cfn_kms_key = kms_key.node.default_child cfn_kms_key.add_property_deletion_override("KeyPolicy.Statement.1")

código de solución disponible aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda