amazon-web-services - pricing - cloudformation templates
El usuario no está autorizado para realizar: formación en la nube: CreateStack (10)
Con las actualizaciones recientes en AWS, la siguiente política en línea también funcionará.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudformation:DeleteStack"
],
"Resource": "*"
}
]
}
Estoy probando
Serverless
para crear AWS Lambdas y al crear un proyecto usando el comando
serverless project create
obtengo el siguiente error.
AccessDenied: User: arn:aws:iam::XXXXXXXXX:user/XXXXXXXXX is not authorized to perform: cloudformation:CreateStack on resource: arn:aws:cloudformation:us-east-1:XXXXXXXXX:stack/XXXXXXXXX-development-r/*
He creado un usuario y le he otorgado los siguientes permisos.
- AWSLambdaFullAccess
- AmazonS3FullAccess
- CloudFrontFullAccess
-
AWSCloudFormationReadOnlyAccess (No había
AWSCloudFormationFullAccess
para otorgar)
¿Cómo puedo proceder? ¿Qué más permisos tengo que otorgar?
Cree la siguiente política:
- Haga clic en Política -> Crear política
- En Seleccionar servicio: escriba EKS y seleccione ''EKS''
- En Acciones: seleccione ''Todas las acciones de EKS''
- En Recursos: seleccione ''Todos los recursos'' o Agregar ARN
- Haga clic en Política de revisión
- Escriba el nombre de la política y cree la política.
Ahora, asocie esta política a la cuenta de usuario. Esto debería resolver el problema y debería poder crear la pila.
El más cercano que ha mencionado es
AWSCloudFormationReadOnlyAccess
, pero obviamente es solo de lectura y necesita información en la
cloudformation:CreateStack
.
Agregue lo siguiente como
política de usuario
.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1449904348000",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack"
],
"Resource": [
"*"
]
}
]
}
Es completamente posible que necesite más permisos, por ejemplo, para lanzar una instancia EC2, para (re) configurar grupos de seguridad, etc.
En mi experiencia reciente, la política requerida era
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1449904348000",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:CreateChangeSet",
"cloudformation:ListStacks",
"cloudformation:UpdateStack",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackResource",
"cloudformation:DescribeStackEvents",
"cloudformation:ValidateTemplate",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet"
],
"Resource": [
"*"
]
}
]
}
Estos 2 me ayudaron a cruzar la línea ...
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "apigateway:*",
"Resource": "*"
}
]
}
y
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudformation:ListStacks",
"cloudformation:DescribeStackEvents",
"cloudformation:CreateStack",
"cloudformation:UpdateStack",
"cloudformation:DescribeStackResource",
"cloudformation:CreateChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:ValidateTemplate"
],
"Resource": "*"
}
]
}
Hay una sección en los documentos sobre esto (al menos ahora).
Con un resumen que muestra las políticas JSON que recomiendan.
Lo que @ tedder42 dijo, pero también tuve que agregar lo siguiente a mi política de grupo antes de poder implementarlo en lambda desde dentro de Visual Studio.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1449904348000",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:CreateChangeSet",
"cloudformation:ListStacks",
"cloudformation:UpdateStack",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet"
],
"Resource": [
"*"
]
}
]
}
No pude hacer funcionar las versiones más cortas que se muestran arriba; lo que arregló las cosas para mí fue extender ligeramente la respuesta de @mancvso:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1449904348000",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack",
"cloudformation:CreateChangeSet",
"cloudformation:ListStacks",
"cloudformation:UpdateStack",
"cloudformation:DescribeStacks",
"cloudformation:DescribeStackResource",
"cloudformation:DescribeStackEvents",
"cloudformation:ValidateTemplate",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:GetTemplateSummary"
],
"Resource": [
"*"
]
}
]
}
Otorgue acceso de "administrador" al usuario que creó
Si tiene varios perfiles de AWS, intente explícitamente
export AWS_ACCESS_KEY_ID=<value>
export AWS_SECRET_ACCESS_KEY=<value>
antes de intentar
serverless deploy