2

我的日誌記錄系統使用連接到寫入S3存儲桶的流水傳輸流的kinesis流。可以通過AWS控制檯手動配置firehose流的「Source」屬性爲kinesis流。我想使用terraform並在代碼中捕獲此設置。如何使用terraform將kinesis流與流水傳輸流連接

aws_kinesis_firehose_delivery_stream和aws_kinesis_stream terraform資源都沒有屬性(我可以找到)設置Source屬性的屬性。我克隆terraform源,並通過它看,我看到:

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

我的下一個想法是,看看我是否可以編輯代碼設置源屬性。所以,我看着通過AWS API流水找到屬性名稱,我發現這一點:

DeliveryStreamType

交付流類型。此參數可以是以下值之一:

DirectPut:提供商應用程序直接訪問傳送流。

KinesisStreamAsSource:傳送流使用Kinesis流作爲源。 類型:字符串

有效值:DirectPut | KinesisStreamAsSource

鑑於此,我想我只是編輯terraform代碼來設置DeliveryStreamType與必要的配置,「KinesisStreamSourceConfiguration。」。無論如何,我在terraform repo中找不到對aws sdk代碼中的DeliveryStreamType的引用。但是我看到了DeliveryStreamName。

是否可以使用terraform連接kinesis和firehose流?如果不是,這是一個即將到來的功能嗎?

在此先感謝。

回答

0

我已經嘗試實現這個功能&都提出了PR here

+0

真棒!我最終在本地實施了這項工作,但如果你已經有一個公關待決,那麼這很棒。你知道這種事情通常需要多長時間才能合併?感謝你! – CAS

+0

不確定,我第一次參與這個項目 – Peter

0

我克隆了最新的https://github.com/aws/aws-sdk-go,並確認terraform只是使用不支持DeliveryStreamType的go aws API的舊版本。 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"` 
    ... 
} 

當前AWS-SDK-去回購:

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"` 
    ... 
} 

所以這個回答我的問題,基本上terraform回購需要更新使用當前AWS-SDK運行的代碼。