You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CDK部署CodePipeline时报错:无法读取undefined的'region'属性

问题:AWS CodePipeline部署CDK堆栈时出现TypeError: Cannot read properties of undefined (reading 'region')错误

我在使用AWS CodePipeline部署CDK堆栈时遇到无法解析的错误,部署CodePipeline的代码如下:

#######################################################
############### DEPLOY CODE PIPELINE ##################
#######################################################

print("Deploy Code Pipeline:", project_name_clean)
        
# Create a CodePipeline
pipeline = codepipeline.Pipeline(
   self,
   f'CodePipeline_{project_name_clean}',
   pipeline_name=f'codepipeline_{project_name_clean}',
)

# Add the CodeCommit source stage to the pipeline
source_stage = pipeline.add_stage(
   stage_name='Source',
)
source_action = codepipeline_actions.CodeCommitSourceAction(
   action_name='SourceAction',
   repository=repository,
   # branch='master',
   output=codepipeline.Artifact()
)
source_stage.add_action(source_action)

# Add the CodeBuild build stage to the pipeline
build_stage = pipeline.add_stage(
   stage_name='Build',
)
build_action = codepipeline_actions.CodeBuildAction(
   action_name='BuildAction',
   project=codebuild_project,
   input=codepipeline.Artifact(),
)
build_stage.add_action(build_action)

遇到的错误信息:

Traceback (most recent call last):
  File "/home/glue_user/workspace/jupyter_workspace/repositories/aws-infrastructure/cdk-constructs/app_cdk_initialize_project/app.py", line 20, in <module>
    InitializeProjectStack(app, f"{stack_name_clean}")
  File "/usr/local/lib/python3.10/site-packages/jsii/_runtime.py", line 112, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/home/glue_user/workspace/jupyter_workspace/repositories/aws-infrastructure/cdk-constructs/otd_data_engineer_lib/otd_data_engineer_lib/initialize_project_stack.py", line 249, in __init__
    build_stage.add_action(build_action)
  File "/usr/local/lib/python3.10/site-packages/aws_cdk/aws_codepipeline/__init__.py", line 5815, in add_action
    return typing.cast(None, jsii.invoke(self, "addAction", [action]))
  File "/usr/local/lib/python3.10/site-packages/jsii/_kernel/__init__.py", line 149, in wrapped
    return _recursize_dereference(kernel, fn(kernel, *args, **kwargs))
  File "/usr/local/lib/python3.10/site-packages/jsii/_kernel/__init__.py", line 399, in invoke
    response = self.provider.invoke(
  File "/usr/local/lib/python3.10/site-packages/jsii/_kernel/providers/process.py", line 377, in invoke
    return self._process.send(request, InvokeResponse)
  File "/usr/local/lib/python3.10/site-packages/jsii/_kernel/providers/process.py", line 339, in send
    raise RuntimeError(resp.error) from JavaScriptError(resp.stack)
RuntimeError: TypeError: Cannot read properties of undefined (reading 'region')
解决方案

这个错误核心是CDK无法读取资源的region属性,可从以下几点排查修复:

  • 检查CodeBuild/CodeCommit资源的区域配置:确保codebuild_project和repository是在当前堆栈的环境中创建,或通过from_project_arn/from_repository_arn正确导入(ARN需包含完整区域信息),避免跨区域资源引用时丢失区域属性。
  • 显式设置堆栈环境:初始化CDK堆栈时,明确指定env参数,确保资源区域可被正确解析:
    app = cdk.App()
    InitializeProjectStack(app, "MyStack",
      env=cdk.Environment(account="你的AWS账号ID", region="目标区域")
    )
    
  • 修正Artifact传递逻辑:Build阶段的输入应使用Source阶段输出的Artifact,而非新建空Artifact。修改代码如下:
    # 保存Source阶段输出的Artifact
    source_output = codepipeline.Artifact()
    source_action = codepipeline_actions.CodeCommitSourceAction(
       action_name='SourceAction',
       repository=repository,
       output=source_output
    )
    # Build阶段复用Source的输出作为输入
    build_action = codepipeline_actions.CodeBuildAction(
       action_name='BuildAction',
       project=codebuild_project,
       input=source_output,
    )
    

内容的提问来源于stack exchange,提问作者Pablo CA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:07:44