Depuis qu'AWS a annoncé que les commandes AWS peuvent être exécutées sur Slack, j'ai vérifié s'il prend en charge l'écriture à partir d'autres services au lieu de l'entrée directe.
https://aws.amazon.com/jp/blogs/devops/running-aws-commands-from-slack-using-aws-chatbot/
Ignorez les paramètres de liaison de Slack et d'AWS Chatbot tels qu'ils se trouvent sur le site d'origine.
Une chose simple comme ça
import json
import os
import logging
import urllib.request
logger = logging.getLogger(__name__)
SLACK_URL = os.environ['SLACK_URL']
def lambda_handler(event, context):
logger.info('Start Slack message sending.')
message = event['Records'][0]['Sns']['Message']
params = {
"text": message,
"icon_emoji": ":heavy_exclamation_mark:"
}
text = "payload=" + json.dumps(params)
request = urllib.request.Request(
SLACK_URL,
data = text.encode("utf-8"),
method="POST"
)
with urllib.request.urlopen(request) as response:
response = response.read().decode("utf-8")
return response
Puisque la variable message
contient le message envoyé depuis SNS, il est extrait. Les données de SNS stockées dans l'événement sont les suivantes.
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "Contenu ARN",
"Sns": {
"Type": "Notification",
"MessageId": "ID du message",
"TopicArn": "Rubrique SNS ARN",
"Subject": "Titre",
"Message": "Contenu du message",
"Timestamp": "Heure de livraison",
"SignatureVersion": "1",
"Signature": "XXX",
"SigningCertUrl": "https://XXX",
"MessageAttributes": {}
}
}
]
}
Configurez le SNS suivant pour envoyer des informations à Lambda. (Très simple, pas de paramètres spéciaux)
Essayez de publier le message suivant à partir de SNS.
<@aws> help
Après un certain temps, un message a été publié du côté Slack et le résultat de l'émission de la commande AWS a été renvoyé.
C'est facile, mais j'ai confirmé que l'émission de commandes AWS via AWS Chatbot peut également être effectuée en écrivant dans Slack à partir d'autres services. Les possibilités d'émission de commandes Slack-> AWS Chatbot-> AWS se sont à nouveau étendues.