J'essaie Serverless pour créer AWS Lambdas et lors de la création d'un projet à l'aide de la commande serverless project create
, l'erreur suivante apparaît.
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/*
J'ai créé un utilisateur et lui ai accordé les autorisations suivantes.
AWSCloudFormationFullAccess
à accorder)Comment puis-je procéder? Quelles autres autorisations dois-je accorder?
Le plus proche que vous avez mentionné est AWSCloudFormationReadOnlyAccess
, mais évidemment, il s’agit d’une lecture seule et vous avez besoin de cloudformation:CreateStack
. Ajoutez les éléments suivants en tant que policy .
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1449904348000",
"Effect": "Allow",
"Action": [
"cloudformation:CreateStack"
],
"Resource": [
"*"
]
}
]
}
Il est tout à fait possible que vous ayez besoin de plus d'autorisations, par exemple pour lancer une instance EC2, pour (re) configurer des groupes de sécurité, etc.
Ce que @ tedder42 a dit, mais je devais également ajouter ce qui suit à ma stratégie de groupe avant de pouvoir me déployer sur lambda à partir 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": [
"*"
]
}
]
}
Dans mon expérience récente, la politique requise était
{
"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": [
"*"
]
}
]
}
Je n'ai pas réussi à faire fonctionner les versions abrégées ci-dessus. ce qui a arrangé les choses pour moi a été d’étendre légèrement la réponse 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": [
"*"
]
}
]
}
Il y a une section dans la documentation à ce sujet (au moins maintenant).
Avec un Gist indiquant les règles JSON recommandées.
Ces 2 m'ont aidé à franchir la ligne ...
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "apigateway:*",
"Resource": "*"
}
]
}
et
{
"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": "*"
}
]
}
Avec les mises à jour récentes dans AWS, la stratégie en ligne suivante fonctionnera également.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudformation:DeleteStack"
],
"Resource": "*"
}
]
}