如何在CloudFormation/CDK/Terraform中获取Sagemaker Notebook Instance私有IP
能否在IaC工具中直接获取SageMaker Notebook实例的私有IP
目前CloudFormation、底层依赖CloudFormation的CDK、以及基于AWS官方API封装的Terraform,都无法直接通过资源本身的输出属性获取SageMaker Notebook实例的私有IP地址。官方CloudFormation的AWS::SageMaker::NotebookInstance资源仅对外暴露NotebookInstanceName一个返回属性,原生不支持直接返回私有IP相关字段。
可行的替代实现思路
- 自定义资源调用AWS API拉取:在CloudFormation/CDK中创建Lambda类型的自定义资源,在Notebook实例创建完成后触发Lambda调用
describe_notebook_instance接口,返回结果中的NetworkInterfaces[0].PrivateIp即为目标私有IP,将该值作为自定义资源的输出即可在模板中直接引用。CDK可直接使用aws-cdk-lib.CustomResource封装该逻辑,Terraform可使用aws_lambda_invocation数据源在资源创建完成后调用接口拉取。 - 生命周期配置中转存储:为Notebook实例绑定自定义生命周期配置,在启动脚本中调用实例元数据接口获取自身私有IP,再调用SSM API将IP写入Parameter Store的指定参数,后续其他资源直接读取该参数即可获取对应的IP地址。
- 关联ENI反向查询:SageMaker Notebook实例部署在VPC中时会绑定专属弹性网络接口(ENI),该ENI默认带有SageMaker服务标签、以及关联的Notebook实例名称标签,可以通过标签筛选出对应ENI,直接读取ENI的私有IP属性即可。
内容的提问来源于stack exchange,提问作者maslick
相关产品推荐
相关产品推荐

