首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >action :在向codepipeline添加代码部署操作时出错(jsii.errors.JSIIError:无法读取未定义的属性“区域”)

action :在向codepipeline添加代码部署操作时出错(jsii.errors.JSIIError:无法读取未定义的属性“区域”)
EN

Stack Overflow用户
提问于 2021-08-31 07:16:13
回答 1查看 787关注 0票数 2

如果我移除代码部署阶段,codepipeline将创建并执行Source (GitHub)和Build (坞映像到ECR)阶段。在本例中,我还创建了一个新的ECS集群,它将被创建以及预期的服务。

--这是代码的一部分:

代码语言:javascript
复制
fargate_service = ecs_patterns.ApplicationLoadBalancedFargateService(self, parms["ecs_fargate_service"],
            cluster = ecs_cluster,
            task_definition = task_definition,
            public_load_balancer = True,
            desired_count = 2,
            listener_port = 80,
            min_healthy_percent = 100,
            max_healthy_percent = 200,
            assign_public_ip = False,                
        )

deploy_action = codepipeline_actions.EcsDeployAction(
            action_name = 'DeployAction',
            service = fargate_service,
            image_file = codepipeline.ArtifactPath(build_output, 'imagedefinitions.json')
        )

pipeline = codepipeline.Pipeline(self, "CodePipeline",
            pipeline_name=parms["pipeline_name"]+"test",
            cross_account_keys = False,
            stages=[
                codepipeline.StageProps(stage_name="Source", actions=[source_action]),
                codepipeline.StageProps(stage_name="Build", actions=[build_action]),
                codepipeline.StageProps(stage_name="Deploy-to-ECS", actions=[deploy_action])
            ]
        )

如果删除这一行codepipeline.StageProps(stage_name="Deploy-to-ECS",actions=deploy_action),则没有错误,堆栈也能工作。

我已经尝试过以下测试:

引用现有的ECS集群创建

  • ,在本例中,没有错误,部署阶段以文档的形式工作,并且无法将该区域指定给Codepipeline项目。

这是错误

代码语言:javascript
复制
jsii.errors.JavaScriptError: 
  TypeError: Cannot read property 'region' of undefined
      at RichAction.get effectiveRegion [as effectiveRegion] (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/private/rich-action.js:61:111)
      at RichAction.get isCrossRegion [as isCrossRegion] (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/private/rich-action.js:31:61)
      at Pipeline.ensureReplicationResourcesExistFor (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/pipeline.js:377:21)
      at Pipeline._attachActionToPipeline (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/pipeline.js:337:38)
      at Stage.attachActionToPipeline (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/private/stage.js:124:31)
      at Stage.addAction (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/private/stage.js:71:33)
      at new Stage (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/private/stage.js:28:18)
      at Pipeline.addStage (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/pipeline.js:272:23)
      at new Pipeline (/tmp/jsii-kernel-wOdXOf/node_modules/@aws-cdk/aws-codepipeline/lib/pipeline.js:239:18)
      at /tmp/tmpg46d0z4s/lib/program.js:8367:58

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "app.py", line 40, in <module>
    pipeline = EcsCicdStack(main_stack, "Pipeline-"+parms["stage"], vpc=vpc_stack.vpc, parms=parms)
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/jsii/_runtime.py", line 86, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/mnt/e/Proyectos/ecs-cicd/ecs_cicd/ecs_cicd_stack.py", line 190, in __init__
    pipeline = codepipeline.Pipeline(self, "CodePipeline",
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/jsii/_runtime.py", line 86, in __call__
    inst = super().__call__(*args, **kwargs)
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/aws_cdk/aws_codepipeline/__init__.py", line 4030, in __init__
    jsii.create(Pipeline, self, [scope, id, props])
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/jsii/_kernel/__init__.py", line 290, in create
    response = self.provider.create(
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/jsii/_kernel/providers/process.py", line 344, in create
    return self._process.send(request, CreateResponse)
  File "/mnt/e/Proyectos/ecs-cicd/.venv/lib/python3.8/site-packages/jsii/_kernel/providers/process.py", line 326, in send
    raise JSIIError(resp.error) from JavaScriptError(resp.stack)
jsii.errors.JSIIError: Cannot read property 'region' of undefined

这是我的环境的配置:

代码语言:javascript
复制
CDK CLI Version : 1.120.0 (build 6c15150)
Framework Version: 1.120.0 (build 6c15150)
Node.js Version: v16.8.0
OS : Ubuntu 20.04 LTS
Language (Version): Python 3.8.2

如果你能给我一个关于在哪里看的想法,我会非常感激的。

提前感谢!

致以问候。

EN

回答 1

Stack Overflow用户

发布于 2021-10-25 14:43:58

这是因为EcsDeployActionservice参数中接受aws_ecs.IBaseService,并且传递一个ecs_patterns.ApplicationLoadBalancedFargateService

若要访问实际的ECS服务结构,请传递fargate_service.service

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-ecs-patterns.ApplicationLoadBalancedFargateService.html#service

https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-codepipeline-actions.EcsDeployActionProps.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68994371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档