通常这个问题是由于在CI/CD流程中生成的IAM角色没有适当的lambda权限而导致的。可以尝试以下步骤解决:
role = iam.Role(self, "MyRole", assumed_by=iam.ServicePrincipal("lambda.amazonaws.com"))
role.add_managed_policy(iam.ManagedPolicy.from_aws_managed_policy_name("service-role/AWSLambdaBasicExecutionRole"))
这将确保创建的IAM角色具有lambda基本执行权限。
function = _lambda.Function(self, "MyFunction",
runtime=_lambda.Runtime.PYTHON_3_8,
handler="lambda_function.handler",
code=_lambda.Code.asset("./lambda"),
role=role,
)
# 获取角色的ARN
role_arn = role.role_arn
# 给Lambda函数分配角色
function.add_to_role_policy(iam.PolicyStatement(
actions=["sns:Publish"],
resources=["arn:aws:sns:*:*:*"],
))
aws configure set role_arn
aws configure set source_profile
aws configure set region
这将为临时AWS访问密钥设置正确的角色信息,从而允许IAM角色分配给Lambda函数。
如果仍然存在问题,建议查看CDK、Lambda等服务的文档,或者寻求AWS技术支持的帮助。