使用.Net Core,Visual Studio 2017和AWS Toolkit for Visual 2017,我创建了一个基本的web api,api按设计工作。
然而,当涉及到发布/部署它时,第一次在Stack不存在时完美地工作,创建它所设想的一切。当我进行更改并需要重新部署/发布时,会返回以下错误。
创建CloudFormation更改集时出错:Stack [TestStack]已存在,无法使用changeSet再次创建[Lambda-Tools-636366731897711782]。
错误消息正上方是
找到现有堆栈:错误
我想知道是否有一些不太正确的事情来检测堆栈是否存在。
我只是想知道我是否遗漏了某些东西,或者这是否真的是设计,至于我要重新发布它我必须登录我的AWS控制台并进入云形成部分并删除现有的堆栈。 /强>
发布对话
项目结构
答案 0 :(得分:1)
AWS' Serverless Application Model……还是很新。并且由于缺少有关使用CLI部署应用程序所需的IAM权限的任何文档,我制定出了似乎可行的策略,仅grants the least needed permissions即可完成任务。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"lambda:UpdateFunctionCode",
"s3:PutObject",
"cloudformation:DescribeStackEvents",
"cloudformation:UpdateStack",
"cloudformation:DescribeStackResource",
"cloudformation:CreateChangeSet",
"cloudformation:DescribeChangeSet",
"cloudformation:ExecuteChangeSet",
"cloudformation:GetTemplateSummary",
"cloudformation:ListChangeSets",
"cloudformation:DescribeStacks"
],
"Resource": [
"arn:aws:lambda:*:123456789012:function:*-SAM-*",
"arn:aws:cloudformation:*:123456789012:stack/<STACK NAME OR GLOB>/*",
"arn:aws:cloudformation:<AWS_REGION>:aws:transform/Serverless-2016-10-31",
"arn:aws:s3:::aws-sam-cli-managed-default-samclisourcebucket-*/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucketMultipartUploads"
],
"Resource": "arn:aws:s3:::aws-sam-cli-managed-default-samclisourcebucket-*"
},
{
"Sid": "VisualEditor2",
"Effect": "Allow",
"Action": "cloudformation:ValidateTemplate",
"Resource": "*"
}
]
}
用最适合您的需求替换<STACK NAME OR GLOB>
,例如:
*
如果您不在乎哪个CloudFormation Stack会授予访问权限*-SAM-*
如果您以一致的方式命名SAM CloudFormation应用将<AWS_REGION>
替换为您正在操作的区域。
arn:aws:s3:::aws-sam-cli-managed-default-samclisourcebucket-*
是SAM CLI用于创建用于部署CloudFormation模板或变更集的存储桶的标准存储桶命名。您可以将其更改为显式地为您创建的存储桶SAM的名称。
答案 1 :(得分:0)
我将内联政策更改为
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"cloudformation:*"
],
"Resource": [
"*"
]
}
]
}
其中cloudformation:*
曾经是个别权限的多行。
现在成功发布了现有的Stack,但是视觉工作室并不喜欢它并且崩溃。 (尽管更新确实通过了AWS)