微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 ASP.NET Core Web API 发布到 AWS Serverless Lambda 时出错:“policyArn”处的“AWSLambdaFullAccess”......成员的长度必须大于

如何解决将 ASP.NET Core Web API 发布到 AWS Serverless Lambda 时出错:“policyArn”处的“AWSLambdaFullAccess”......成员的长度必须大于

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

失败的原因有以下两个。

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

  2. 无法创建以下资源:[AspNetCoreFunctionRole,Bucket]。用户请求回滚。

Picture of upload progress

我已经查看了 AWSLambdaFullAccess 和 AWSLambda_FullAccess 以及其他东西,但没有可遵循的模型,甚至不知道它在任何意义上都指的是什么,我可以想象出一条富有成效的前进道路。它所指的“会员”究竟是什么?广泛的研究没有产生任何有用的结果。

我想成功发布我的 Web API。我可以调查什么才能继续?

解决方法

根据 https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html,AWSLambdaFullAccess 策略刚刚被弃用,因此我尝试更新的堆栈卡在 UPDATE_ROLLBACK_FAILED 中。

为了解决这个问题,我必须采取以下步骤:

  1. 从 CloudFormation 页面手动继续回滚堆栈,并确保我跳过了引用 AWSLambdaFullAccess 的角色。
  2. 在 CloudFormation 模板中将我的 AWSLambdaFullAccess 引用更改为 AWSLambda_FullAccess
  3. 使用我新更新的 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 执行角色。 (之前我不记得明确添加了这个角色)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。