[英]How do I get public DNS after creating AWS EC2 instance with CDK?
[英]Get allocation ID form public (Elastic) IP in CDK
有沒有一種本地方法可以從 CDK 中的公共彈性 IP(或相反)檢索分配 ID?
給定一個已經存在的 IP,我目前被迫實例化一個 Boto3 客戶端以獲取匹配的分配 ID。 沒有更好的方法來加載CfnEip
並解析其public_ip
和allocation_id
屬性嗎?
import boto3
c = boto3.client("ec2")
address = c.describe_addresses(PublicIps = ['123.45.67.89'])['Addresses'][0]
instance = ec2.Instance(…)
ec2.CfnEIPAssociation(self, "EipAssociation",
allocation_id = address["AllocationId"],
instance_id = instance.instance_id)
EIP 存在第 1 層結構,稱為CfnEIP ,您可以使用它來分配 EIP。
它有一個名為attr_allocation_id的屬性,您可以使用它來訪問 EIP 的分配 ID。
如果您需要預分配 EIP 的分配 ID,您可能可以使用AwsCustomResource讓 Lambda 函數為您調用AWS JavaScript SDK 。 不過,我不知道這是否對您的情況有很大影響,除非例如在創建實例后立即獲取分配 ID 很重要。
如果您想使用 AWSCustomResource,您還必須describeAddresses並將PublicIps
參數設置為包含您要查找的 IP 的列表。 請注意,我自己沒有嘗試此代碼:
eip = cr.AwsCustomResource(self, f"MyEIP",
on_create=cr.AwsSdkCall(
physical_resource_id=cr.PhysicalResourceId.of(instance.instance_name),
service='EC2',
action='describeAddresses',
parameters={
"PublicIps": ["123.45.67.89"]
}
),
policy=cr.AwsCustomResourcePolicy.from_sdk_calls(
resources=cr.AwsCustomResourcePolicy.ANY_RESOURCE,
),
)
allocation_id = eip.get_response_field("Addresses.0.AllocationId")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.