我需要创建用户并获取临时凭据以使用其他服务(cloudWatch)吗? 如何获得临时凭证?如果我使用我的凭据,这是有效的,但这不安全。
import * as AWS from 'aws-sdk';
AWS.config.region = 'region';
var credentials = new AWS.CognitoIdentityCredentials({
AccountId: 'accountId',
RoleArn: 'role',
IdentityPoolId: 'pool',
});
AWS.config.credentials = credentials;
AWS.config.update({accessKeyId: 'anything', secretAccessKey: 'anything'});
// AWS.config.update({accessKeyId: 'key', secretAccessKey: 'secretKey'});
var cognitoidentity = new AWS.CognitoIdentity({apiVersion: '2014-06-30'});
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
get(){
var paramsCreateUser = {
UserPoolId: 'pool',
Username: 'name',
UserAttributes: [{
Name: 'email',
Value: 'e@gmail.com'
}]
};
cognitoidentityserviceprovider.adminCreateUser(paramsCreateUser, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
}
答案 0 :(得分:2)
不要在您的Lambda中设置您的AWS凭据。您应该创建一个Lambda执行的IAM角色,该角色具有您的函数所需的权限。请参阅Loading Credentials for a Node.js Lambda Function。
创建AWS Lambda函数时,必须创建一个特殊的IAM 有权执行该功能的角色。这个角色被称为 执行角色。设置Lambda函数时,必须这样做 指定您创建的IAM角色作为相应的执行角色。
执行角色为Lambda函数提供凭据 它需要运行并调用其他Web服务。结果,你做到了 不需要为您在一个内部编写的Node.js代码提供凭据 Lambda函数。
编辑:如果您需要访问其他服务,只需将所需的策略添加到IAM角色即可。例如,您可以添加策略' CloudWatchFullAccess'。