![](/img/trans.png)
[英]AWS Toolkit for Visual Studio Code using the AWS Serverless Application Model AWS SAM
[英]AWS Serverless Application Publish via Visual Studio
使用 .Net Core、visual studio 2017 和 AWS Toolkit for Visual 2017,我创建了一个基本的 Web api,该 api 按设计工作。
然而,在发布/部署它时,当 Stack 不存在时,第一次完美地工作,创建它假设的一切。 当我进行更改并需要重新部署/发布时,它会返回以下错误。
创建 CloudFormation 更改集时出错:堆栈 [TestStack] 已存在,无法使用更改集 [Lambda-Tools-636366731897711782] 再次创建。
错误消息正上方是这个
找到现有堆栈:错误
我想知道它是否有什么不对的地方检测堆栈是否存在。
我只是想知道我是否遗漏了什么,或者这是否真的是设计,至于我重新发布它我必须登录我的 AWS 控制台并进入云形成部分并删除现有的堆栈。
发布对话框
项目结构
经过一番挖掘和一般的反复试验。 我相信这实际上与执行发布的用户的权限有关。 (AWS 中的用户)
我将内联策略更改为
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"cloudformation:*"
],
"Resource": [
"*"
]
}
]
}
其中cloudformation:*
曾经是单独权限的几行。
这现在成功地通过现有堆栈发布,但是 Visual Studio 不喜欢它并且崩溃了。 (虽然更新确实通过 AWS)
AWS 的无服务器应用程序模型……仍然非常新。 由于缺乏关于使用 CLI 部署应用程序所需的 IAM 权限的任何文档,我制定了这个似乎有效的策略,并且只授予任务最不需要的权限。
{
"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 堆栈的访问权限*-SAM-*
如果您以某种一致性命名您的 SAM CloudFormation 应用程序将<AWS_REGION>
替换为您正在运营的区域。
arn:aws:s3:::aws-sam-cli-managed-default-samclisourcebucket-*
是 SAM CLI 用于创建用于部署 CloudFormation 模板或变更集的存储桶的标准存储桶命名。 您可以将其明确更改为为您创建的存储桶 SAM 的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.