В CDK IAM Users, Groups or Roles есть два метода для добавления PolicyStatements:
Какая разница между тогда? Справочник по API не очень помогает.
TL;DR Оба добавляют заявление к встроенной политике принципала. Единственная разница заключается в возвращаемом значении.
Оба принимают Заявление о политике и синтезируют ресурс AWS::IAM::Policy
для принципала. Однако addToPolicy
возвращает логическое значение «успех», а addToPrincipalPolicy
возвращает объект.
В этом легко убедиться, взглянув на реализацию исходный код aws-cdk класса Role
:
// role.ts
export class Role extends Resource implements IRole {
// ...
public addToPolicy(statement: PolicyStatement): boolean {
return this.addToPrincipalPolicy(statement).statementAdded;
}
public addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult {
if (!this.defaultPolicy) {
this.defaultPolicy = new Policy(this, 'Policy');
this.attachInlinePolicy(this.defaultPolicy);
}
this.defaultPolicy.addStatements(statement);
return { statementAdded: true, policyDependable: this.defaultPolicy };
}