2017-12-02 10 views
0

私はZappaを使ってFlaskアプリを導入しています。それは動作します(site)。明らかに、私はそれをawsドメインの後ろにつけて、私の個人的なドメインに置いてはいけません。AWSラムダサイトをプライベートドメインに移動することはできますか?

私が探しているものはすべて、ラムダサイト S3とAPI Gatewayをホストしていることを話し続けています。私の小さなアプリをカスタムドメインに展開する方法はありませんか?

編集

は、@ mislavの答えの後、私はAWSでの作業私のGoogleドメインを取得することができました。私はzappa certifyを実行して仕上げるしようとすると、しかし、私は、既存のドメインに関するエラーが表示されます。

レイズerror_class(parsed_response、operation_name_Input_operation_parameter_nameここで、operation_name) botocore.errorfactory.BadRequestException:CreateDomainName操作を呼び出すときにエラーが (BadRequestException)が発生しまし:指定した ドメイン名は既に存在します。マイzappa_settings.json

は私が私のドメイン側の回旋何かをやっていると思うし始めています

{ 
"dev": { 
    "app_function": "ping_app.app", 
    "aws_region": "us-west-1", 
    "profile_name": "Breuds", 
    "project_name": "breuds", 
    "runtime": "python3.6", 
    "s3_bucket": "zappa-ping-redshift", 
    "slim_handler": true, 
    "certificate_arn": "arn:aws:acm:us-east-1:010174774769:certificate/3a92c204-5788-42fc-bc65-74aaae8c1b3f", 
    "domain": "breuds.com" 
} 
} 

です。私はGoogleドメインを使用しています(電子メール用のカスタムドメインを使用しているので、それを使用しています)が、AWSに話そうとすると頭痛を引き起こすようです。

+0

静的コンテンツとクライアントサイドjavasriptしかない場合は、S3でホストし、ルート53を使用してドメインを設定できます。バックエンドlogiあなたはAPIゲートウェイを使用する必要がありますか? – Yan

+0

なぜ私はAPIゲートウェイが必要なのか混乱していると思います。私は既にURLにヒットしていませんか? – ScottieB

+0

ラムダ関数はHTTP要求に直接応答できません。そのため、HTTPトラフィックを適切に処理するにはAPIゲートウェイが必要です。 – Edgar

答えて

0

APIゲートウェイが必要ない場合があります。サイトの機能に依存します。 S3をカスタムドメインで使用して静的なWebサイトをホストすることができます。クライアントサイドのJavaScript(角度/反応など)を含めることができます.API Gatewayは実際にHTTPリクエストを処理し、定義されたリソース(ラムダなど)に渡すためのものです。

サイトにバックエンド機能が必要な場合は、いくつかのオプションがあります。
1)ラムダ関数を作成し、APIゲートウェイ(REST API)を使用してこれらの関数と対話します。
yourhostname.com - > S3 - > API Gateway(aws hostname) - > lambda

2)AWS JS SDKを使用してラムダ関数と直接対話します。
yourhostname.com - > S3 - > AWS SDK - >ラムダ

3)その後、使用API​​ゲートウェイとyourhostname.com EC2インスタンスを
を用いてラムダまたは自己ホストされたウェブサーバ(フラスコノード)への転送 - > APIゲートウェイ(aws hostname) - > lambda
yourhostname.com - >自己ホスト型Webサーバー

ここでは、画像を少し鮮明にする可能性があります。 enter image description here

マイクロサービスを構築するためにバックエンドの開発に間違ったフラスコが使用されている場合は修正してください。ホストするには、ラムダ関数を作成するか、独自のインスタンスでホストするかのいずれかを使用します。 https://andrich.blog/2017/02/12/first-steps-with-aws-lambda-zappa-flask-and-python/

これが役立つかどうか教えてください。

1

実際にはzappa’s readmeで説明されています。AWS証明書マネージャを使用してドメイン

アマゾンへのデプロイ

はのは、AWS証明書マネージャ(ACM)と呼ばれる暗号化できるように、自分の自由な選択肢を提供します。 Zappaでこのサービスを使用するには:

