标签: amazon-cloudfront

在 aws cloudfront 中签名 cookie,无需密钥对(RSA 私钥)

我正在使用 Docker 在一次性机器 (AWS-ECS) 中部署我的应用程序,将其拆分为用 Node.js 开发的微服务。查看用于获取签名令牌以访问cloudfront资源的API:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront/Signer.html,似乎必须强制将密钥对作为构造函数中的参数传递(初始化)。

我不想包含任何 CloudFront 密钥对,因为这些机器可能会死掉,并且在其中存储任何文件是没有意义的。有没有什么方法可以通过 IAM 策略(例如 CloudFrontFullAccess)向这些计算机授予权限来获取签名令牌?我已经部署了一项服务来获取 S3 签名的 URL,并且不需要使用密钥对,只需使用 IAM 策略即可。

amazon-s3 amazon-web-services amazon-ecs node.js amazon-cloudfront

2
推荐指数
1
解决办法
1368
查看次数

如何隐藏 S3 上托管的 Angular 4 网站中的基本 href

我有一个网站托管在用 Angular 4 编写的 S3 存储桶上。

我在 Route 53 上有一个指向 CloudFront 分配的 URL,该分配指向 S3 存储桶的 index.html(设置为无缓存)。

在 S3 存储桶中,我有每个版本示例的文件夹:

mywebsite.com
-> v1.0.0
   -> pricing.html
-> index.html
Run Code Online (Sandbox Code Playgroud)

在我的index.html 中我有 <base href="/v1.0.0/">

这非常完美,可以转到正确的页面,并且始终获得网站的最新版本,因为 index.html 没有被缓存。

然而,这使我的网址看起来像:
https://www.mywebsite.com/v1.0.0/pricing

如何隐藏 URL 中的“/v1.0.0/”?

amazon-s3 amazon-cloudfront amazon-route53 angular

2
推荐指数
1
解决办法
1046
查看次数

CloudFront TTL 过期和失效之间的区别?

CloudFront 通过 CloudFront TTL 设置在源使对象过期与调用 invalidate 之间有什么实际区别?

amazon-web-services amazon-cloudfront

2
推荐指数
1
解决办法
2261
查看次数

无法在 Cloudfront 层上的 Lambda + API Gateway + Cloudfront 上启用 CORS

我部署了一个 lambda,它本身'Access-Control-Allow-Origin': '*'在其响应中返回一个标头。

我从 API 网关调用它。调用API网关URL时,CORS配置即可。

我将 CloudFront 放在 API 前面,但是现在我无法访问 API,因为 CORS 配置似乎被 CloudFront 覆盖,并且我不确定在 CloudFront 中的何处添加自定义标头。

如何在 CloudFront 中启用 CORS?

amazon-web-services amazon-cloudfront aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
5443
查看次数

我可以在 AWS 中将弹性 IP 与 Cloudfront 结合使用吗?

我们希望在我们的 AWS 基础设施中使用 Cloudfront。问题是是否可以在 EC2 实例中拥有我们现在使用的相同弹性 IP。或者我们是否必须切换到 Cloudfront IP?

amazon-web-services amazon-cloudfront elastic-ip

2
推荐指数
1
解决办法
6621
查看次数

Terraform 中可选的 CloudFront Lambda 函数关联

我们在 CloudFront 和 S3 上托管我们的 Web 应用程序。该基础设施是在 Terraform 模块中配置的。我们使用相同的模块(由 Terragrunt 管理)将我们的 Web 应用程序部署到我们的暂存和生产环境。

显然,我们不希望公众访问我们的暂存环境。因此,我们创建了一个 Lambda 函数来启用基本 HTTP 身份验证,并使用资源lambda_function_association内的aws_cloudfront_distribution来启用它。

问题是我们不希望 Lambda 也在我们的生产环境中运行。我无法有条件地设置资源的关联。

我还尝试创建两个具有相同名称的资源并设置属性,count以便仅存在这些资源。

例如

# Basic Auth Guard
resource "aws_cloudfront_distribution" "default" {
  count = "${var.behind_auth_guard}"
  ...
}

