我是AWS CloudFormation的新手,我已经使用它将CloudTrail部署到多个帐户而没有问题,但是我尝试使用每个CloudTrail可以使用的一个集中式SNS主题,如果我通过CloudTrail GUI进行编辑,但是我无法使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-东南-1:1111111111:SNSTopic
答案 0 :(得分:0)
解决方案取决于您如何创建集中式SNS。如果使用CF模板创建,则可以将SNS主题的ARN导出为输出。参考CloudFormation Output
在您创建CloudTrail的当前堆栈中,您可以使用导入选项参考SNS主题的ARN。参考Fn::ImportValue。
(或)
如果您已手动创建SNS主题,您仍然可以将SNS的ARN作为Cloud Formation创建堆栈调用的参数传递。参考Parameters。
希望这会有所帮助。
答案 1 :(得分:0)
有多种方法可以将Arn传递给SnsTopicName:
SnsTopicName: !GetAtt MY_SNS_Topic.Arn
SnsTopicName: !Sub "your-full-ARN-of-the-SNS-Topic"
Parameters:
SNSTopic:
Description: SNS Topic Name
Type: String
Default: arn:aws:sns:ap-southeast-1:1111111111:SNSTopic
##########
Properties:
SnsTopicName: !Ref SNSTopic
Filename - configfile.conf
SNSTopic="arn:aws:sns:ap-southeast-1:1111111111:SNSTopic"
AWS Serverless Template
Parameters:
SNSTopic:
Type: String
##########
Properties:
SnsTopicName: !Sub "${SNSTopic}"