Amazon web services 将ASP.NET核心Web API发布到AWS无服务器Lambda:';AWSLambdaFullAccess';at';policyArn'。。。成员的长度必须大于

Amazon web services 将ASP.NET核心Web API发布到AWS无服务器Lambda:';AWSLambdaFullAccess';at';policyArn'。。。成员的长度必须大于,amazon-web-services,aws-lambda,visual-studio-2019,asp.net-core-webapi,aws-serverless,Amazon Web Services,Aws Lambda,Visual Studio 2019,Asp.net Core Webapi,Aws Serverless,一年多以来,我一直能够通过选择“发布到AWS Lambda…”使用Visual Studio 2019发布ASP.NET核心Web API应用程序,而不会发生任何意外(通过右键单击项目)。直到昨天。现在它一直无法发布并回滚 下面给出了失败的两个原因 检测到1个验证错误:“policyArn”处的值“AWSLambdaFullAccess”未能满足约束:成员的长度必须大于或等于20(服务:AmazonIdentityManagement;状态代码:400;错误代码:ValidationError;

一年多以来,我一直能够通过选择“发布到AWS Lambda…”使用Visual Studio 2019发布ASP.NET核心Web API应用程序,而不会发生任何意外(通过右键单击项目)。直到昨天。现在它一直无法发布并回滚

下面给出了失败的两个原因

  • 检测到1个验证错误:“policyArn”处的值“AWSLambdaFullAccess”未能满足约束:成员的长度必须大于或等于20(服务:AmazonIdentityManagement;状态代码:400;错误代码:ValidationError;请求ID:…;代理:null)

  • 以下资源未能创建:[AspNetCoreFunctionRole,Bucket]。用户请求的回滚

  • 我看过AWSLambdaFullAccess和AWSLambda_FullAccess以及其他东西,只是没有模型可以遵循,甚至不知道它指的是什么,在任何意义上,我可以想象一条富有成效的道路。它所指的“成员”究竟是什么?广泛的研究毫无用处

    我想成功发布我的Web API。根据AWSLambdaFullAccess策略,我可以查看哪些内容才能继续?

    刚刚被弃用,因此我尝试更新的堆栈被困在更新中\u回滚\u失败

    要解决此问题,我必须采取以下步骤:

  • 从CloudFormation页面手动继续回滚堆栈,并确保跳过引用
    AWSLambdaFullAccess
    的角色
  • 在CloudFormation模板中将我的
    AWSLambdaFullAccess
    参考更改为
    AWSLambda_FullAccess
  • 使用我最新更新的CloudFormation模板更新堆栈

  • 希望这能帮助到别人

    这可能不是正确或理想的解决方案,我尝试了这种方法,效果很好

    步骤1:

    在serverless.template中将访问权限从“AWSLambdaFullAccess”更改为“AWSLambda_FullAccess”

    "Resources": {
    "AspNetCoreFunction": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
        "Handler": "SampleAPI::SampleAPI.LambdaEntryPoint::FunctionHandlerAsync",
        "Runtime": "dotnetcore3.1",
        "CodeUri": "",
        "MemorySize": 256,
        "Timeout": 30,
        "Role": null,
        "Policies": [
          "AWSLambda_FullAccess"
        ],
        "Environment": {
          "Variables": {
            "AppS3Bucket": {
    
    在此步骤之后,Lambda发布成功

    步骤2:


    然后,我在访问DynamoDb表时遇到了一个问题。我去了IAM角色添加了DynamoDb执行角色。(以前我不记得明确添加了这个角色)

    虽然我最终在Visual Studio中创建了一个同名的应用程序,并将代码文件复制到其中,然后安装了软件包,但我发现这是一个奇怪的问题,会自动发生,因此如果你有答案,我相信将来会有其他人遇到同样的问题,他们希望知道一种更简单的方法。我在我项目的失败版本上测试了它,没有更改,它就失败了,而且更改成功了。这与我当前的工作版本一致,通过一个新的项目创建,保留了新创建的serverless.template。谢谢!这是指向AWS doco的链接,与执行回滚时跳过资源有关: