[英]Unable to get IAM security credentials from EC2 Instance Metadata Service - .netcore AWS SDK
[英]AWS JS SDK V3 (Lambda module) - Unable to connect to instance metadata service
我以前使用多合一的aws-sdk
npm 模块 ( https://www.npmjs.com/package/aws-sdk ) 来调用 AWS Lambda 函数,为此,以下代码运行良好:
//Some code to get "credentials"
...
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda({
accessKeyId: credentials.accessKeyId,
secretAccessKey: credentials.secretAccessKey,
region: Config.REGION
});
lambda.invoke(pullParams, (err, data) =>
//I would do something with data
);
...
现在,从https://github.com/aws/aws-sdk-js-v3得到提示,我希望使用模块化@aws-sdk/client-lambda-node
,因为它是我唯一需要的类在我的项目中。 因此,我更改了我的代码(如此处所建议的: https : //github.com/aws/aws-sdk-js-v3/tree/master/packages/client-lambda-node#usage ),如下所示:
import * as AWS from "@aws-sdk/client-lambda-node/Lambda";
/*
I believe there is a typo in the form of
"
import * as AWS from "@aws-sdk/@aws-sdk/client-lambda-node/Lambda";
"
at the original page
*/
...
//Some code to get the same "credentials" as above
const lambda = new AWS.Lambda({
accessKeyId: credentials.accessKeyId,
secretAccessKey: credentials.secretAccessKey,
region: Config.REGION
});
lambda.invokeAsync(pullParams, (err, data) =>
//I want to do something with err / data
);
...
就其价值而言,这是在 ReactJS 应用程序中(尽管我确定那不相关)。 在浏览器中使用0.1.0-preview.5
版本尝试上面的代码(它在早期工作的地方)永远给了我
http://169.254.169.254/latest/meta-data/iam/security-credentials/ net::ERR_CONNECTION_TIMED_OUT
Error: Unable to connect to instance metadata service
(我猜与(1)有关)库是否不稳定,或者我做错了什么
您必须使用密钥credentials
传递您的credentials
。 喜欢:
const lambda = new AWS.Lambda({
credentials: {
accessKeyId: credentials.accessKeyId,
secretAccessKey: credentials.secretAccessKey,
},
region: Config.REGION
});
或者:
const lambda = new AWS.Lambda({
credentials,
region: Config.REGION
});
是的,SDK 的第 3 版仍处于 Beta 预览版中, 他们表示预计会有重大更改:
当 SDK 处于预览阶段时,您可能会遇到错误。
回答您的问题,是的,目前生产绝对不稳定。 您的具体问题很常见,我也无法深入了解。 我的生产工作仍然使用 v2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.