AWS Powershell - 按名称获取SNS主题

时间:2015-08-21 12:58:49

标签: powershell amazon-web-services amazon-sns aws-powershell

除了在已经创建的主题上执行以下操作之外,我找不到通过名称检索SNS主题的方法:

$topicarn = New-SNSTopic -Name "$deployedAppVersion-$environment-Events"

上面的问题是如果我得到$ deployedAppVersion错误它将创建一个不应该的SNS主题。

我已经找了一个" Get-SNSTopic"但我认为它不存在。我能看到的唯一替代方案是所有主题的大脏列表,并搜索包含我想要的名称的arn。

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

Get-SNSTopic确实存在,但看起来它映射到list topics API,只是返回一个ARN列表 - 您描述的行为。 API和CLI似乎有类似的限制。

你可以通过包装Get-SNSTopicAttribute将arn分成几部分,在功能上得到你想要的东西:

Function Get-SNSTopicByName
{
    param
    (
        [string]$Region = 'us-east-1',
        [string]$AWSAccountNumber = '123456781234',
        [string]$TopicName
    )

    $topicArn = "arn:aws:sns:$($Region):$($AWSAccountNumber):$($TopicName)"

    Get-SNSTopicAttribute -TopicArn $topicArn
}

Get-SNSTopicByName -TopicName "my-topic"

Get-SNSTopicAttribute返回有关该主题的Dictionary<string, string>有用信息,如果该主题不存在,也会出错。这似乎更接近你的意思。

您可以通过访问密钥获取单个部分:

PS C:/> $result = Get-SNSTopicByName -TopicName "my-topic"
PS C:/> $result["TopicArn"]
arn:aws:sns:us-east-1:123456781234:my-topic
PS C:/> $result["DisplayName"]
My Test Topic (Dev)