# No Basic Auth Guard
resource "aws_cloudfront_distribution" "default" {
  count = "${var.behind_auth_guard ? 0 : 1}"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试部署代码时,我得到了aws_cloudfront_distribution.default: resource repeated multiple times.

有什么办法可以实现我想要的吗?

我考虑过的另一个选择是在两个版本上设置 Lambda,但让它在产品中不执行任何操作。然而,这似乎效率低下且成本高昂,因为每次请求都会调用 Lamdba,并且希望尽可能避免这种情况。

amazon-cloudfront aws-lambda terraform

2
推荐指数
1
解决办法
1845
查看次数

访问索引文档时,Cloudfront 给出“访问被拒绝”

我有一个配置为用作静态网站的 S3 网站,以及一个以 S3 存储桶为源的 Cloudfront 发行版。

我的索引文件被调用index,并且我已将其指定为存储桶配置和 Cloudfront 分发配置中的索引文件。

在此输入图像描述

在此输入图像描述

但是,如果我访问https://example.com/directory/,我会收到如下错误文档,其中 RequestID 和 HostID 在每个请求上都会更改:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>7F09A18821FE70FD</RequestId><HostId>H5OR+AZpNSGlhrUX1ECegTbWkio728A1MIdGkO4bkCZIJa/XQ6Uv7Hu0GgNgyxL+snerPPDnzr8=</HostId></Error>
Run Code Online (Sandbox Code Playgroud)

如果我访问https://example.com/directory/index那么页面会正确显示。

如果我从 cloudfront URL 或 S3 网站端点(而不是我的自定义域)访问网站,则不会出现问题。

访问 S3 存储桶时如何正确提供目录索引页?

amazon-s3 amazon-cloudfront

2
推荐指数
1
解决办法
1814
查看次数

Cloudfront 在连接到 ELB/Elastic Beanstalk 时抛出 504

因此,我有一个托管在 Elastic Beanstalk 上的 NextJS 应用程序(它在 docker 文件中的端口 3000 上公开)。现在,我已在 Godaddy 注册了域名。我最初在 Godaddy 中设置了指向 Elastic Beanstalk 的 DNS。但后来我想使用 cloudfront 进行 CDN/缓存。

因此,我开始配置 Cloudfront(使用本文)。我创建了自定义 SSL 证书并通过 DNS 对其进行了验证。我将 cloudfront 中的原点设置为指向 ELB。

现在,部署 cloudfront 发行版后,我尝试使用 cloudfront URL xxxxx.cloudfront.net,但出现"504 ERROR - The request could not be satisfied"错误。

如果我访问 ELB URL,我就可以访问我的应用程序。所以,我不确定这里出了什么问题。如果 Cloudfront 指向 ELB 并且 ELB 有效,那么为什么 cloudfront URL 不起作用。

有什么建议/建议吗?

amazon-web-services amazon-cloudfront amazon-elb amazon-elastic-beanstalk

2
推荐指数
1
解决办法
3004
查看次数

部署到AWS S3与github同步

我正在尝试使用 github 操作将静态站点部署到 AWS S3 和 Cloudfront。我的 Github Action 代码是:

name: deploy-container

on:
  push:
    branches:
      - master
    paths:
      - 'packages/container/**'

defaults:
  run:
    working-directory: packages/container

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - run: npm install
      - run: npm run build

      - uses: chrislennon/action-aws-cli@v1.1
      - run: aws s3 sync dist s3://${{secrets.AWS_S3_BUCKET_NAME}}/container/latest
        env:
          AWS_ACCESS_KEY_ID: ${{secrets.AWS_ACCESS_KEY_ID}}
          AWS_SECRET_ACCESS_KEY: ${{secrets.AWS_SECRET_ACCESS_KEY}}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试构建时出现了这些错误

Github 操作 1 Github 操作 2

amazon-s3 amazon-web-services amazon-cloudfront webpack github-actions

2
推荐指数
1
解决办法
6489
查看次数

AWS Cloudfront 将 javascript 模块提供为错误的 MIME 类型(“Text/Plain”)

我有一个托管在 Amazon S3 存储桶上的 Vue 应用程序。通过带有 http 的 S3 链接访问时,加载效果非常好。当我通过指向 cloudfront 的自定义 SSL 域链接访问该网站时,无法正确提供 javascript。JS 文件可以在浏览器中通过 https 完全访问,但不会在浏览器中执行,给我留下一个空白页面。对于 index.html 中的两个 javascript 链接,我收到以下错误:

无法加载模块脚本:需要 JavaScript 模块脚本,但服务器以 MIME 类型“text/plain”进行响应。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。

另外:我按照此处的说明进行操作:https://levelup.gitconnected.com/deploying-vue-js-to-aws-with-https-and-a-custom-domain-name-3ae1f79fe188

javascript https amazon-s3 amazon-cloudfront vue.js

2
推荐指数
2
解决办法
5406
查看次数