1

我尝试从 AWS System Manager 获取 ECS Fargate 容器的一些参数,但我遇到了一些问题。我的代码是:

secret_value = ssm.StringParameter.from_secure_string_parameter_attributes(
                self,
                "/spark/ssh_pub",
                parameter_name="/spark/ssh_pub",
                version=1
            )

container_sp = fargate_task_definition_sp.add_container(
                "pod-spark-master",
                image=ecs.ContainerImage.from_registry(
                    "xxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com/spark-master:ready-for-test-deployment"),
                health_check=health_check_sp,
                logging=log_config_sp,
                secrets={
                    "SPARK_PUB": ecs.Secret.from_ssm_parameter(secret_value)
                    }
            )

然后我得到这个错误:

jsii.errors.JSIIError: There is already a Construct with name '--spark--ssh_pub' in Stack [sandbox]

有人知道吗?

4

1 回答 1

0

可能性很少。

  1. CDK Bug
    CDK 有太多问题。报告了类似的错误https://github.com/aws/aws-cdk/issues/8603。所以它可能是一个CDK错误。在这种情况下,我们所能做的就是在 Github 中提出一个问题,并希望他们能够解决这个问题,因为报告并打开了 1000 多个问题,这可能不会很快发生。

  2. 实际上,有几个 CDK 结构(AWS 资源)已被赋予相同的名称。搜索您的堆栈“沙箱”并确保不会创建重复的名称。如果可以多次创建相同的构造并且名称可以相同。

There is already a Construct with name '--spark--ssh_pub' in Stack [sandbox].

还请确保这实际上是您需要的。

image=ecs.ContainerImage.from_registry(
    "xxxxxxxx.dkr.ecr.eu-central-1.amazonaws.com...

显然 docker 映像在您的 ECR 中。然后from_ecr_repository应该是要使用的。AWS 文档令人困惑,有时甚至不正确。from_registry不是从 ECR 中提取图像,而是从 DockerHub 等中提取图像

于 2020-08-30T09:28:15.550 回答