amazon-web-services - 仅通过 CloudFront 访问 ElasticBeanstalk

标签 amazon-web-services amazon-elastic-beanstalk amazon-cloudfront

我当前的设置包括 CloudFront 和 Elastic Beanstalk。如何配置对应LoadBalancer的安全组,只有来自CloudFront的请求才能通过LoadBalancer?

最佳答案

这可以通过使用 Cloud Front IP 地址设置安全组并将 EC2 实例限制到该安全组来完成。由于Cloudfront IP一直在变化,this will be updated with a Lambda Function .

Full Directions Are Here ,但这里是悬崖笔记:

  • AWS 控制台 -> EC2 -> 安全组
  • 在与您的 EB 实例相同的 VPC 中创建安全组,确保创建以下标签:
  • 自动更新:真
  • 姓名:云端
  • 协议(protocol):http(或者,如果您修改脚本,也可以是 https,或者自定义的东西)。
  • 创建包含以下内容的 IAM 策略:

  • {
    “版本”:“2012-10-17”,
    “陈述”: [
    {
    “效果”:“允许”,
    “行动”: [
    “日志:创建日志组”,
    "日志:CreateLogStream",
    “日志:PutLogEvents”
    ],
    “资源”:“arn:aws:logs:::”
    },
    {
    “效果”:“允许”,
    “行动”: [
    "ec2:DescribeSecurityGroups",
    "ec2:AuthorizeSecurityGroupIngress",
    “ec2:撤销安全组入口”
    ],
    “资源”:“”
    }
    ]
    }
  • 在 IAM 中使用上述策略创建角色
  • 创建 Lambda 函数 based on this source code ,并为其分配在步骤 #5 中创建的角色。
  • Use the sample at the bottom of the source code to test the function .
  • 当由于您提取的 JSON 与测试请求中的哈希不匹配而失败时,请从错误消息中获取其期望的哈希值,并将测试样本中的 md5 值替换为该值。
  • 重新运行测试。这一次它会成功。

  • 注意:查看您创建的组,它们现在填充了一大堆 CloudFront IP 条目。
  • AWS 控制台 -> Elastic Beanstalk -> 应用程序 -> 环境 -> 配置 -> 实例 - 更新组以包含您创建的组的组 ID。

  • Lambda 函数将使您的 IP 列表保持同步。

    关于amazon-web-services - 仅通过 CloudFront 访问 ElasticBeanstalk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682456/

    相关文章:

    amazon-web-services - 具有静态 IP 地址的 AWS 负载均衡器

    javascript - 对 HTML5 中的流式视频感到困惑

    javascript - Cloudfront 和 Lambda@Edge : Remove response header

    amazon-web-services - 在 BitBucket 托管上收到错误 "CNAME already registered with CloudFront",但我从未向 CloudFront 注册过该域

    mysql - AWS RDS 实例的可用时间点恢复点

    amazon-web-services - 如何从 ami 镜像跟踪新启动的 ec2 实例?

    amazon-web-services - AWS 跨账户共享 AMI 标签未显示

    python - Django manage.py 命令在 ElasticBeanstalk 上有 SyntaxError

    amazon-web-services - AWS cli : not authorized to perform: sts:AssumeRole on resource

    java - 如何将 eclipse 服务器添加到现有 EC2 实例