以下是使用Amazon Cognito用户池设置用户、角色和权限的代码示例:
首先,您需要安装AWS SDK并设置AWS凭证。然后,您可以使用以下代码来创建用户池和用户:
const AWS = require('aws-sdk');
// 设置AWS凭证
AWS.config.update({
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
region: 'us-west-2' // 您可以根据您的区域更改此值
});
// 创建CognitoIdentityServiceProvider对象
const cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider();
// 创建用户池
const createUserPoolParams = {
PoolName: 'YOUR_USER_POOL_NAME',
UsernameAttributes: [
'email' // 您可以根据您的需求更改此值,如用户名、电话号码等
],
AutoVerifiedAttributes: [
'email' // 您可以根据您的需求更改此值,如电话号码等
]
};
cognitoIdentityServiceProvider.createUserPool(createUserPoolParams, (err, data) => {
if (err) {
console.log('Error creating user pool', err);
} else {
const userPoolId = data.UserPool.Id;
// 创建用户
const createUserParams = {
UserPoolId: userPoolId,
Username: 'user1',
TemporaryPassword: 'tempPass123', // 创建用户时可选设置临时密码
UserAttributes: [
{
Name: 'email',
Value: 'user1@example.com'
}
]
};
cognitoIdentityServiceProvider.adminCreateUser(createUserParams, (err, data) => {
if (err) {
console.log('Error creating user', err);
} else {
console.log('User created', data);
}
});
}
});
接下来,您可以使用以下代码创建角色和权限:
// 创建角色
const createRoleParams = {
RoleName: 'YOUR_ROLE_NAME',
AssumeRolePolicyDocument: JSON.stringify({
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Principal: {
Federated: 'cognito-identity.amazonaws.com'
},
Action: 'sts:AssumeRoleWithWebIdentity',
Condition: {
'ForAnyValue:StringLike': {
'cognito-identity.amazonaws.com:aud': 'YOUR_USER_POOL_ID'
}
}
}
]
})
};
const iam = new AWS.IAM();
iam.createRole(createRoleParams, (err, data) => {
if (err) {
console.log('Error creating role', err);
} else {
const roleId = data.Role.RoleId;
// 创建策略
const createPolicyParams = {
PolicyName: 'YOUR_POLICY_NAME',
PolicyDocument: JSON.stringify({
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Action: [
'cognito-idp:AdminCreateUser',
'cognito-idp:AdminDeleteUser',
'cognito-idp:AdminUpdateUserAttributes'
],
Resource: `arn:aws:cognito-idp:YOUR_REGION:YOUR_ACCOUNT_ID:userpool/${userPoolId}`
}
]
})
};
iam.createPolicy(createPolicyParams, (err, data) => {
if (err) {
console.log('Error creating policy', err);
} else {
const policyArn = data.Policy.Arn;
// 将策略附加到角色
const attachPolicyParams = {
PolicyArn: policyArn,
RoleName: 'YOUR_ROLE_NAME'
};
iam.attachRolePolicy(attachPolicyParams, (err, data) => {
if (err) {
console.log('Error attaching policy to role', err);
} else {
console.log('Policy attached to role', data);
}
});
}
});
}
});
请注意,上述代码中的“YOUR_ACCESS_KEY”、“YOUR_SECRET_KEY”、“YOUR_USER_POOL_NAME”、“YOUR_ROLE_NAME”和“YOUR_POLICY_NAME”应替换为您自己的值。您还应根据需要更改其他参数,例如区域和权限列表。
希望这可以帮助您设置Amazon Cognito用户池中的用户、角色和权限。