2

私はServerlessフレームワークを使用して、S3、Lambda、およびAPI Gatewayを使用してイメージサイズ変更サービスを作成しています。これはコンセプトhereに似ていますが、これはServerlessを使用してスタック全体をセットアップして設定します。他のCloudFormationリソースのserverless.ymlファイル内のAWS API Gatewayのホスト名

今、私はserverless.ymlファイル内で生成されたAPIゲートウェイのホスト名を適切に参照する必要があります。これが私の資源の下にあるものです。それは$を言う(ジャストスニペット)は

imageBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
    BucketName: ${env:IMAGE_BUCKET} 
    WebsiteConfiguration: 
     RoutingRules: 
     - 
      RedirectRule: 
      Hostname: ${HOSTNAME HERE} 
      HttpRedirectCode: 302 
      RoutingRuleCondition: 
      HttpErrorCodeReturnedEquals: 404 

{HOSTNAMEはHERE}私は、サーバレスフレームワークが生成するAPIゲートウェイAPIのホスト名である必要があります。

今私が考えることができる最もよい方法は、どこかにCNAMEエイリアスを作成し、それを自分のAPIの前で使うことです。次に、そのCNAMEを環境変数として渡して、このファイルで参照します。しかしそれは私には理想的ではありません。私は誰かがこのプロジェクトを引き下げ、ちょうどバケット名で実行できるようにしたいと思います。これを達成するためにとにかくありますか?

答えて

3

ホスト名は、輻輳によって直接公開されないため、作成されたリソースの出力値から構築する必要があります。

imageBucket: 
    Type: AWS::S3::Bucket 
    Properties: 
    BucketName: ${env:IMAGE_BUCKET} 
    WebsiteConfiguration: 
     RoutingRules: 
     - 
      RedirectRule: 
      Hostname: 
       Fn::Join: 
       - "" 
       - - Ref: ApiGatewayRestApi 
        - ".execute-api." 
        - Ref: AWS::Region 
        - ".amazonaws.com" 
      HttpRedirectCode: 302 
      RoutingRuleCondition: 
      HttpErrorCodeReturnedEquals: 404 
:次の文を通して、あなたのホスト名を作成することができ、この情報を AWS - Resources

:サーバレスフレームワークの すべてのリソースは、特定の命名規則に従ってください

関連する問題