Nano Hash - криптовалюты, майнинг, программирование

Как ссылаться на вторичные индексы в serverless.yml?

Мне очень непонятно, как ссылки или переменные работают с CloudFormation.

В настоящее время мой iAmRole в моем serverless.yml выглядит так:

  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:DescribeTable
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      # Restrict our IAM role permissions to
      # the specific table for the stage
      Resource:
        - "Fn::GetAtt": [ ReportsTable, Arn ]

ReportsTable - это таблица, созданная в другом файле, которая выглядит так:

Resources:
  ReportsTable:
    Type: AWS::DynamoDB::Table
    Properties:
    ...
    LocalSecondaryIndexes:
        - IndexName: typeId-accessToken-index
          KeySchema:
          - AttributeName: typeId
            KeyType: HASH
            ...etc

Я понимаю, что второе значение в массиве Fn :: GetAtt ссылается на имя атрибута, но я не понимаю, откуда берется Arn. Это похоже на переменную, но она нигде не определена.

В конечном итоге мне нужно добавить еще один блок Effect, Action, Resource, ссылающийся на созданный мной локальный вторичный индекс, но я не знаю, с чего начать.

Изменить: похоже, что Arn исходит из возвращаемых значений таблиц DynamoDB (https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)

Edit2: Хорошо, теперь у меня есть формат arn:aws:dynamodb:region:account-id:table/table-name/index/* из справочные документы по разрешениям, сейчас тестируем.


  • arn: aws: Dynamodb: region: account-id: table / table-name / index / * - правильная ссылка. Теперь мне нужно выяснить, как динамически ссылаться на имя таблицы, как это сделано выше. И, возможно, как ссылаться на идентификатор моей учетной записи и регион без жесткого кодирования. 01.08.2019

Ответы:


1

Вы можете использовать встроенную функцию Cloudformation Sub создать индекс arn

!Sub '${ReportsTable.Arn}/index/*'
01.08.2019

2

После обращения к этим документам: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)

и эти: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/api-permissions-reference.html.

Мне удалось выяснить, что для ссылки на индексную таблицу требуется формат arn:aws:dynamodb:region:account-id:table/table-name/index/*.

Кроме того, чтобы не кодировать все значения в жестком коде (в моем случае, потому что у меня несколько промежуточных сред), вы можете выполнить соединение следующим образом:

        Fn::Join:
          - ''
          -
            - 'arn:aws:dynamodb:'
            - Ref: AWS::Region
            - ':'
            - Ref: AWS::AccountId
            - ':table/'
            - ${self:custom.tableName}/
            - 'index/*'

Где имя таблицы определено в вашем настраиваемом блоке.

01.08.2019
  • К вашему сведению, если вы не выполняете манипуляции с компонентами Join или не импортируете их, вы обычно можете использовать Sub вместо Join, что упрощает чтение: !Sub arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${self:custom.tableName}/index/* 01.08.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..