Cloudformation `StartingPositionTimestamp` для сопоставления источников событий Lambda / Kinesis

Я хочу подключить поток Kinesis к функции Lambda через сопоставление источников событий, хочу установить для StartingPosition значение AT_TIMESTAMP -

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-startingposition

Итак, теперь я хочу установить фактическую отметку времени для этой начальной позиции.

Если я посмотрю на интерфейс командной строки AWS, похоже, для него есть параметр (--starting-position-timestamp) -

aws lambda create-event-source-mapping help
SYNOPSIS
            create-event-source-mapping
          --event-source-arn <value>
          --function-name <value>
          [--enabled | --no-enabled]
          [--batch-size <value>]
          [--starting-position <value>]
          [--starting-position-timestamp <value>]
          [--cli-input-json <value>]
          [--generate-cli-skeleton <value>]

и если я посмотрю на boto3, там будет параметр StartingPositionTimestamp -

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.create_event_source_mapping

response = client.create_event_source_mapping(
    EventSourceArn='string',
    FunctionName='string',
    Enabled=True|False,
    BatchSize=123,
    StartingPosition='TRIM_HORIZON'|'LATEST'|'AT_TIMESTAMP',
    StartingPositionTimestamp=datetime(2015, 1, 1)
)

но я не могу найти такой StartingPositionTimestamp параметр в AWS::Lambda::EventSourceMapping документах -

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html

Итак, как мне установить временную метку начальной позиции Kinesis с помощью Cloudformation?


person Justin    schedule 21.08.2019    source источник
comment
Вопрос в том, почему вы хотите начать с определенной отметки времени? В большинстве случаев достаточно LATEST или TRIM_HORIZON, поскольку Kinesis хранит ваши события только в течение определенного периода (из-за retention period). Кроме того, у меня такое ощущение, что CloudFormation вообще не поддерживает установку StartingPositionTimestamp в этом случае (но у меня нет доказательств этого).   -  person s.hesse    schedule 21.08.2019
comment
хм, ладно, тогда мне нужно узнать больше о TRIM_HORIZON. Но зачем AT_TIMESTAMP, если вы не можете указать временную метку ??   -  person Justin    schedule 21.08.2019


Ответы (1)


Отличный вопрос, и я сам с этим застрял. Не просто «Как мне указать метку времени в шаблоне CloudFormation?», но, очевидно, «Как мне обновить метку времени, которую использует EventSourceMapping?»

На самом деле это не статическое свойство, поэтому оно не поддается CloudFormation.

Я предполагаю, но, возможно, вам следует обновить метку времени как часть вашего процесса. Загрузите приложение, установив временную метку как эпоху, а затем после чтения вашего потока установите для нее временную метку последнего обработанного элемента.

person Kirk Broadhurst    schedule 12.11.2019
comment
Думаю, я только что использовал ПОСЛЕДНИЕ: - / - person Justin; 13.11.2019