首页 > 解决方案 > IAM 无法访问启动模板

问题描述

我正在使用 AWS Node SDK 尝试使用启动模板来启动 EC2 实例。在同一用户的 Web 控制台中,我可以访问启动模板 ID,但在节点 API 中,它告诉我带有 ID 的启动模板不存在:

版本:aws-sdk@2.606.0

控制台中的 id 截图

AWS 控制台中的屏幕截图

我的配置文件中的 id 截图

我的配置文件中的屏幕截图

(为了安全起见,我已经屏蔽了最后几个字符,但它们是相同的)

这是节点

         AWS = require('aws-sdk');
         AWS.config.update({region: global.settings.aws.region});

         let instanceParams = {
                LaunchTemplate: {
                    LaunchTemplateId: global.settings.aws.ltId
                }, 
                InstanceType: 't2.micro',
                MinCount: 1,
                MaxCount: 1
             };
             let instancePromise = new AWS.EC2().runInstances(instanceParams).promise();
             instancePromise.then(
               function(data) {
                 console.log(data);
               }).catch(
                 function(err) {
                 console.error(err, err.stack);
               });

这是 API 返回的错误:

InvalidLaunchTemplateId.NotFound:指定的启动模板不存在,模板 ID 为 lt-03969d13638b5XXXX。在 Request.extractError (/ApplicationPath/node_modules/aws-sdk/lib/services/ec2.js:50:35) 在 Request.callListeners (/ApplicationPath/node_modules/aws-sdk/lib/sequential_executor.js:106:20)在 Request.emit (/ApplicationPath/node_modules/aws-sdk/lib/sequential_executor.js:78:10) 在 Request.emit (/ApplicationPath/node_modules/aws-sdk/lib/request.js:683:14) 在 Request .transition (/ApplicationPath/node_modules/aws-sdk/lib/request.js:22:10) 在 AcceptorStateMachine.runTo (/ApplicationPath/node_modules/aws-sdk/lib/state_machine.js:14:12) 在 /ApplicationPath/ node_modules/aws-sdk/lib/state_machine.js:26:10 在请求。(/ApplicationPath/node_modules/aws-sdk/lib/request.js:38:9) 在请求。(/ApplicationPath/node_modules/aws-sdk/lib/request.js:685:12) 在 Request.emit (/ApplicationPath/node_modules/aws-sdk/lib/sequential_executor.js:116:18) 在 Request.emit (/ ApplicationPath/node_modules/aws-sdk/lib/sequential_executor.js:78:10) 在 Request.emit (/ApplicationPath/node_modules/aws-sdk/lib/request.js:683:14) 在 Request.transition (/ApplicationPath/ node_modules/aws-sdk/lib/request.js:22:10) 在 AcceptorStateMachine.runTo (/ApplicationPath/node_modules/aws-sdk/lib/state_machine.js:14:12) 在 /ApplicationPath/node_modules/aws-sdk/ lib/state_machine.js:26:10 在请求。(/ApplicationPath/node_modules/aws-sdk/lib/request.js:38:9) 在请求。(/ApplicationPath/node_modules/aws-sdk/lib/request.js:685:12) 在 Request.callListeners (/ApplicationPath/node_modules/aws-sdk/lib/sequential_executor.js:116:

IAM 访问包括:

AmazonEC2FullAccess

AmazonEC2FullAccess

(JSON 非常长,但如果需要,我很乐意在此处发布)

我的想法是 IAM 存在一些许可错误,但我无法确定可能是什么。感谢您的帮助,如果我可以提供任何其他澄清,请告诉我。

标签: amazon-ec2amazon-iam

解决方案


如果您可以看到 AWS 控制台中存在给定的 AWS 资源,但 awscli 或 SDK 调用未返回该资源(反之亦然),则可能是以下原因之一:

  • 您查询了错误的地区
  • 您查询了错误的 AWS 账户(您的有效凭证用于第二个不同的账户)
  • 您输入错误的资源名称/ID
  • 您的浏览器缓存了不再存在的结果(刷新您的浏览器)

推荐阅读