
quiero usar elHerramienta de línea de comandos de AWS RDSpara crear una instantánea de mi base de datos my-database
usandocreate-db-snapshot
.
He creado una función de respaldo especial enSOYcon una política que me permite describir, copiar y crear instantáneas. Se ve así (he reemplazado las identificaciones confidenciales con una x):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"rds:CopyDBSnapshot",
"rds:CreateDBSnapshot",
"rds:DescribeDBSnapshots",
"rds:DescribeEventCategories",
"rds:DescribeEvents"
],
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database"
]
}
]
}
Después de configurar las herramientas CLI conaws configure
e ingresando las claves para este usuario, intenté hacer una instantánea ejecutando este comando:
aws rds create-db-snapshot \
--db-snapshot-identifier "my-database-backup-$(date +%d-%m-%Y-%Hh%Mm)" \
--db-instance-identifier "my-database"
Esto da como resultado un mensaje de error que dice:
Se produjo un error de cliente (AccessDenied) al llamar a la operación CreateDBSnapshot: Usuario: arn:aws:iam::xxxxxxxxxxxxxx:user/automated-tasks no está autorizado a realizar: rds:CreateDBSnapshot en el recurso: arn:aws:rds:eu-west -1:xxxxxxxxxxxxxx:instantánea:copia de seguridad-de-mi-base-de-datos-24-11-2014-11h07m
Pensé que esto era extraño, ya que dice que se deniega el acceso al recurso con el nombre que he especificado para el --db-snapshot-identifier
argumento, en contraposición al --db-instance-identifier
argumento.
Si tengo permisos suficientes para crear una instantánea aplicada a una instancia en primer lugar, ¿no debería tener inherentemente permisos de creación para esa instantánea?
De todos modos, intenté cambiar el recurso en la política a todo lo que esté dentro de RDS:
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:*"
]
Esperaba que esto funcionara porque ahora mi función tiene permisos de creación de instantáneas para todo lo que esté dentro del ARN RDS de mi cuenta, pero no fue así.
¿Alguien tiene alguna idea de por qué mi comando devuelve un error?
Respuesta1
De hecho, es extraño, pero parece que el CreateDBSnapshot
permiso también debe asignarse a la instantánea de destino.
Esta política funciona:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxxxxxxx",
"Effect": "Allow",
"Action": [
"rds:CreateDBSnapshot"
],
"Resource": [
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:db:my-database",
"arn:aws:rds:eu-west-1:xxxxxxxxxxxxxx:snapshot:*"
]
}
]
}