Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS无服务器应用程序通过Visual Studio发布_Amazon Web Services_Asp.net Core_Aws Lambda - Fatal编程技术网

Amazon web services AWS无服务器应用程序通过Visual Studio发布

Amazon web services AWS无服务器应用程序通过Visual Studio发布,amazon-web-services,asp.net-core,aws-lambda,Amazon Web Services,Asp.net Core,Aws Lambda,使用.Net Core、visual studio 2017和AWS Toolkit for visual 2017,我创建了一个基本的web api,该api按设计工作 然而,当涉及到发布/部署它时,当堆栈不存在时,第一次就可以完美地工作,它创建了它应该创建的一切。当我进行更改并需要重新部署/发布时,它会返回以下错误 创建CloudFormation更改集时出错:堆栈[TestStack]已存在,无法使用更改集[Lambda-Tools-636366731897711782]再次创建 在错误消

使用.Net Core、visual studio 2017和AWS Toolkit for visual 2017,我创建了一个基本的web api,该api按设计工作

然而,当涉及到发布/部署它时,当堆栈不存在时,第一次就可以完美地工作,它创建了它应该创建的一切。当我进行更改并需要重新部署/发布时,它会返回以下错误

创建CloudFormation更改集时出错:堆栈[TestStack]已存在,无法使用更改集[Lambda-Tools-636366731897711782]再次创建

在错误消息的正上方是

找到现有堆栈:False

我想知道是否有什么不太正确的检测,如果堆栈存在

我只是想知道我是否遗漏了什么,或者这是否真的是设计,至于我要重新发布它,我必须登录到我的AWS控制台,进入云形成部分并删除现有的堆栈。

发布对话框

项目结构


经过一点挖掘和一般的尝试和错误。我相信这实际上与执行发布的用户的权限有关。(AWS中的用户)

我将内联策略更改为

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": [
                "cloudformation:*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
其中,
cloudformation:
过去是多行单独的权限

现在,它成功地在现有堆栈上发布,但是VisualStudio不喜欢它并且崩溃了。(虽然更新确实通过了AWS)

是…非常新的。由于缺乏任何关于IAM权限的文档,您需要使用CLI部署应用程序,因此我制定了这个似乎有效的策略,并且仅适用于此任务

{
    "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": "*"
        }
    ]
}
{
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“VisualEditor0”,
“效果”:“允许”,
“行动”:[
“lambda:UpdateFunctionCode”,
“s3:PutObject”,
“云形成:描述事件”,
“cloudformation:UpdateStack”,
“cloudformation:DescripteBackResource”,
“cloudformation:CreateChangeSet”,
“cloudformation:DescribeChangeSet”,
“cloudformation:ExecuteChangeSet”,
“cloudformation:GetTemplateSummary”,
“cloudformation:ListChangeSets”,
“云形成:描述备份”
],
“资源”:[
“arn:aws:lambda:::123456789012:function:-SAM-*”,
“arn:aws:cloudformation:::123456789012:stack/*”,
“arn:aws:cloudformation::aws:transform/Serverless-2016-10-31”,
“arn:aws:s3:::aws sam cli管理的默认samclisourcebucket-*/*”
]
},
{
“Sid”:“VisualEditor1”,
“效果”:“允许”,
“行动”:[
“s3:GetObject”,
“s3:ListBucketMultiportupLoads”
],
“资源”:“arn:aws:s3:::aws sam cli管理的默认samclisourcebucket-*”
},
{
“Sid”:“VisualEditor2”,
“效果”:“允许”,
“操作”:“cloudformation:ValidateTemplate”,
“资源”:“*”
}
]
}
注: 将
替换为最适合您需要的内容,例如:

  • *
    如果您不关心此授予访问权限的云信息堆栈
  • *-SAM-*
    如果您以某种一致性命名SAM CloudFormation应用程序
替换为您正在操作的区域


arn:aws:s3:::aws sam cli管理的默认samclisourcebucket-*
是sam cli用于创建用于部署云信息模板或更改集的bucket的标准bucket命名。您可以将其显式更改为为为您创建的存储桶SAM的名称。

我遇到了相同的问题(或类似的问题?),即它在发布后崩溃,我发现实际上杀死VS的不是发布,而是AWS工具包的CloudFormation堆栈查看器。为了确认这一点,我打开VS2017,在AWS浏览器中,转到AWS CloudFormation节点,展开它,然后双击(或右键单击->打开)堆栈。VS立即崩溃。VS2017 activityLog显示awstolkitPackage.dll的“已存在具有相同密钥的元素”错误。这很烦人。必须有一组更简洁的
cloudformation:
策略权限,这是
sam部署
所需要的。我遇到了同样的问题,试图为应用程序(重新)部署编写IAM策略,只授予所需的权限。根据部署的应用程序是否将与其他AWS服务接口,可能还有更多权限可添加到该策略中。但这对我们来说是成功的,重新部署了一个需要与DynDB对话的SAM应用程序。