如何通过 Boto3 API 在 AWS 中添加弹性 ip 名称?

How to add elastic ip name in AWS via Boto3 API?

通过 boto3 在 AWS 中创建弹性 IP 时。 API 没有提供将名称添加到弹性 IP 的选项,但此字段可通过 UI 获得。如何在创建弹性 IP 时或之后将名称添加到弹性 IP?

以下代码工作:

import boto3

client = boto3.client('ec2')
addr = client.allocate_address(Domain='vpc')
print addr['PublicIp']

但是,如果我添加“名称”字段,则会抛出此错误:

ParamValidationError: Parameter validation failed: Unknown parameter in input: "Name", must be one of: DryRun, Domain

通常在 AWS 中,没有 Name 属性。您在 AWS 控制台中看到的实际上是一个标签,其键为 Name。几乎所有 AWS 对象都可以有 Name 个标签。

使用boto3,您可以使用create_tags()方法设置一个或多个标签。例如:

import boto3
client = boto3.client('ec2')

response = client.create_tags(
    Resources=[
        'eipalloc-12344567890'
    ],
    Tags=[
        {
            'Key': 'Name',
            'Value': 'prod-eip'
        }
    ]
)

你看到的是一个标签。弹性 IP 似乎不支持“Tag-On-Create”,因此您必须在创建 EIP 后创建标签。

尝试以下操作:

import boto3

client = boto3.client('ec2')
addr = client.allocate_address(Domain='vpc')
print(addr['PublicIp'])

response = client.create_tags(
    Resources=[
        addr['AllocationId'],
    ],
    Tags=[
        {
            'Key': 'Name',
            'Value': 'production',
        },
    ],
)
print(response)