如何解决这个问题? AWS updateAutoScalingGroup - 错误:AccessDenied:您无权使用启动模板

Posted

技术标签:

【中文标题】如何解决这个问题? AWS updateAutoScalingGroup - 错误:AccessDenied:您无权使用启动模板【英文标题】:How to solve this? AWS updateAutoScalingGroup - error: AccessDenied: You are not authorized to use launch template 【发布时间】:2021-04-15 09:56:06 【问题描述】:

(已解决)

我在 aws 用户指南 You can use the AmazonEC2FullAccess policy to give users complete access to work with Amazon EC2 Auto Scaling resources, launch templates, and other EC2 resources in their AWS account 上错过了这个提及

现在我在自定义策略中添加了与 AmazonEC2FullAccess 策略相同的权限,并且 lambda 运行良好。

AmazonEC2FullAccess 拥有 CloudWatch、EC2、EC2 Auto Scaling、ELB、ELB v2 的完全权限和有限的 IAM 写入权限。

@Marcin _ 谢谢!你的评论让我检查了这部分。

我正在尝试使用 lambda 上的“updateAutoScalingGroup”API 更新 ASG。

但是这个错误“AccessDenied:您无权使用启动模板”阻止了我...

第一次,我只在 IAM 策略上应用相关权限依赖于文档,但现在我允许 EC2 和 Autoscaling 对策略的完全权限来解决这个问题。 但没有运气。

在谷歌上,我看到一些帖子说这只是一个错误,或者是 AMI 存在的问题。 但是我用于启动模板的 AMI 位于同一个帐户、同一个区域...

你能给我一些提示或参考来解决这个问题吗?

谢谢

const AWS = require('aws-sdk')

exports.handler = (event) => 
    const autoscaling = new AWS.AutoScaling()
    
    const  asgName, templateName, version  = event
    
    const params = 
        AutoScalingGroupName: asgName,
        LaunchTemplate: 
            LaunchTemplateName: templateName, 
            Version: version
        ,
        MaxSize: 4,
        MinSize: 1,
        DesiredCapacity: 1
    

    autoscaling.updateAutoScalingGroup(params, async (err, data)=> 
        if(err) console.log("err---", err)
        else console.log("data---", data)
    )
;

以下是在 Marcin, John Rotenstein, samtoddler 的 cmets 之后添加的

    现在,该策略拥有 EC2、EC2 Auto Scaling、EC2 Image Builder、Auto Scaling 的完全权限,以及 CloudWatch Logs 的一些权限。但还没有运气。 AMI 位于同一账户、同一地区。我在“修改图像权限”上添加了帐号。 (我对此不太了解,但只是尝试过。) describeLaunchTemplates() 显示了我想使用的launchTemplate。 CloudTrail 显示“RunInstances”和“UpdateAutoScalingGroup”事件。 “RunInstances”返回"errorCode": "Client.UnauthorizedOperation",“UpdateAutoScalingGroup”返回"errorCode": "AccessDenied", "errorMessage": "An unknown error occurred" 没有 LaunchTemplate 部分,API 运行良好。 (我尝试只更新最小和最大计数,它成功了。) 即使我将 AMI 更改为公开,它也不起作用。

现在我正在尝试搜索启动模板和 AMI 相关配置..

【问题讨论】:

您使用的 lambda 执行角色是什么? 启动模板是否属于同一个 AWS 账户?如果代码调用DescribeLaunchTemplates(),那么Launch Template会出现在结果集中吗? IAM:PassRole 是人们怀念的重要角色。您的用户需要具有在 ASG 正在使用的启动模板中启动实例的权限。这样您的 ASG 就不能用于绕过对您的用户/角色的限制 我遇到了同样的问题,@Shahad 的建议为我解决了问题。 非常感谢@Shahad 【参考方案1】:

很遗憾,AWS 提供的错误在某些情况下非常不清楚,可能会产生误导。

除了检查您是否拥有适当的权限外,当您尝试使用无效的AMI 或不存在的AMI 创建自动缩放组时也会返回此错误。

【讨论】:

以上是关于如何解决这个问题? AWS updateAutoScalingGroup - 错误:AccessDenied:您无权使用启动模板的主要内容,如果未能解决你的问题,请参考以下文章

我的带有 lambda 函数的 AWS API Gateway REST API 返回 Null,如何解决这个问题?

AWS Lambda 导出类在 node.js v6.4 中有效,但在 node.js v4.3 中无效,如何解决这个问题? [复制]

如何修复漂移的 AWS CloudFormation 堆栈?

如何记录堆栈跟踪 aws elastic beanstalk 以快速解决客户错误

如何使用 AWS 身份验证保护我的 wcf 服务

使用 jclouds API 创建 aws-ec2 实例