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

Использование существующей роли в шаблоне CloudFormation

Я пытаюсь использовать существующую роль IAM в шаблоне CFN, который уже используется другими службами.

Определение Resource выглядит так:

MyInstanceProfile:
  Type: "AWS::IAM::InstanceProfile"
  Properties: 
    Path: "/"
    Roles: ["Capras999"]

И я ссылаюсь на это так:

LambdaFunction:
  Type: AWS::Lambda::Function
  Properties:
    Role: !Ref MyInstanceProfile

Однако я получаю эту ошибку:

1 validation error detected: Value 'capras-cluster-Prsr-DL-with-params-MyInstanceProfile-1R68JNUXU0SAA' at 'role' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+ (Service: AWSLambdaInternal; Status Code: 400; Error Code: ValidationException; Request ID: 5f75a56d-8ce4-473e-924e-626a5d3aab0a)

Что я делаю неправильно? Помогите, пожалуйста.


Ответы:


1

Для лямбда-функции вам нужно role, а не instance-profile.

Решением было скопировать и вставить в шаблон существующий ARN роли. Другой вариант - передать его с помощью параметра .

p.s.

Как правило, вам необходимо определить AWS :: IAM :: Роль с политикой использования лямбды. Например:

  LambdaExecutionRole:
    Type: AWS::IAM::Role
    Properties:
        RoleName: my-lambda-execution-role
        AssumeRolePolicyDocument:
          Version: '2012-10-17'               
          Statement:
            - Effect: Allow
              Principal: {'Service': ['lambda.amazonaws.com']}
              Action: ['sts:AssumeRole']
        ManagedPolicyArns:
          - arn:aws:iam::aws:policy/AWSLambdaExecute

Тогда для вашей функции вы должны:

LambdaFunction:
  Type: AWS::Lambda::Function
  Properties:
    Role: !GetAtt LambdaExecutionRole.Arn
11.06.2020
  • не могли бы вы показать мне, как это сделать для существующей роли? 11.06.2020
  • @RedBottle Эта роль была определена специально для лямбда-функции? Вы не можете использовать роль из экземпляра. 11.06.2020
  • @RedBottle Это определено в том же или другом шаблоне? 11.06.2020
  • @RedBottle И вы не можете использовать его arn и просто вставить его в свой шаблон или передать его с помощью параметра cfn? 11.06.2020
  • Хорошо, попробуй. 11.06.2020
  • Это сработало, вставив его напрямую. Facepalm Спасибо. Если можно, укажите это вместо ответа. Позволь мне принять это 11.06.2020

  • 2

    Вы указываете имя экземпляра в качестве значения, вместо этого этот параметр должен быть Arn рассматриваемой роли IAM.

    Судя по вашему вопросу, вы пытаетесь прикрепить профиль экземпляра к своей Lambda, это только для экземпляров EC2. Вместо этого вам нужен Арн самой роли.

    Из консоли вы можете получить роль Arn для IAM Capras999.

    Если вы используете существующую роль, обязательно обновите свою AssumeRolePolicy, включив также lambda.amazonaws.comlambdaedge.amazonaws.com, если вы используете его для Lambda @ Edge).

    11.06.2020
  • не могли бы вы показать мне, как это сделать для существующей роли? 11.06.2020
  • Если вы хотите использовать существующую роль IAM, вы можете указать в своем шаблоне параметр CloudFormation: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/. Указав его в своем шаблоне, вы можете ссылаться на него, используя встроенную функцию Ref 11.06.2020
  • Новые материалы

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

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

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

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

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

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

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