【问题标题】:Using AWS Cloudformation to configure CloudTrail with SNS Topic使用 AWS Cloudformation 配置具有 SNS 主题的 CloudTrail
【发布时间】:2018-11-01 19:46:31
【问题描述】:

我是 AWS CloudFormation 的新手,我使用它来将 CloudTrail 部署到多个账户没有问题,但是我正在尝试使用一个集中式 SNS 主题,如果我通过 CloudTrail GUI 进行编辑,每个 CloudTrail 都可以使用它可以工作,但我无法让 CloudFormation 工作。

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Centralised CloudTrail
Resources: 
  CloudTrail:
Type: "AWS::CloudTrail::Trail"
Properties:
  EnableLogFileValidation: 'false'
  IncludeGlobalServiceEvents: 'true'
  IsLogging: 'true'
  IsMultiRegionTrail: 'true'
  S3BucketName: company-cloudtrail-au
  TrailName: Trail1
  SnsTopicName: SNSTopic

我正在尝试将 ARN 用于 SNS 主题(以下示例),但我不知道如何告诉 CloudFormation 使用 ARN 而不是名称,如果我只是输入名称,那么它会创建一个每个子帐户中的新 SNS 主题。

如果我在部署 CloudFormation 后转到 GUI,我可以将其指向正确的 ARN,它是集中式的,但并不理想,如果 SNS 不打算跨帐户共享,或者是否有更好的方法,请告诉我方法来做到这一点。

SNS 主题的示例 ARN - arn:aws:sns:ap-southeast-1:1111111111:SNSTopic

【问题讨论】:

  • 您是否通过 AWS Organizations 了解过 CloudTrail 支持?如果您的所有账户都在 AWS 组织下,那么您可以在主账户中创建一个组织跟踪,它将自动传播(包括 SNS、S3 和 CWL 配置)到所有成员账户。

标签: amazon-cloudformation


【解决方案1】:

解决方案取决于您如何创建集中式 SNS。如果使用 CF 模板创建,您可以将 SNS 主题的 ARN 导出为输出。参考CloudFormation Output

在您创建 CloudTrail 的当前堆栈中,您可以使用导入选项引用 SNS 主题的 ARN。参考Fn::ImportValue

(或)

如果您手动创建了 SNS 主题,您仍然可以将 SNS 的 ARN 作为参数传递给 Cloud Formation 创建堆栈调用。参考Parameters

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    有多种方法可以将 Arn 传递给 SnsTopicName:

    1. 如果您已在模板本身中将 SNS 主题创建为 - 类型:AWS::SNS::Topic ,那么您可以将 SNS 主题的 ARN 引用为
    SnsTopicName: !GetAtt MY_SNS_Topic.Arn
    
    1. 如果您已经在控制台中手动创建了 SNS 主题,那么您可以将 Arn 指定为
    SnsTopicName: !Sub "your-full-ARN-of-the-SNS-Topic"
    
    1. 您可以从参数中传递 ARN,默认值为:value(arn)
    Parameters:
     SNSTopic:
       Description: SNS Topic Name
       Type: String
       Default: arn:aws:sns:ap-southeast-1:1111111111:SNSTopic
    
    ##########
    Properties:
     SnsTopicName: !Ref SNSTopic
    
    1. 您可以在单独的配置文件中定义 ARN,并将其作为参数与模板的部署函数一起传递,或者在调用脚本部署模板时传递
    Filename - configfile.conf
    SNSTopic="arn:aws:sns:ap-southeast-1:1111111111:SNSTopic"
    
    AWS Serverless Template
    Parameters:
     SNSTopic:
       Type: String
    ##########
    Properties:
     SnsTopicName: !Sub "${SNSTopic}"
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2022-10-13
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2016-03-23
      相关资源
      最近更新 更多