【发布时间】:2018-06-28 10:39:13
【问题描述】:
我有一个触发 EC2 机器开始使用 amiId 的 Lambda。当 lambda 执行时,它还会将一些 userData 发送到将要启动的 EC2 机器实例。
现在,当我尝试获取将在 EC2 上执行的 nodeJs 代码中的 userData 时,它返回状态 200 但响应正文为空。
我正在使用带有 superagent npm 模块的 api“http://169.254.169.254/latest/user-data”来发出请求。以下是请求代码:
request.get(config.awsUserDataUrl)
.then((response) => {
const schema = joi.object().keys({
bucketname: joi.string().min(3).max(30).required(),
// alphanumeric string of 24 characters in length
jobid: joi.string().regex(/^[0-9a-fA-F]{24}$/),
appid: joi.string().min(3).max(30).required(),
snstopic: joi.string().min(3).max(60).required(),
filepath: joi.string().min(3).max(60).required(),
});
logger.info('response', JSON.stringify(response.body));
logger.info('response.body', response.body);
logger.info('response.status', response.status);
const result = joi.validate(response.body, schema);
if (result.error === null) {
logger.info('result', result);
resolve(response.body);
} else {
logger.info('result.error', result.error);
reject(result.error);
}
})
.catch((err) => {
logger.info('err.message', err.message);
logger.info('err.response', err.response);
// err.message, err.response
reject(err);
});
注意:我没有在 Lambda 环境变量中为 EC2 分配任何 IAM 角色。在 EC2 中没有得到响应 userData 的问题是否是由于角色未分配给 EC2 造成的?
【问题讨论】:
-
您可以从 AWS 控制台查看已启动实例的用户数据吗?
-
是的,我可以在 AWS 控制台中看到。
-
该 url 仅在从实例内部调用时才有效。你是从 Lambda 调用它吗?
-
@RodrigoM 我调用的 url 来自部署在 ami 由 Lambda 烘焙的 EC2 机器上的节点代码。
-
访问用户数据不需要 IAM 角色。使用
curl进行测试。
标签: amazon-web-services amazon-ec2 lambda aws-lambda