기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 사용자 지정 이벤트 버스 리소스 생성 CloudFormation
템플릿에서 CloudFormation 버스, 구독자, 이벤트 소스 및 리소스 정책을 생성할 수 있습니다. 리소스 유형은 AWS::EventsV2 네임스페이스에 있습니다. AWS::Events 유형은 사용자 지정 이벤트 버스 - Classic에 속하며 사용자 지정 이벤트 버스를 구성할 수 없습니다.
리소스 유형
-
AWS::EventsV2::EventBus는 보존 기간과 암호화 키를 포함한 하나의 버스입니다. 가 필요합니다Name. -
AWS::EventsV2::Subscriber는 버스의 구독자 한 명입니다. 즉, 필터, 변환, 재시도 정책 및 단일 대상입니다.Name,EventBusArn및가 필요하며InvokeConfiguration, 자체적으로TargetArn및가 필요합니다RoleArn. -
AWS::EventsV2::EventSource는 버스에 대한 AWS 서비스 이벤트 또는 파트너 이벤트의 관리형 피드입니다.Name,EventBusArn및가 필요합니다Configuration. 사용자 지정 이벤트 버스의 이벤트 소스 섹션을 참조하세요. -
AWS::EventsV2::ResourcePolicy는 이미 존재하는 버스의 리소스 정책입니다. 여기에는EventBusArn및가 필요합니다PolicyDocument. 사용자 지정 이벤트 버스에 대한 액세스 제어 섹션을 참조하세요.
구독자의는 구독자와 동일한 계정의 역할 이름을 지정RoleArn해야 합니다. 따라서 계정 간에 공유되는 버스는 소유자 계정의 버스와 각 소비 계정의 대상, 전송 역할 및 구독자 등 두 개 이상의 스택입니다.
예: 버스, 대기열 및 구독자
다음 템플릿은 이벤트를 7일 동안 보관하는 버스, Amazon SQS 대기열, 배달 못한 편지 대기열, 배달 역할 및 500개 이상의 주문을 대기열에 전달하는 구독자를 생성합니다. 구독자가 로 참조하기 때문에는 구독자 앞에 역할과 대기열을 CloudFormation 생성합니다Fn::GetAtt. 보존 기간은 구독자가 읽기를 시작할 수 있는 거리를 결정합니다. 섹션을 참조하세요구독자에게 보관된 이벤트 재생.
AWSTemplateFormatVersion: '2010-09-09' Resources: OrdersBus: Type: AWS::EventsV2::EventBus Properties: Name: orders Description: Order events for the fulfillment platform StorageConfiguration: RetentionPeriodInDays: 7 OrdersQueue: Type: AWS::SQS::Queue Properties: QueueName: large-orders OrdersDeadLetterQueue: Type: AWS::SQS::Queue Properties: QueueName: large-orders-dlq DeliveryRole: Type: AWS::IAM::Role Properties: RoleName: EventBusDeliveryRole AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: events.amazonaws.com Action: sts:AssumeRole Policies: - PolicyName: DeliverToQueues PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: sqs:SendMessage Resource: - !GetAtt OrdersQueue.Arn - !GetAtt OrdersDeadLetterQueue.Arn LargeOrders: Type: AWS::EventsV2::Subscriber Properties: Name: large-orders EventBusArn: !Ref OrdersBus FilterConfiguration: Filters: - Scope: DATA Pattern: '{"detail":{"total":[{"numeric":[">",500]}]}}' InvokeConfiguration: TargetArn: !GetAtt OrdersQueue.Arn RoleArn: !GetAtt DeliveryRole.Arn RetryPolicy: MaxRetryAttempts: 10 MaxEventAgeInSeconds: 3600 OnFailureConfiguration: Arn: !GetAtt OrdersDeadLetterQueue.Arn Outputs: OrdersBusArn: Value: !Ref OrdersBus Export: Name: orders-bus-arn
전송 역할은 events.amazonaws.com 서비스 보안 주체를 신뢰하고 두 대기열 sqs:SendMessage 모두에 권한을 부여합니다. 배달 못한 편지 대기열에 대한 권한 부여가 없으면 전송 실패를 기록할 수 없으며 아무것도 관찰할 수 없습니다. 스택을 배포하는 자격 증명은 iam:PassRole 전송 역할에도 필요합니다.
반환 값
Ref는 리소스의 기본 식별자인 ARN을 반환합니다.는 읽기 전용 속성을 Fn::GetAtt 반환합니다. 다음 표에는 각 리소스 유형의 값이 나열되어 있습니다.
| 리소스 유형 | Ref 반환 |
Fn::GetAtt 속성 |
|---|---|---|
AWS::EventsV2::EventBus |
EventBusArn |
EventBusArn, State, CreationTime,
LastModifiedTime |
AWS::EventsV2::Subscriber |
SubscriberArn |
SubscriberArn, BusName, CreationTime,
LastModifiedTime |
AWS::EventsV2::EventSource |
EventSourceArn |
EventSourceArn, State, Revoked,
CreationTime, LastModifiedTime |
AWS::EventsV2::ResourcePolicy |
EventBusArn |
RevisionId |
구독자의 State는 읽은 속성이 아니라 설정한 속성입니다. 전송을 일시 중지STOPPED하려면 로 설정하고 다시 재개RUNNING하려면 로 설정합니다. 버스State는 읽기 전용이며 정해진 값은 입니다ACTIVE.
리소스를 대체하는 속성
6개의 구독자 속성은 생성 전용이므로 템플릿에서 이러한 속성을 변경하면 구독자가 Name, EventBusArn, InvokeConfiguration.TargetArn, Type, 및 StartingPosition로 바뀝니다PointInTimeConfiguration. 필터, 변환, 재시도 정책, 배달 못한 편지 대기열을 포함한 다른 모든 구독자 속성은 그대로 업데이트됩니다.
중요
구독자 교체는 새 구독자를 생성하기 전에 이전 구독자를 삭제합니다. 두 단계 사이에 구독자가 없습니다. 그러면 새 구독자는 자체에서 시작하여 최신 이벤트에서 StartingPosition LATEST 시작하므로 해당 기간 동안 게시된 이벤트를 전달하지 않습니다. 따라서 공백을 계획하지 않는 한 대상 ARN, 순서 유형 또는 시작 위치를 변경하면 이벤트가 삭제됩니다.
격차를 방지하려면를 두 번 배포합니다. 먼저 새 논리적 ID에 대체 구독자를 추가하고이 State에 도달할 때까지 기다립니다RUNNING. 그런 다음 두 번째 배포에서 이전 구독자를 제거합니다. 두 구독자 모두 겹치는 동안를 전송하므로 대상은 일치하는 각 이벤트를 두 번 수신합니다. 중복이 허용되는 경우에만이 접근 방식을 사용합니다.
두 번 배포할 수 없는 경우 새 구독자의를 StartingPosition 로 설정하고 배포 전에 Unix epoch 이후 몇 초 StartingPoint만에를 PointInTimeConfiguration PointType TIMESTAMP 사용하여의를 POINT_IN_TIME 제공합니다. 그런 다음 버스의 보존 기간 내에 있는 경우 구독자는 놓친 이벤트를 읽습니다.
버스에서는 Name만 생성 전용이므로 보존 기간, 설명, 암호화 키 및 태그가 모두 업데이트됩니다. 이벤트 소스 Name 및 EventBusArn는 생성 전용이고 리소스 정책은 EventBusArn입니다.
다른 스택의 버스 참조
구독자에게는 버스 이름 뒤에 서비스 생성 식별자가 포함된 전체 버스 ARN이 필요합니다. 이름이 아닌 ARN을 저장하고 전달합니다. 사용자 지정 이벤트 버스에 대한 이름, 엔드포인트 및 IAM 권한 섹션을 참조하세요.
한 계정 및 리전 내에서 예제와 같이 버스를 소유한 스택에서 ARN을 내보내고 로 가져옵니다EventBusArn: !ImportValue orders-bus-arn. 다른 스택에서 가져오는 동안 내보낸 값을 변경하거나 제거할 수 CloudFormation 없습니다. 버스 이름을 바꾸면 버스가 교체되고 ARN이 변경되므로 가져오기가 있는 동안 이름 변경에 실패합니다. 먼저 가져오기 구독자를 제거하거나 새 이름으로 내보냅니다.
다른 계정 또는 다른 리전에서 내보내기를 가져올 수 없습니다. 대신 버스 ARN을 소비 스택에 템플릿 파라미터로 전달합니다. 또한 버스 소유자는 리소스 정책 또는 AWS Resource Access Manager()를 사용하여 버스에 대한 다른 계정 권한을 부여해야 합니다AWS RAM. 사용자 지정 이벤트 버스에 대한 액세스 제어 섹션을 참조하세요.