【发布时间】:2023-03-04 13:11:01
【问题描述】:
使用 AWS CDK (python),我正在创建一个具有隔离子网和多个接口端点的 VPC。
我还将推出一个带有associated Codecommit repo 的 Sagemaker 笔记本
我为 Codecommit 和 Git Codecommit 创建了接口端点,但是当我的 Sagemaker 笔记本开始部署时,接口端点仍在创建中,因此 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 接口端点已经存在。
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]
)
【问题讨论】:
标签: amazon-web-services amazon-cloudformation aws-cdk