2

Mon système de journalisation utilise un flux Kinesis associé à un flux de diffusion Firehose qui écrit dans un compartiment S3. Cela peut être configuré manuellement via la console AWS en définissant l'attribut "Source" du flux de diffusion dans le flux kinésis. Je veux utiliser terraform et capturer cette configuration dans le code.Comment connecter un flux Kinesis avec un flux de diffusion Firehose à l'aide de terraform

Ni aws_kinesis_firehose_delivery_stream ni les ressources terraform aws_kinesis_stream n'ont d'attributs (que je peux trouver) qui définissent l'attribut Source. Je cloné la source de terraform et en regardant à travers et je vois ceci:

createInput := &firehose.CreateDeliveryStreamInput{ 
    DeliveryStreamName: aws.String(sn), 
} 

Ma pensée suivante était de voir si je pouvais modifier le code pour définir l'attribut source. Donc, je regardais à travers l'API AWS Firehose pour trouver le nom d'attribut et je trouve ceci:

DeliveryStreamType

Le type de flux de livraison. Ce paramètre peut être l'une des valeurs suivantes:

DirectPut: Les applications fournisseur accèdent directement au flux de diffusion.

KinesisStreamAsSource: Le flux de diffusion utilise un flux Kinesis en tant que source. Type: Chaîne

Valeurs valides: DirectPut | KinesisStreamAsSource

Étant donné ce que je pensais que je voudrais juste modifier le code terraform pour définir DeliveryStreamType avec la configuration nécessaire, « KinesisStreamSourceConfiguration. » Cependant, je ne trouve aucune référence à DeliveryStreamType dans le code aws sdk présent dans le repo terraform. Je vois cependant DeliveryStreamName.

Est-il possible de connecter des flux de kinesis et de firehose à l'aide de terraform? Si non, est-ce une caractéristique qui est à l'horizon?

Merci d'avance.

Répondre

0

J'ai essayé de mettre en œuvre cette fonctionnalité & ont soulevé un PR here

+0

Impressionnant! J'ai fini par mettre en œuvre moi-même localement, mais si vous avez un PR en attente alors c'est génial. Savez-vous combien de temps cela prend habituellement pour fusionner? Merci pour cela! – CAS

+0

Je ne sais pas, la première fois que j'ai contribué à ce projet – Peter

0

J'ai cloné la dernière version de https://github.com/aws/aws-sdk-go et j'ai confirmé que terraform utilisait simplement une ancienne version de l'API go aws qui ne prend pas en charge DeliveryStreamType. Code Terraform:

type CreateDeliveryStreamInput struct { 
_ struct{} `type:"structure"` 

    // The name of the delivery stream. This name must be unique per AWS account 
    // in the same region. You can have multiple delivery streams with the same 
    // name if they are in different accounts or different regions. 
    // 
    // DeliveryStreamName is a required field 
    DeliveryStreamName *string `min:"1" type:"string" required:"true"` 
    ... 
} 

actuels aws-sdk-go repo:

type CreateDeliveryStreamInput struct { 
_ struct{} `type:"structure"` 

    // The name of the delivery stream. This name must be unique per AWS account 
    // in the same region. If the delivery streams are in different accounts or 
    // different regions, you can have multiple delivery streams with the same name. 
    // 
    // DeliveryStreamName is a required field 
    DeliveryStreamName *string `min:"1" type:"string" required:"true"` 

    // The delivery stream type. This parameter can be one of the following values: 
    // 
    // * DirectPut: Provider applications access the delivery stream directly. 
    // 
    // * KinesisStreamAsSource: The delivery stream uses a Kinesis stream as 
    // a source. 
    DeliveryStreamType *string `type:"string" enum:"DeliveryStreamType"` 
    ... 
    // When a Kinesis stream is used as the source for the delivery stream, a KinesisStreamSourceConfiguration 
    // containing the Kinesis stream ARN and the role ARN for the source stream. 
    KinesisStreamSourceConfiguration *KinesisStreamSourceConfiguration `type:"structure"` 
    ... 
} 

Alors que cela répond à ma question, essentiellement les besoins repo terraform être mis à jour pour utiliser les Aws-sdk-go actuels code.