📅  最后修改于: 2023-12-03 15:13:34.728000             🧑  作者: Mango
AWS STS (Security Token Service) 允许您向 AWS 资源授予临时访问权限。假设角色是一种 AWS STS 功能,可以使您跨帐户或跨域复制资源时更轻松地管理访问控制。
在本示例中,我们将介绍如何使用 AWS SDK for TypeScript 使用假设角色。
要在 AWS STS 中使用假设角色,您需要创建角色并向其分配适当的 IAM 策略。您可以按照 AWS 官方文档中的步骤进行操作。
使用 npm 包管理工具安装 AWS SDK for TypeScript:
npm install aws-sdk
安装完毕后,在您的 TypeScript 代码中导入 AWS SDK:
import * as AWS from 'aws-sdk';
创建 AWS.STS 对象并指定您的区域:
const sts = new AWS.STS({ region: 'us-east-1' });
通过调用 sts.assumeRole()
方法来获取假设角色的凭证:
async function assumeRole(roleArn: string): Promise<AWS.STS.Types.AssumeRoleResponse> {
const params = {
RoleArn: roleArn,
RoleSessionName: 'MySession'
};
return sts.assumeRole(params).promise();
}
请注意,RoleArn
参数应该是您在步骤 1 中创建的 ARN(Amazon 资源名称)。
当您成功地获得假设角色的凭证后,您可以使用它们来调用 AWS API:
const assumedRole = await assumeRole('arn:aws:iam::1234567890:role/MyRole');
AWS.config.credentials = new AWS.Credentials(
assumedRole.Credentials.AccessKeyId,
assumedRole.Credentials.SecretAccessKey,
assumedRole.Credentials.SessionToken
);
// 现在您可以使用 AWS SDK 调用执行特定操作的 API
const s3 = new AWS.S3({ region: 'us-east-1' });
const buckets = await s3.listBuckets().promise();
console.log(`您的 S3 存储桶列表:${buckets.Buckets.map((b) => b.Name).join(',')}`);
通过以上步骤,您可以使用 AWS STS 中的假设角色来授予您的应用程序临时访问权限。此示例展示了如何使用 TypeScript 和 AWS SDK for JavaScript 调用 AWS API。