Da AWS angekündigt hat, dass AWS-Befehle auf Slack ausgeführt werden können, habe ich geprüft, ob das Schreiben von anderen Diensten anstelle der direkten Eingabe unterstützt wird.
https://aws.amazon.com/jp/blogs/devops/running-aws-commands-from-slack-using-aws-chatbot/
Überspringen Sie die Einstellungen für die Verknüpfung von Slack und AWS Chatbot auf der ursprünglichen Site.
Eine einfache Sache wie diese
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
Da die Variable "message" die von SNS gesendete Nachricht enthält, wird sie extrahiert. Die im Ereignis gespeicherten Daten von SNS lauten wie folgt.
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "ARN-Inhalte",
"Sns": {
"Type": "Notification",
"MessageId": "Nachrichten ID",
"TopicArn": "SNS-Thema ARN",
"Subject": "Titel",
"Message": "Nachrichteninhalt",
"Timestamp": "Lieferzeit",
"SignatureVersion": "1",
"Signature": "XXX",
"SigningCertUrl": "https://XXX",
"MessageAttributes": {}
}
}
]
}
Stellen Sie den folgenden SNS ein, um Informationen an Lambda zu senden. (Sehr einfach, keine besonderen Einstellungen)
Versuchen Sie, die folgende Nachricht von SNS zu veröffentlichen.
<@aws> help
`<XXX>`
ist die Notation zum Senden von Erwähnungen mit Slack.Nach einer Weile wurde eine Nachricht auf der Slack-Seite veröffentlicht und das Ergebnis der Ausgabe des AWS-Befehls zurückgegeben.
Es ist einfach, aber ich habe bestätigt, dass die Ausgabe von AWS-Befehlen über AWS Chatbot auch durch Schreiben von anderen Diensten an Slack erfolgen kann. Slack-> AWS Chatbot-> AWS-Befehlsausgabemöglichkeiten wurden erneut erweitert.