Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
이번에는 AWS의 SNS Topic(주제)에 메시지를 전송시켜 보자.
주요 코드는 아래의 공식문서를 참고해서 만들었다.
https://docs.aws.amazon.com/ko_kr/code-library/latest/ug/python_3_sns_code_examples.html
자격증명 방식
AWS 자원 내부에서 동작한다면 아래처럼 자격증명을 파일로 저장시켜서 계정에 접근할 수 있다.
https://docs.aws.amazon.com/ko_kr/powershell/latest/userguide/specifying-your-aws-credentials.html
본인은 ECS에서 동작시키기 위해서 코드 상에 자격증명 하는 방법을 선택했다.
코드
boto3를 통해서 sns resource를 가져오자.
resource =boto3.resource(
'sns',
aws_access_key_id="your_aws_access_key_id",
aws_secret_access_key="your_aws_secret_access_key",
region_name='ap-northeast-2',
)
Topic을 이미 만들었다면, 자신의 Topic 중에 하나를 선택해야 한다.
따라서 topic list를 받아오고, 원하는 Topic을 골라내자.
def select_topic(self):
"""
선택할 topic을 list중에서 골라내 반환.
:return: selected topics.
"""
try:
topics_iter = self.sns_resource.topics.all()
for i, topic in enumerate(topics_iter):
if "선택할 토픽 이름" in topic.arn:
logger.info("Got topics.")
print(topic)
return topic
except ClientError:
logger.exception("Couldn't get topics.")
raise
이제 선택한 topic.publish로 원하는 메시지를 보낼 수 있다!
topic.publish(Message=message, MessageAttributes=att_dict)
결과
전체 코드
참조한 공식 예제 코드
https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/sns/sns_basics.py#L190
'Cloud > AWS' 카테고리의 다른 글
AWS Lambda에서 다른 Lambda 비동기 호출하기(python) (0) | 2023.10.22 |
---|---|
AWS Lambda로 Slack에 메시지 전송하기 (SNS 트리거) (0) | 2023.10.12 |
ECS 태스크 실행 오류 (ECR pull error) (0) | 2023.09.19 |
AWS Solutions Architect Associate (SAA - C03) 대학생 합격 후기 (3) | 2023.09.19 |
EC2에 간단한 Streamlit 웹 서비스 올리기 (+ 동시성) (0) | 2023.07.20 |