如何在一个策略文档 AWS CDK 中指定多个委托人
How to specify multiple principals in a policy document AWS CDK
我正在处理 cdk 脚本,我想指定多个主体,例如
"Principal": {
"AWS": [
"arn:aws:iam::AWS-account-ID:user/user-name-1",
"arn:aws:iam::AWS-account-ID:user/user-name-2"
]
}
这在 JSON 文档中非常简单,但在使用策略文档编写时,我不确定如何指定它。
我目前有
const principals : Array<IPrincipal> = ['arn:aws:iam::AWS-account-ID:user/user-name-1', 'arn:aws:iam::AWS-account-ID:user/user-name-2']
const myPolicy = new PolicyDocument({
statements: [
new PolicyStatement({
actions: ['*'],
effect: Effect.ALLOW,
principals: principals,
resources: ['*'],
}),
],
});
怎么,这是错误的
Cannot read property 'principalJson' of undefined
PolicyStatement
principals
键接受一个 IPrincipal
的数组,但你给它的是一个字符串数组。 User.fromUserArn 方法返回的 IUser
类型是 IPrincipal
接口的超集,所以这就是你需要的:
const principals: Array<iam.IUser> = [
'arn:aws:iam::AWS-account-ID:user/user-name-1',
'arn:aws:iam::AWS-account-ID:user/user-name-2',
].map((p, i) => iam.User.fromUserArn(this, `ImportedUser${i}`, p));
我正在处理 cdk 脚本,我想指定多个主体,例如
"Principal": {
"AWS": [
"arn:aws:iam::AWS-account-ID:user/user-name-1",
"arn:aws:iam::AWS-account-ID:user/user-name-2"
]
}
这在 JSON 文档中非常简单,但在使用策略文档编写时,我不确定如何指定它。 我目前有
const principals : Array<IPrincipal> = ['arn:aws:iam::AWS-account-ID:user/user-name-1', 'arn:aws:iam::AWS-account-ID:user/user-name-2']
const myPolicy = new PolicyDocument({
statements: [
new PolicyStatement({
actions: ['*'],
effect: Effect.ALLOW,
principals: principals,
resources: ['*'],
}),
],
});
怎么,这是错误的
Cannot read property 'principalJson' of undefined
PolicyStatement
principals
键接受一个 IPrincipal
的数组,但你给它的是一个字符串数组。 User.fromUserArn 方法返回的 IUser
类型是 IPrincipal
接口的超集,所以这就是你需要的:
const principals: Array<iam.IUser> = [
'arn:aws:iam::AWS-account-ID:user/user-name-1',
'arn:aws:iam::AWS-account-ID:user/user-name-2',
].map((p, i) => iam.User.fromUserArn(this, `ImportedUser${i}`, p));