in infra/stack/data/data-pipeline-stack.ts [99:125]
private createIoTRuleToFirehose(ruleNameSuffix: string, streamName: string) {
const ruleName = `${this.projectPrefix}_${ruleNameSuffix}`.toLowerCase().replace('-', '_');
const sql = `SELECT * FROM '#'`; // $aws/rules/rule_name/thing-name/data-type
const role = new iam.Role(this, `${ruleNameSuffix}Role`, {
roleName: `${this.projectPrefix}-${ruleNameSuffix}Role`,
assumedBy: new iam.ServicePrincipal('iot.amazonaws.com'),
});
role.addToPolicy(
new iam.PolicyStatement({
resources: ['*'],
actions: [
'firehose:*'
]
})
);
new iot.CfnTopicRule(this, ruleNameSuffix, {
ruleName: ruleName,
topicRulePayload: {
ruleDisabled: false,
sql: sql,
awsIotSqlVersion: '2016-03-23',
actions: [{ firehose: { deliveryStreamName: streamName, roleArn: role.roleArn } }],
}
});
}