Amazon SNS → AWS Lambda → Slack → AWS Chatbot에서 AWS 명령 실행
사전 준비는 건너뜁니다
Slack과 AWS Chatbot의 연결 설정 등은 본가 사이트에 있으므로 건너뜁니다.
Lambda 구현
이런 느낌의 간단한 것
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
message
변수에는 SNS에서 보낸 메시지가 들어 있으므로이를 추출합니다. 이벤트에 저장된 SNS의 데이터는 다음과 같습니다.
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "ARN内容",
"Sns": {
"Type": "Notification",
"MessageId": "メッセージID",
"TopicArn": "SNSのトピックARN",
"Subject": "タイトル",
"Message": "メッセージ内容",
"Timestamp": "送付時刻",
"SignatureVersion": "1",
"Signature": "XXX",
"SigningCertUrl": "https://XXX",
"MessageAttributes": {}
}
}
]
}
SNS측 설정
다음과 같은 SNS 설정을 하여 Lambda에 정보를 흘리도록 한다. (매우 간단하고 특별한 설정은 없습니다)
메시지를 SNS에서 보냅니다.
다음과 같은 메시지를 SNS에서 Publish해 봅니다.
<@aws> help
※ <XXX>
는 Slack에서 멘션을 보낼 때의 기법.
잠시 후 Slack 측에 메시지가 게시되고 AWS 명령의 게시 결과가 반환되었습니다.
요약
간단하지만 AWS Chatbot을 통해 AWS 명령을 발행하는 것은 Slack에 다른 서비스에서 쓰는 것도 가능하다는 것을 알았습니다. Slack -> AWS Chatbot -> AWS 명령 발행 가능성도 확산되었습니다.
Reference
이 문제에 관하여(Amazon SNS → AWS Lambda → Slack → AWS Chatbot에서 AWS 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/8d65669d9737f77a84a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이런 느낌의 간단한 것
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
message
변수에는 SNS에서 보낸 메시지가 들어 있으므로이를 추출합니다. 이벤트에 저장된 SNS의 데이터는 다음과 같습니다.{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "ARN内容",
"Sns": {
"Type": "Notification",
"MessageId": "メッセージID",
"TopicArn": "SNSのトピックARN",
"Subject": "タイトル",
"Message": "メッセージ内容",
"Timestamp": "送付時刻",
"SignatureVersion": "1",
"Signature": "XXX",
"SigningCertUrl": "https://XXX",
"MessageAttributes": {}
}
}
]
}
SNS측 설정
다음과 같은 SNS 설정을 하여 Lambda에 정보를 흘리도록 한다. (매우 간단하고 특별한 설정은 없습니다)
메시지를 SNS에서 보냅니다.
다음과 같은 메시지를 SNS에서 Publish해 봅니다.
<@aws> help
※ <XXX>
는 Slack에서 멘션을 보낼 때의 기법.
잠시 후 Slack 측에 메시지가 게시되고 AWS 명령의 게시 결과가 반환되었습니다.
요약
간단하지만 AWS Chatbot을 통해 AWS 명령을 발행하는 것은 Slack에 다른 서비스에서 쓰는 것도 가능하다는 것을 알았습니다. Slack -> AWS Chatbot -> AWS 명령 발행 가능성도 확산되었습니다.
Reference
이 문제에 관하여(Amazon SNS → AWS Lambda → Slack → AWS Chatbot에서 AWS 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/8d65669d9737f77a84a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음과 같은 메시지를 SNS에서 Publish해 봅니다.
<@aws> help
※
<XXX>
는 Slack에서 멘션을 보낼 때의 기법.잠시 후 Slack 측에 메시지가 게시되고 AWS 명령의 게시 결과가 반환되었습니다.
요약
간단하지만 AWS Chatbot을 통해 AWS 명령을 발행하는 것은 Slack에 다른 서비스에서 쓰는 것도 가능하다는 것을 알았습니다. Slack -> AWS Chatbot -> AWS 명령 발행 가능성도 확산되었습니다.
Reference
이 문제에 관하여(Amazon SNS → AWS Lambda → Slack → AWS Chatbot에서 AWS 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/8d65669d9737f77a84a5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Amazon SNS → AWS Lambda → Slack → AWS Chatbot에서 AWS 명령 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kojiisd/items/8d65669d9737f77a84a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)