교차 계정 Amazon EC2 인스턴스에서 IAM EC2 역할을 사용하여 Amazon SNS 주제에 게시하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 7월 20일

교차 계정 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 Amazon Simple Notification Service(Amazon SNS) 주제에 게시하고 싶습니다. 그리고 퍼블릭 서브넷을 사용하는 EC2 인스턴스에 대한 AWS Identity and Access Management(IAM) 역할을 통해 이 작업을 수행하려고 합니다.

해결 방법

참고: AWS Command Line Interface (AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

EC2 인스턴스로 계정 구성

1.    SNS 주제에 게시할 권한이 있는 IAM 정책을 생성합니다. 예를 들면 다음과 같습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid":
    "VisualEditor0",
            "Effect": "Allow",
            "Action": "sns:Publish",
           
    "Resource": "arn:aws:sns:us-east-2:123456789012:cross-account-ec2-sns"
        }
    ]
}

2.    EC2 인스턴스에 대한 IAM 역할을 생성합니다. 예: cross-acc-ec2-sns-publish-role. 그런 다음 IAM 역할에 정책을 연결합니다.

3.    인터넷 액세스가 가능한 퍼블릭 서브넷에서 EC2 인스턴스를 생성합니다.

EC2 인스턴스에 새 IAM 역할 연결

EC2 인스턴스가 실행 중인지 확인한 후 다음 단계를 수행합니다.

1.    Amazon EC2 콘솔을 엽니다.

2.    탐색 창에서 [인스턴스(Instances)]를 선택합니다.

3.    인스턴스(cross-acc-ec2-sns-publish-role)를 선택한 다음 [작업(Actions)], [보안(Security)], [IAM 역할 수정(Modify IAM role)]을 차례로 선택합니다.

4.    이전에 생성한 IAM 역할을 선택하여 인스턴스에 연결한 다음 [저장(Save)]을 선택합니다.

참고: EC2 인스턴스에서 인터넷 게이트웨이를 사용하여 인터넷에 연결할 수 없는 경우 인터넷 게이트웨이를 사용하여 내Amazon EC2 인스턴스를 인터넷에 연결할 수 없는 이유는 무엇입니까?를 참조하세요.

SNS 주제로 계정 구성

1.    다음과 유사한 이름의 SNS 주제를 생성합니다. cross-account-ec2-sns

2.    엔드포인트에서 사용 사례에 따른 주제를 구독한 다음 구독을 확인합니다.

3.    SNS 주제의 액세스 정책에 권한을 추가합니다. 이 권한은 EC2 IAM 역할로 Amazon SNS에 대한 Publish API 작업을 수행하는 것을 허용해야 합니다.

SNS 주제 액세스 정책을 편집하고 권한을 추가하려면 다음을 수행합니다.

1.    Amazon SNS 콘솔을 엽니다.

2.    탐색 창에서 [주제(Topics)] 를 선택한 다음 게시할 SNS 주제를 선택합니다.

3.    [액세스 정책(Access policy)] 탭을 선택합니다.

4.    주제 페이지의 [세부 정보(Details)] 섹션에서 [편집(Edit)]을 선택합니다.

5.    [액세스 정책(Access policy)] 섹션을 확장한 다음 EC2 인스턴스의 IAM 역할(cross-acc-ec2-sns-publish-role)로 SNS 주제에 게시하는 것을 허용하는 권한을 추가합니다. 예를 들면 다음과 같습니다.

{
  "Sid": "grant-65864586-publish",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::111122223333:role/cross-acc-ec2-sns-publish-role"
    ]
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:us-east-2:123456789012:cross-account-ec2-sns"
}

6.    [변경 사항 저장(Save changes)]을 선택합니다.

EC2 인스턴스에서 알림을 게시하여 구성을 테스트합니다.

1.    EC2 인스턴스로 계정에 로그인한 다음, EC2 인스턴스에 연결합니다. Windows 인스턴스의 경우, Windows 인스턴스에 연결을 참조하십시오. Linux 인스턴스의 경우, Linux 인스턴스에 연결을 참조하십시오.

2.    EC2 터미널에서 Amazon SNS Publish 명령을 실행한 다음 응답을 모니터링합니다. 예를 들어 AWS CLI에서 다음과 유사한 테스트 쿼리를 사용할 수 있습니다.

aws sns publish  --topic-arn "arn:aws:sns:us-east-2:123456789012:cross-account-ec2-sns"
    --message "test" --region us-east-2
{
    "MessageId": "c72e7c2f-f95a-5c57-97c5-25448b2a7e71"
}

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?