如何使用 CDK 向 Lambda 函数添​​加权限?

4 python amazon-web-services amazon-iam aws-lambda aws-cdk

我有一个 Lambda 函数,它利用 AWS Python SDK 来管理 AWS CodeCommit 存储库。我使用 CDK 创建 Lambda 函数,如下所示:

from aws_cdk import aws_lambda as _lambda
from aws_cdk.aws_lambda_python import PythonFunction

service = PythonFunction(
    self, 'Svc',
    entry='./path/to',
    index='file.py',
    runtime=_lambda.Runtime.PYTHON_3_8,
    handler='handler',
)
Run Code Online (Sandbox Code Playgroud)

部署后,我运行 Lambda 函数,出现以下错误,该错误被发送到 CloudWatch 日志:

An error occurred (AccessDeniedException) when calling the GetRepository operation: User: arn:aws:iam::XXXXXXXXXXXX:user/XXXX is not authorized to perform: codecommit:GetRepository on resource: arn:aws:codecommit:us-east-1:XXXXXXXXXXXX:XXXX
Run Code Online (Sandbox Code Playgroud)

如何允许 Lambda 函数调用codecommit:GetRepository我账户中的任何存储库?

小智 9

创建 IAM 策略声明并将其添加到您的函数的角色策略中:

from aws_cdk import aws_iam as iam

service.add_to_role_policy(iam.PolicyStatement(
    effect=iam.Effect.ALLOW,
    actions=[
        'codecommit:*',
    ],
    resources=[
        'arn:aws:codecommit:us-east-1:XXXXXXXXXXXX:*',
    ],
))
Run Code Online (Sandbox Code Playgroud)