6

説明: サーバーレス API リソースを定義しようとしています。しかし、関数ImportValueを使用してswagger仕様ファイルの場所を定義するのに問題があります。

問題を再現する手順: Location にAWS::Serverless::Apiネストされた関数を持つリソースを 定義できません。ImportValue私は次の3つの方法を試しましたが、どれもうまくいきません。

注: スタック パラメータは適切に定義されており、他のスタックからのエクスポート値が存在します。簡潔にするため、ここではそれらを示していません。

ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
        Name: !Sub ${AWS::StackName}-API
        StageName: !Ref ApiGatewayStageName
        DefinitionBody:
          'Fn::Transform':
            Name: 'AWS::Include'
            Parameters:
              Location:
                Fn::Sub:
                - s3://${BucketName}/${SwaggerSpecificationS3Key}
                - BucketName:
                    Fn::ImportValue:
                      !Sub "${EnvironmentName}-dist-bucket-${AWS::Region}" 



ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
        Name: !Sub ${AWS::StackName}-API
        StageName: !Ref ApiGatewayStageName
        DefinitionBody:
          'Fn::Transform':
            Name: 'AWS::Include'
            Parameters:
              Location:
                Fn::Sub:
                - s3://${BucketName}/${SwaggerSpecificationS3Key}
                - BucketName:
                    !ImportValue 'dev-dist-bucket-us-east-1' 



ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
        Name: !Sub ${AWS::StackName}-API
        StageName: !Ref ApiGatewayStageName
        DefinitionBody:
          'Fn::Transform':
            Name: 'AWS::Include'
            Parameters:
              Location:
                Fn::Sub:
                - s3://${BucketName}/${SwaggerSpecificationS3Key}
                - BucketName:
                    Fn::ImportValue: 'dev-dist-bucket-us-east-1' 

Cloudformation は次のエラーを表示します。

失敗 - トランスフォーム インクルードの下のパラメーター Location の値は、文字列、数値、ブール値、またはこれらのいずれかのリストに解決される必要があります。

ただし、使用しない場合はImportValue、ネストされたFn::Sub

ApiGatewayApi:
    Type: AWS::Serverless::Api
    Properties:
        Name: !Sub ${AWS::StackName}-API
        StageName: !Ref ApiGatewayStageName
        DefinitionBody:
          'Fn::Transform':
            Name: 'AWS::Include'
            Parameters:
              Location:
                Fn::Sub:
                - s3://${BucketName}/${SwaggerSpecificationS3Key}
                - BucketName:
                    Fn::Sub: dist-bucket-${EnvironmentName}-${AWS::Region}

Fn::Transform または AWS::Include が原因ですか?

4

0 に答える 0