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

Noa*_*ray 9 amazon-web-services amazon-iam autoscaling

(解决了)

我错过了 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 运行良好。

拥有AmazonEC2FullAccessCloudWatch、EC2、EC2 Auto Scaling、ELB、ELB v2的完整权限,以及有限的IAM写入权限。

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

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

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

第一次,我根据文档仅对 IAM 策略应用了相关权限,但现在我在策略上授予了 EC2 和 Autoscaling 的完全权限来解决此问题。但没有运气。

在 google 上,我看到一些帖子说这只是一个错误,或者是 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)
    })
};

Run Code Online (Sandbox Code Playgroud)

以下是在 Marcin、John Rotenstein、samtoddler 发表评论后添加的

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

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

nba*_*ari 8

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

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


小智 6

实际上,问题是您的 EC2 实例具有 IAM 角色,但您无权使用它。将以下策略添加到 lambda 或您用来传递附加到 EC2 实例的角色的任何角色或 IAM 用户。一旦完成,它将开始工作。

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "iam:GetRole",
            "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::account-id:role/EC2-roles-for-XYZ-*"
    }]
}

Run Code Online (Sandbox Code Playgroud)