wal*_*ter 9 amazon-web-services amazon-iam aws-lambda aws-cdk
let servicePrincipal: any = new iam.ServicePrincipal("lambda.amazonaws.com");
let policyDoc = new iam.PolicyDocument({
statements: [
new iam.PolicyStatement({
actions: ["sts:AssumeRole"],
principals: [servicePrincipal],
effect: iam.Effect.ALLOW,
resources: ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"],
sid: ""
})
],
});
let accessRole: any = new iam.Role(this, 'git-access-role', {
assumedBy: servicePrincipal,
inlinePolicies: { policyDoc }
});
Run Code Online (Sandbox Code Playgroud)
我正在创建一个 cdk lambda,其角色具有 AWSLambdaBasicExecutionRole,但收到一条错误消息
A PolicyStatement used in an identity-based policy cannot specify any IAM principals
Run Code Online (Sandbox Code Playgroud)
不太确定...这是什么意思以及我应该做什么?
看起来您正在尝试使用 生成假设角色策略policyDoc。该assumedBy: servicePrincipal线路将自动生成信任策略。如果您只想将 lambda 基本执行策略分配给角色,那么它应该如下所示:
const accessRole = new iam.Role(this, 'git-access-role', {
assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"),
managedPolicies: [iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')]
});
Run Code Online (Sandbox Code Playgroud)
如果 lambda 需要访问 git,因为角色的构造 ID 似乎表明了这一点,那么您可以将这些权限添加为内联策略。但是这段代码将创建一个可由 lambda 承担的角色,并且它将具有 lambda 运行所需的最基本的权限。
| 归档时间: |
|
| 查看次数: |
12801 次 |
| 最近记录: |