Условие Cloudformation для параметра в политике ролей

#amazon-web-services #yaml #amazon-cloudformation

#amazon-web-services #yaml #aws-cloudformation

Вопрос:

Я создаю роль iam и ее управляемую политику. В управляемой политике я хочу разрешить доступ к вызову API (шлюза). Этот шаблон будет выполняться как минимум в 6 средах. Я хочу использовать подход, основанный на условиях, для назначения URL-адреса шлюза API в ресурсе, чтобы шаблон было легко поддерживать и выполнять.

В зависимости от типа среды URL API будет меняться.

 AWSTemplateFormatVersion: 2010-09-09
Description: >-
  This template creates Role and policy
Parameters:
  envname:
    Type: String
    Description: Enter envname
    AllowedValues: 
      - dev
      - dev2
      - sit
      - uat
      - prf
      - prod
  prodaccountid:
    Type: String
    Description: Enter Prod AccountID
Resources:
  DeviceRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: 'DeviceRole'
      MaxSessionDuration : 43200
      AssumeRolePolicyDocument:
        Version: 2012-10-17
        Statement:
          - Effect: Allow
            Principal:
              AWS: !Join ["",[!Sub 'arn:aws:iam::${AWS::AccountId}:role/',!Ref envname,'_Role']]
              Service: lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'
          - Effect: Allow
            Principal:
              AWS: !Sub 'arn:aws:iam::${AWS::AccountId}:user/test-user'
              Service: lambda.amazonaws.com
            Action:
              - 'sts:AssumeRole'              
  DevicePolicy:
    Type: 'AWS::IAM::ManagedPolicy'
    Properties:
      Description: >-
        This Policy will be attached to the device role
      ManagedPolicyName: !Join
                      - ''
                      - - 'DeviceConnectPolicy'                        
      PolicyDocument:
        Version: 2012-10-17
        Statement:          
          - Effect: Allow
            Action: 'execute-api:Invoke'
            **Resource:
              - !Join ["", [!Sub 'arn:aws:execute-api:${AWS::Region}:',!Ref prodaccountid,':aaaaaaaaaa/Test/PUT']]
              - !Join ["", [!Sub 'arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:bbbbbbbbbb/*/PUT/*/*/*/v2']]
              - !Join ["", [!Sub 'arn:aws:execute-api:${AWS::Region}:',!Ref prodaccountid,':cccccccccc/*/PUT/v2/s']]
              - !Join ["", [!Sub 'arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:dddddddddd/*/PUT/*/*/*/v2']]**
       Roles:
        - Ref: DeviceRole
  

Я хочу использовать условия в ресурсе.

Заранее спасибо

Комментарии:

1. Не могли бы вы отформатировать свой код?

2. Форматированный, пожалуйста, посмотрите

3. какое условие вы хотите использовать? Можете ли вы это объяснить?

4. Привет. Я заметил, что у вас есть ряд вопросов, и на большинство из них есть ответы. Однако вы не приняли ни одно из них. Хорошей практикой является принятие хороших ответов, поскольку это помогает другим с такими же / похожими проблемами. Если полезные ответы не принимаются, это побуждает людей задавать повторяющиеся вопросы, исходя из ложного предположения, что существующие ответы на ваши вопросы бесполезны.