以下是我的代码,用于在自定义VPC上启动实例,但是我看到以下错误。在查找问题时需要您的帮助:
import json
import boto3
def lambda_handler(event, context):
session_client=boto3.client(service_name='ec2')
response = session_client.run_instances(
#SecurityGroupIds=['sg-0ffb80bb93205a004'],
#SubnetId='subnet-0bb30254459fd4714',
MaxCount=1,
MinCount=1,
NetworkInterfaces=[
{
'NetworkInterfaceId':'eni-0846a5c0c47e98b3c',
'Description': 'Network Interface Description',
'DeviceIndex': 123,
'SubnetId': 'subnet-0bb30254459fd4714'
},
],
LaunchTemplate={
'LaunchTemplateId': 'lt-0d3c7dd295796ad6b',
'Version': '1'
})
Error: Network interfaces and an instance-level subnet ID may not be specified on the same request",
"errorType": "ClientError",
谢谢, 巴普·雷迪·巴图
答案 0 :(得分:0)
通过boto3创建EC2实例时可以传递两个subnetid参数
1)请求中根级别的SubnetId:
SubnetId (字符串)-[EC2-VPC]用于启动网络的子网的ID。 实例成。如果指定网络接口,则必须指定 任何子网作为网络接口的一部分。
由于您正在传递NetworkInterfaces参数,因此不会传递此SubnetId。
2)SubnetId作为NetworkInterfaces参数的一部分
SubnetId (字符串)-与网络关联的子网的ID 接口。仅在启动时创建网络接口时适用 一个实例。
由于您使用的是已经存在的网络接口。您也不应在NetworkInterfaces内部传递SubnetId参数。