gpt4 book ai didi

amazon-web-services - 我可以在 AWS CDK 中复制 DependsOn 行为吗?

转载 作者:行者123 更新时间:2023-12-03 19:06:34 26 4
gpt4 key购买 nike

使用 AWS CDK (python),我正在创建一个具有隔 ionic 网和多个接口(interface)终端节点的 VPC。

我还推出了一款带有 associated Codecommit repo 的 Sagemaker 笔记本。

我为 Codecommit 和 Git Codecommit 创建接口(interface)端点,但当我的 Sagemaker 笔记本开始部署时,接口(interface)端点仍在创建,因此 Cloudformation 堆栈失败并出现错误

fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/SomeRepo/': Failed to connect to git-codecommit.us-east-1.amazonaws.com port 443: Connection timed out

如果我注释掉我的 Sagemaker 笔记本,请运行 cdk deploy myStack ,端点已创建,然后我可以取消注释我的笔记本,它启动时没有任何问题,因为 Codecommit 接口(interface)端点已经存在。

CDK中有没有办法添加 DependsOn 到我使用 CDK 创建的资源?

相关代码如下

from aws_cdk import (
core,
aws_sagemaker as sagemaker,
aws_iam as iam,
aws_ec2 as ec2
)

class SagemakerStack(core.Stack):

def __init__(self, scope: core.Construct, id: str, bucket, repo, **kwargs) -> None: # repo is passed with the codecommit repo I created in a previous stack
super().__init__(scope, id, **kwargs)

self.sagemaker_vpc = ec2.Vpc(
# Leaving out some details
self, "SagemakerVPC",
subnet_configuration=[
ec2.SubnetConfiguration(
subnet_type=ec2.SubnetType.ISOLATED, # <-- Isolated, therefore need interface endpoints
name="IsolatedA",
cidr_mask=24
)
]
)

self.sagemaker_vpc.add_interface_endpoint(
"GitCodecommitInterface",
service=ec2.InterfaceVpcEndpointAwsService.CODECOMMIT_GIT # Needed to be created before I can create notebook
)


sagemaker_role = iam.Role() # Hiding details
sagemaker_repo = sagemaker.CfnCodeRepository() # hiding details
sagemaker_sg = ec2.SecurityGroup() # Hiding details

# Need for this to wait until GitCodecommitInterface has been created
notebook = sagemaker.CfnNotebookInstance(
self, "MyNotebook",
instance_type="ml.t3.medium",
role_arn=sagemaker_role.role_arn,
default_code_repository=repo.repository_clone_url_http,
subnet_id=self.sagemaker_vpc.isolated_subnets[0].subnet_id,
direct_internet_access="Disabled",
security_group_ids=[sagemaker_sg.security_group_id]
)

最佳答案

不确定Python的语法如何,因为我使用CDK的Typescript,但CDK构造最终在CloudFormation资源中解析,所以实际上是可能的。

这是一个使用 Typescript 的示例:

const api = new apigateway.LambdaRestApi(this, "apigw", {...})
const function = new lambda.Function(this, "lambda", {...})

// "function" will be deployed before "api"
api.node.addDependency(function)

因此,在了解如何从 CDK 构造访问内部节点之后,就非常简单了

关于amazon-web-services - 我可以在 AWS CDK 中复制 DependsOn 行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63512039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com