프로필사진

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

 

AWS 자격 증명 사용 - AWS Tools for PowerShell

AWS 자격 증명 사용 각 AWS Tools for PowerShell 명령은 AWS 자격 증명 세트를 포함해야 합니다. 이러한 자격 증명 세트는 해당하는 웹 서비스 요청을 암호로 서명하는 데 사용됩니다. 명령별로, 세션별

docs.aws.amazon.com

 

 

본인은 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

 

 

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함