无法使用 boto3 连接到 AWS Cloudfront

Can't connect to AWS Cloudfront using boto3

我有一个 Lambda 函数试图使 Cloudfront 分配的缓存无效,但它超时了。同样的函数成功连接到 SecretsManager。

# python code

session = boto3.session.Session()

# ....

cf_client = session.client(service_name='cloudfront', config=config)

# ......

cf_client.create_invalidation(
          DistributionId=distro,
          InvalidationBatch={
              'Paths': {
                  'Quantity': 1,
                  'Items': [f'/api/dict/{dict_name}/article/{art_id}']
              },
              'CallerReference': str(time.time())
          }
      )

我正在使用此政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "cloudfront:*",
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

我知道 S3 和 SecretsManager 需要在 VPC 中设置某些端点,Cloudfront 是否有类似的东西?

is there something similar for Cloudfront?

不,没有。 CloudFront does not have VPC 接口端点。您必须设置 NAT 才能与私有子网中的 CF 交互。或者,您可以通过具有 VPC 接口端点的 lambda 函数间接执行此操作。