AWS CDK 授予对堆栈外资源的权限

Aze*_*ter 2 amazon-web-services aws-lambda aws-cdk

我对 AWS CDK 还很陌生,对 AWS 没有太多经验。在我正在编写的 CDK 堆栈中,我必须授予使用其他 CDK 模板构建并且已经在 aws 中的资源的权限。

假设我的堆栈 A 包含一个 lambda,该 lambda 将从另一个服务 X 调用。服务 X 需要具有 lambda 的调用权限。我可以从堆栈 A 代码中授予服务 X 权限,还是需要修改服务 X 堆栈?

Ami*_*nes 5

一般来说,答案是肯定的,您可以为堆栈外创建的资源添加权限。但是,您需要确保资源是可导入的。

拉姆达用法:

为 lambda 角色添加策略:

更多信息在这里

const importedLambda = lambda.Function.fromFunctionArn(scope,`${name}-lambda`,${LAMBDA_ARN});

importedLambda.addToRolePolicy(new iam.PolicyStatement({
  effect: iam.Effect.ALLOW,   // ... and so on defining the policy
}));
Run Code Online (Sandbox Code Playgroud)

为 lambda 添加权限:

更多信息在这里

const importedLambda = lambda.Function.fromFunctionArn(scope,`${name}-lambda`,${LAMBDA_ARN});

importedLambda.addPermission('allowInvocation',{
  principal: new ServicePrincipal('events.amazonaws.com'), // ... and so on defining the permission
 sourceArn: ...
});
Run Code Online (Sandbox Code Playgroud)