簡體   English   中英

從 CDK 中的公共(彈性)IP 獲取分配 ID

[英]Get allocation ID form public (Elastic) IP in CDK

有沒有一種本地方法可以從 CDK 中的公共彈性 IP(或相反)檢索分配 ID?

給定一個已經存在的 IP,我目前被迫實例化一個 Boto3 客戶端以獲取匹配的分配 ID。 沒有更好的方法來加載CfnEip並解析其public_ipallocation_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM