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

476
Vistas
AWS: ¿Cómo actualizar una política de depósito S3 existente a través de CloudFormation?

Tengo un depósito de S3 my-bucket existente.

Estoy escribiendo un nuevo archivo de plantilla de CloudFormation que crea un nuevo recurso de AWS que interactúa con my-bucket . Ahora, mi caso de uso comercial requiere que agregue una nueva declaración de permiso a la política de depósito para my-bucket desde el archivo de plantilla de CloudFormation .

 SourceBucketBucketPolicy: Type: AWS::S3::BucketPolicy Properties: Bucket: my-bucket PolicyDocument: Statement: - Effect: "Allow" Action: - 's3:PutBucketNotificationConfiguration' Resource: "arn:aws:s3:::my-bucket" Principal: AWS: !GetAtt MyLambdaExecutionRole.Arn

El problema es que el depósito ya tiene la siguiente política de depósito que otra persona agregó manualmente a través de la consola de AWS en algún momento del pasado. Es una política de depósito importante desde una perspectiva comercial, por lo que no puedo deshacerme de ella:

 { "Version": "2012-10-17", "Id": "S3-Policy", "Statement": [ { "Sid": "DataCraft-012345678901-S3-datacraft", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::012345678901:user/datacraft" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*" } ] }

Así que supongo que mi única opción es actualizar la política de depósito existente para acomodar adicionalmente mi nueva declaración de política. La pregunta es: ¿cómo puedo hacer eso a través del archivo de plantilla de CloudFormation?

EDITAR: para aquellos interesados, finalmente resolví el problema escribiendo una AWS::IAM::Policy en lugar de AWS::S3::BucketPolicy :

 SourceBucketNotificationConfigurationPolicy: Type: AWS::IAM::Policy Properties: PolicyDocument: Statement: - Action: s3:PutBucketNotification Effect: Allow Resource: "arn:aws:s3:::my-bucket" Version: '2012-10-17' PolicyName: BucketNotificationsRolePolicy Roles: - Ref: MyLambdaExecutionRole.Arn
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Lamentablemente, no puede actualizar una política existente que no esté administrada por CloudFormation.

Lo único que puede hacer es reemplazar la política en el depósito usando CloudFormation al volver a crearla.

Además, las políticas de depósito existentes no se pueden importar a CloudFormation. El motivo es que AWS::S3::BucketPolicy no es un recurso admitido para importar archivos .

Editar: Basado en el comentario de @JeremyThompson

Verifiqué el uso de UpdateReplacePolicy: Retain .

Para eso usé mi propio cubo y con política. Ambos se crearon fuera de CloudFormation, utilizando la consola de AWS.

Luego, creé una plantilla CFN con AWS::S3::BucketPolicy . La implementación de la plantilla falló , con o sin UpdateReplacePolicy: Retain con mensaje de error:

 The bucket policy already exists on bucket <bucket-name>.

Esto significa que no puede reemplazar la política de depósito existente. La política debe volver a crearse en CloudFormation.

over 4 years ago · Santiago Trujillo Denunciar

0

También puede crear un CustomResource , donde implementa la lógica para actualizar una política de depósito existente. Asegúrese de implementar el manejo de todos los eventos de recursos: Crear, Actualizar, Eliminar.

Por ejemplo, aquí hay una implementación para crear carpetas en S3: https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-s3-custom-resources/

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