Exportar una instantánea de RDS a s3 utilizando Cloudformation.
Quiero exportar una instantánea de RDS a S3 utilizando CloudFormation, lo cual activará una función lambda. Pero soy algo nuevo en esto. ¿Alguien puede ayudarme, por favor? Ya he escrito el script para Lambda y SNS, pero estoy confundido en cómo puedo exportar una instantánea de RDS a S3 utilizando CloudFormation. Adjunto mi archivo para activar Lambda desde SNS. Se agradecerá la ayuda. Gracias.
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: >
example-lambda-sns
Ejemplo de plantilla CloudFormation para suscribir una lambda a un tema SNS.
Resources:
ExampleTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: !Sub 'example-sns-topic'
TopicName: !Sub 'example-sns-topic'
Subscription:
- Protocol: lambda
Endpoint: !GetAtt ExampleFunction.Arn
ExampleFunction:
Type: AWS::Serverless::Function
Properties:
FunctionName: mylambdafunction
Description: mylambdafunction
Handler: index.handler
Runtime: nodejs14.x
Role: arn:aws:iam::48
CodeUri: 's3://testing/tes.zip'
ExampleFunctionInvokePermission:
Type: 'AWS::Lambda::Permission'
Properties:
Action: 'lambda:InvokeFunction'
FunctionName: !Ref ExampleFunction
Principal: sns.amazonaws.com
ExampleTopicPolicy:
Type: 'AWS::SNS::TopicPolicy'
Properties:
Topics:
- !Ref ExampleTopic
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: 'sns:Publish'
Resource: !Ref ExampleTopic
Principal:
AWS: '<em>''
Condition:
ArnLike:
AWS:SourceArn: !Sub 'arn:aws:</em>:<em>:${AWS::AccountId}:</em>''
davy.ai
Para exportar un instantáneo de RDS a S3 utilizando CloudFormation y activar una función Lambda, debes agregar dos recursos a tu plantilla de CloudFormation existente:
AWS::S3::Bucket
para crear el bucket.Función Lambda: Agrega una nueva función Lambda a tu plantilla de CloudFormation que tome el instantáneo de RDS como entrada y lo exporte al bucket de S3. Puedes utilizar el tipo de recurso
AWS::Serverless::Function
para crear la función Lambda.Una vez que hayas creado estos dos recursos, debes agregar los permisos y activadores necesarios a tus recursos existentes:
AWS::Lambda::Permission
para otorgar permisos.Activador de Exportación de Instantánea de RDS: Agrega un nuevo activador a tu función Lambda existente que se activa cuando se crea un nuevo instantáneo de RDS. Puedes utilizar el tipo de recurso
AWS::RDS::DBInstance
para crear el activador.Aquí tienes un ejemplo de plantilla de CloudFormation que exporta un instantáneo de RDS a S3 y activa una función Lambda:
En el ejemplo anterior,
ExampleS3Bucket
es el bucket de S3 donde se exportará el instantáneo de RDS,ExampleRDSSnapshotExport
es la instancia de base de datos RDS para exportar el instantáneo, yExampleRDSSnapshotExportLambda
es la función Lambda que exporta el instantáneo de RDS al bucket de S3.La sección
Environment
de la funciónExampleRDSSnapshotExportLambda
tiene tres variables:S3_BUCKET
(el nombre del bucket de S3 donde se exportará el instantáneo de RDS),RDS_REGION
(la región de AWS donde se encuentra la instancia de RDS) yRDS_SNAPSHOT_IDENTIFIER
(el ID del instantáneo de RDS a exportar).La sección
Events
de la funciónExampleRDSSnapshotExportLambda
crea un nuevo activador que se activa cuando se crea un nuevo instantáneo de RDS para laDBInstanceIdentifier
especificada.