Ссылка на n-й элемент последовательности YAML в serverless.yml - PullRequest
0 голосов
/ 10 июня 2019

Я создаю GraphQL Serverless API с помощью serverless-graphql .

Я создал serverless.yml, чтобы попытаться использовать несколько API-интерфейсов GraphQL, которые используют разные роли поставщика услуг.Я хочу получить вторую ссылку в последовательности, чтобы имя ссылалось на роль

, например, "$ {self: custom.appSync [1] .serviceRole}" \

Но при развертывании API появляется ошибка:

An error occurred: AuthenticatedAppSyncServiceRole - The specified value for roleName is invalid. It must contain only alphanumeric characters and/or the following: +=,.@_- (Service: AmazonIdentityManagement; Status Code: 400; Error Code: ValidationError; Request ID: 6b209659-8afc-11e9-aca7-1b89a9ac9c40).

serverless.yml


  appSync:
    - name: API_ONE
      authenticationType: API_KEY
      mappingTemplates:
        - ...
      schema: schema_one.graphql
      serviceRole: AuthenticatedAppSyncServiceRole
      dataSources:
        - type: AWS_LAMBDA
          name: awsLambdaDataSource
          description: "Lambda DataSource"
          config:
            lambdaFunctionArn: { Fn::GetAtt: [GraphqlLambdaFunction, Arn] }
            serviceRoleArn:
              { Fn::GetAtt: [AuthenticatedAppSyncServiceRole, Arn] }
    - name: API_TWO
      authenticationType: API_KEY
      mappingTemplates:
        - ...
      schema: schema_two.graphql
      serviceRole: PublicAppSyncServiceRole
      dataSources:
        - type: AWS_LAMBDA
          name: awsLambdaDataSource
          description: "Lambda DataSource"
          config:
            lambdaFunctionArn: { Fn::GetAtt: [GraphqlLambdaFunction, Arn] }
            serviceRoleArn:
              { Fn::GetAtt: [PublicAppSyncServiceRole, Arn] }

resources:
  Resources:
    AuthenticatedAppSyncServiceRole:
      Type: "AWS::IAM::Role"
      Properties:
        RoleName: "Lambda-${self:custom.appSync[0].serviceRole}"
...
    PublicAppSyncServiceRole:
      Type: "AWS::IAM::Role"
      Properties:
        RoleName: "Lambda-${self:custom.appSync[1].serviceRole}"
...