Mic*_*obi 9 amazon-ec2 node.js
如何使用JavaScript/NodeJS查找我的AWS账户ID?
应该在为root帐户或IAM用户明确提供密钥时工作.在使用instance-profile(无键)配置的ec2-instance内部调用时也应该工作.
Fac*_*tor 10
最好的方法是通过"安全令牌服务":
var AWS = require('aws-sdk');
// Load credentials and set region from JSON file
AWS.config.loadFromPath('./config.json');
var sts = new AWS.STS();
sts.getCallerIdentity({}, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log(JSON.stringify(data.Account));
}
});
Run Code Online (Sandbox Code Playgroud)
这将通过简单的调用打印帐户ID.
只是建立在 @Facundo Victor 的优秀答案的基础上......这就是我几年后使用的重构为 ES6 的内容:
// See https://github.com/aws/aws-sdk-js/pull/1391
process.env.AWS_SDK_LOAD_CONFIG = 1;
const { config, STS } = require('aws-sdk');
(async () => {
const sts = new STS();
// See https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/using-promises.html
const { Account: account} = await sts.getCallerIdentity({}).promise();
const { region } = config;
console.log(account, region);
})();
Run Code Online (Sandbox Code Playgroud)
小智 6
我发现的最简单的方法是从上下文数据中提取帐户 ID:
exports.handler = async (event, context) => {
// Log the invoked function ARN and split to get Account ID
console.log(JSON.stringify(context.invokedFunctionArn).split(':')[4]);
};
Run Code Online (Sandbox Code Playgroud)
以下代码片段将使用nodejs和最新的aws-sdk打印帐户ID:
var AWS = require('aws-sdk');
var iam = new AWS.IAM();
var metadata = new AWS.MetadataService()
var _ = iam.getUser({}, (err, data) => {
if (err)
metadata.request('/latest/meta-data/iam/info/', (err, data) => {
if (err) console.log(err, err.stack);
else console.log(JSON.parse(data).InstanceProfileArn.split(':')[4]);
});
else
console.log(data.User.Arn.split(':')[4]);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4168 次 |
| 最近记录: |