Lors du référencement des données RDS
-Il n'y a pas de travail de vidage de date et d'heure, etc. ・ Il n'y a pas de réplique en lecture ・ Aucune question posée et l'approbation est requise pour la connexion à l'environnement commercial
Pour une raison quelconque, il était parfois difficile d'examiner directement le contenu du RDS. À ce moment-là, il était possible d'exporter l'instantané vers S3 vers Amazon RDS et d'y faire référence dans Athena, j'ai donc essayé l'exportation S3 de l'instantané RDS à l'aide de Lambda.
Exportez des instantanés RDS vers S3 dans Lambda. Étant donné que les données exportées sont cryptées par KMS, il est également nécessaire de préparer la clé KMS.
-RDS et snapshots ont été créés. -Le compartiment S3 de destination d'exportation a été créé.
Créez une stratégie pour accéder à S3 à partir de la tâche d'exportation de cliché avec le json suivant.
(La ressource your-s3-bucket
spécifie le compartiment S3 vers lequel exporter)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject*",
"s3:GetObject*",
"s3:DeleteObject*"
],
"Resource": [
"arn:aws:s3:::your-s3-bucket",
"arn:aws:s3:::your-s3-bucket/*"
]
}
]
}
Créez un rôle et attachez la stratégie créée ci-dessus.
Dans Modifier la relation de confiance
, modifiez le document de stratégie de contrôle d'accès comme suit.
(Le service devient export.rds.amazonaws.com
)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "export.rds.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Créez une clé dans KMS à utiliser pour crypter les données exportées.
Créez un rôle pour AWSLambdaBasicExecutionRole
qui peut être créé en même temps que la création d'une fonction Lambda.
Créez la stratégie suivante requise pour l'exportation de cliché séparément et attachez-la au rôle ci-dessus.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole",
"rds:StartExportTask"
],
"Resource": "*"
}
]
}
pyhton:lambda_handler.py
import json
import boto3
from datetime import datetime
SOURCE_ARN="YOUR_SOURCE_ARN"
S3_BUCKET_NAME="YOUR_S3_BUCKET_NAME"
IAM_ROLE_ARN="YOUR_IAM_ROLE_ARN"
KMS_KEY_ID="YOUR_KMS_KEY_ID"
client = boto3.client('rds')
def lambda_handler(event, context):
export_task_identifier="mysnapshot" + datetime.now().strftime("%Y%m%d%H%M%S")
response = client.start_export_task(
ExportTaskIdentifier=export_task_identifier,
SourceArn=SOURCE_ARN,
S3BucketName=S3_BUCKET_NAME,
IamRoleArn=IAM_ROLE_ARN,
KmsKeyId=KMS_KEY_ID,
)
-Définissez les variables suivantes dans le code en fonction de votre environnement.
Nom de variable | valeur |
---|---|
SOURCE_ARN | ARN de l'instantané RDS à exporter |
S3_BUCKET_NAME | Nom du compartiment S3 de destination de sortie |
IAM_ROLE_ARN | ARN du rôle utilisé lors de l'exportation de S3 créé à l'étape 1 |
KMS_KEY_ID | ARN de la clé KMS créée |
-Puisque les restrictions suivantes s'appliquent à ExportTaskIdentifier
, la date et l'heure sont ajoutées cette fois.
Identifiant d'exportation Entrez un nom pour identifier l'exportation. Ce nom doit être unique parmi toutes les exportations d'instantanés appartenant au compte AWS dans la région AWS actuelle.
Ajoutez le rôle utilisé dans Lambda à l'étape 3 à l'utilisateur clé de la clé créée à l'étape 2.
Si vous ne le faites pas, vous obtiendrez l'erreur Une erreur s'est produite (KMSKeyNotAccessibleFault)
lors de l'exécution de Lambda.
Après ce travail, exécutez Lambda pour exporter l'instantané RDS vers S3.
Si vous souhaitez simplement exporter l'instantané vers S3, vous pouvez faire de même avec la console de gestion, mais je voulais faire de la source de données un instantané système et mettre à jour les données à la date et à l'heure, j'ai donc essayé de l'exécuter sur Lambda.
Ce serait bien si RDS pouvait être vérifié sur la console de gestion s'il s'agissait d'une petite référence comme DynamoDB, mais j'ai senti que la méthode de référence à cet instantané est également une méthode sûre et facile.
Cet article a été rédigé en référence aux informations suivantes.
Recommended Posts