HintergrundBoto3 SNS eine Wildcard veröffentlicht Thema ARN
AWS-Dienste regional sind (z us-west-2
, us-east-1
) und die boto3 Bibliothek erfordert, dass Sie einen Standardbereich zu setzen, bevor Sie den Client oder Ressourcen zugreifen. Die Dokumentation here zeigt jedoch, dass Sie ein SNS Topic ARN mit einem Platzhalter für die Region haben können. Die Dokumentation sagt:
Dokumentation: Amazon Simple Notification Service (Amazon SNS)
Syntax:
arn:aws:sns:region:account-id:topicname
arn:aws:sns:region:account-id:topicname:subscriptionid
Beispiele:
arn:aws:sns:*:123456789012:my_corporate_topic
arn:aws:sns:us-east-1:123456789012:my_corporate_topic:02034b43-fefa-4e07-a5eb-3be56f8c54ce
-Code
Wenn ich SNS-Ressource/-Client von Boto3 zum Veröffentlichen in einem Topic-ARN (mit einem Platzhalter für die Region) verwende, erhalte ich den folgenden Fehler. Wenn ich keinen Platzhalter für die Region habe (z. B. us-west-2
), funktioniert alles. Ich schaute in die Boto3-Bibliothek und es scheint nur Werte in einem JSON-Mapping zu ersetzen (z. B. fügt Topic String), so dass ich nicht verstehe, warum dies ein ungültiger Parameter wäre, wenn die obige Dokumentation zeigt, dass es gültig ist.
import boto3
client = boto3.client('sns', region_name='us-west-2')
client.publish(TopicArn='arn:aws:sns:*:123456789:some-topic', Message='SomeMessage')
Fehlermeldung
File "/Users/wliu/.virtualenvs/myenv/lib/python2.7/site-packages/botocore/client.py", line 548, in _make_api_call
raise ClientError(parsed_response, operation_name)
ClientError: An error occurred (InvalidParameter) when calling the Publish operation: Invalid parameter: TopicArn Reason: A * ARN must begin with arn:null, not arn:aws:sns:*:123456789:my_topic