2016-04-06 21 views
4

パブリックIPをデフォルトで自動的に割り当てないサブネットを1つ持つAWS VPCで作業しています。インスタンスを作成し、パブリックIPを自動的に割り当てるには、boto3を使用したいと思います。 boto3のドキュメントからこれをどうやって行うのかは明らかではありません。Boto3では、インスタンスの作成時にパブリックIPを割り当てる方法はありますか?

私が得た最も近いが、以下だったが、これはまだエラーがあります:あなたはプライベートにVPCサブネット内の任意のEC2インスタンスを起動する場合は公開IPがオンに自動的に割り当てなければ(

self._ec2.create_instances( ImageId=self._cluster._image, KeyName="key_pair_1", InstanceType="t2.micro", MinCount=1, MaxCount=1, SecurityGroupIds=["sg-someid"], SubnetId="subnet-anotherid", BlockDeviceMappings=[{ "DeviceName": "/dev/sda1", "Ebs": { "VolumeType": "gp2", "VolumeSize": disk_size, "DeleteOnTermination": True }, }], NetworkInterfaces=[{ "DeviceIndex": 0, "AssociatePublicIpAddress": True }] )

+1

エラーは何ですか? – garnaat

+0

問題キーワードは、「デフォルトでパブリックIPを自動的に割り当てないサブネット」(AKAプライベートサブネット)です。 "AssociatePublicIpAddress":Trueはプライベートサブネットでは機能しません。 – mootmoot

答えて

1

)、インターネットを準備する方法は2通りあります。 1.インスタンスを作成した後にElastic IPを接続します。 2.インターネットへの接続を許可するサブネットにトラフィックを再ルーティングするNATゲートウェイを作成します。

このインスタンスネットワーク設定は、VPCプライベートサブネットルールを上書きしません。

"AssociatePublicIpAddress": True 

サブネット機能がパブリックIPの自動割り当てに変更されない場合は、最も簡単な方法は弾性IPです。だから2余分なプロセス 1. allocate_addressを追加:弾性IPアドレス 2. associate_addressを得る:

+0

パブリックIPアドレスを自動的に割り当てないパブリックサブネットを使用できます。それは質問が関係しているようです。パブリックサブネットとプライベートサブネットの唯一の違いは、プライベートサブネットにインターネットゲートウェイとルーティングが接続されていないことです。自動割り当てパブリックIPは、サブネットがパブリックかプライベートかを定義しません。以下のImre Kの答えはより良い答えです。 –

0

あなたはNetworkInterfaces以内にあなたのサブネット識別子を移動する必要があるインスタンス-IDにEIP-IDを取り付けます。

それは NetworkInterfaces=[{ "DeviceIndex": 0, "SubnetId": "somesubnetid", "AssociatePublicIpAddress": True }]

する必要があり、また、あなたはずっとこのサブネットIDは付属のインターネットゲートウェイを持っていることを確認してください。

1

誰かが助けてくれるかもしれません。 SecurityGroupIdsとサブネットIDをネットワークインターフェイスパラメータとして配置し、インスタンスパラメータからそれらを削除する必要があります。

NetworkInterfaces=[ 
    { 
     'DeviceIndex': 0, 
     'SubnetId' : 'subnet-xxxxxx', 
     'Groups': [ 
      'sg-xxxxxx','sg-xxxx','sg-xxxxxx' 
     ], 
     'AssociatePublicIpAddress': True    
    }, 
関連する問題