4

既に作成されたトピックで次の操作を行う以外に、SNS トピックを名前で取得する方法が見つかりません。

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

上記の問題は、$deployedAppVersion を間違って取得すると、本来あるべきではない SNS トピックが作成されることです。

「Get-SNSTopic」を探しましたが、存在しないと思います。私が見ることができるものに代わる唯一の方法は、すべてのトピックの大きな汚いリストと、必要な名前を含む arn を検索することです。

より良い方法はありますか?

4

1 に答える 1

3

Get-SNSTopicは存在しますが、リスト トピック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)
于 2015-08-21T13:31:59.837 に答える