AWS Certificate Managerコンソールでドメインを確認します。 コンソールで、N. Virginia(us-east-1)領域を選択し、ドメインまたはサブドメイン(sub.yourdomain.tld)の証明書を要求するか、ワイルドカードドメイン(* .yourdomain.tld)を要求します。 その証明書のARN全体をコピーし、Zappa設定certificate_arnに配置します。 ドメイン設定で目的のドメインを設定します。 $ zappa certifyを呼び出して、その証明書を使用してAPIゲートウェイ配布を作成および関連付ける。

既存の証明書を使用するための説明書等もあります

それにだまされてはいけません、セクションのタイトルは、それが唯一の証明書についてですようにそれが聞こえるが、使用に関する詳細な手順がありますあなたはドメインを所有しています。

編集: 参考のためにmy own zappa settingsが含まれています。ドメインのためのステップガイドによって

{ 
    "common": { 
     "app_function": "app.__hug_wsgi__", 
     "aws_region": "eu-central-1", 
     "s3_bucket": "excuse-generator", 
     "profile_name": "mislavcimpersak", 
     "remote_env": "s3://excuse-generator/secrets.json", 
     "certificate_arn": "arn:aws:acm:us-east-1:500819636056:certificate/3edb9c1c-12c5-4601-89a9-dc42df840fa6" 
    }, 
    "prod": { 
     "extends": "common", 
     "domain": "function.xkcd-excuse.com" 
    }, 
    "dev": { 
     "extends": "common", 
     "debug": true, 
     "keep_warm": false, 
     "domain": "function-dev.xkcd-excuse.com" 
     } 
    } 

ステップはnamecheap.comに買って、新しいサイトを登録namecheap.com/use既存

  • にcloudflare.comを通じて

    1. 買いドメインを務めましたcloudflare.com/use既存の
    2. 雲のフレアはあなたに(おそらく)2つのネームサーバを与えるでしょう
    3. https://ap.www.namecheap.com/domains/domaincontrolpanel/xkcd-excuse.com/domain DNSの下に入る - 複数必要な場合は
    4. が入る(証明書がたち-東-1地域内に作成する必要があります)にCloudFlare
    5. に与えられた「カスタムDNS」のネームサーバは、AWS ACMに移動し、新しい証明書を要求選びますzappa_settings.jsonでAWSマネジメントコンソール
    6. から与えられたACM ARNのサブドメイン(foo.example.com & foo-dev.example.com
    7. メイクノートはにcertificate_arnの下であなたのARN
    8. を入力します。これは、各段階、すなわちドメインを入力しzappa_settings.jsondomain下で必須
    9. ある- route53_enabled下の210はfalseを置きます。 foo.example.comfoo-dev.example.com
    10. 実行zappa certify <stage_name>
    11. それは言う必要があります:それは作成され、AWSを介して伝播するこのドメインの40分かかることに注意してください供給証明書を使用して、新しいドメイン名を作成しました」が、それはありませんが必要です。あなたの一部でさらに働きます。 証明書が更新されました!「
    12. はCloudFlareのDNSインターフェイスに移動し、
      • CNAMEを入力します。FOO - i3jtsjkdeu4wxo.cloudfront.net
      • CNAME:FOO-devの - 40分間d2jtsjkdeu4wxo.cloudfront.net
    13. 待機をし、あなたのドメインをチェックすると、あなたのラムダ関数を提供する必要があります。
  • +0

    私はこれを複製しようとしてきました。 'zappa certify'を実行すると、" botocore.errorfactory.BadRequestException:CreateDomainName操作を呼び出すときにエラー(BadRequestException)が発生しました:あなたが指定したドメイン名はすでに存在します。 " もちろん存在しますか? – ScottieB

    +0

    あなたの 'zappa_settings.json'ファイルを共有できますか? – mislavcimpersak

    +0

    質問が更新されました。間違いなく私が近づいているように感じる – ScottieB

    関連する問題