当前位置: 首页 > article >正文

通过PHP创建AWS的CloudFront并绑定证书添加备用域名

如果你要做一个动态绑定域名到AWS服务器的功能,那一定会经历以下事情:

1、申请证书

2、创建源S3(静态)或者EC2 (去后台手动操作)

3、创建CloudFront 

4、绑定证书到CloudFront

5、添加备用域名

如果是你自己给自己的服务器添加域名,那这些操作都可以在AWS后台手动操作。

但现在我公司有一个需求,是提供服务器,让用户自己注册域名,并把自己注册的域名通过我们提供的后台去绑定到我们的服务器上,当然不能让用户登录我们的AWS后台操作了。这就需要我们提供API接口去动态操作上面的1,3,4,5步骤了。

申请证书API操作前面的文章已经说过了。这里就说怎么通过PHP的SDK创建CloudFront,绑定证书,添加备用域名了。

require 'vendor/autoload.php';
 
use Aws\CloudFront\CloudFrontClient;
use Aws\Exception\AwsException;
use Aws\Iam\IamClient;
use Aws\CertificateManager\CertificateManagerClient;
 
// 配置AWS SDK
$awsConfig = [
    'version' => 'latest',
    'region'  => 'us-east-1'
];
 
$cloudFrontClient = new CloudFrontClient($awsConfig);
$iamClient = new IamClient($awsConfig);
$certificateManagerClient = new CertificateManagerClient($awsConfig);
 
// 创建发行版
try {
    $result = $cloudFrontClient->createDistribution([]);
    $distributionId = $result['Distribution']['Id'];
    echo "创建发行版成功,ID: " . $distributionId . "\n";
} catch (AwsException $e) {
    echo "创建发行版失败:" . $e->getMessage() . "\n";
    exit();
}
 
// 绑定证书
try {
    $certificateResult = $certificateManagerClient->listCertificates();
    $certificateArn = $certificateResult['CertificateSummarys'][0]['CertificateArn'];
 
    $result = $cloudFrontClient->updateDistribution([]);
    echo "证书绑定成功。\n";
} catch (AwsException $e) {
    echo "证书绑定失败:" . $e->getMessage() . "\n";
    exit();
}
 
// 添加备用域名
try {
    $result = $cloudFrontClient->updateDistribution([]);
    echo "备用域名添加成功。\n";
} catch (AwsException $e) {
    echo "备用域名添加失败:" . $e->getMessage() . "\n";
    exit();
}


http://www.kler.cn/a/394808.html

相关文章:

  • BILSTM法律网站用户提问自动分类
  • 第 13 章 -Go 语言 接口
  • ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决
  • 数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
  • git配置远程仓库的认证信息
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-Qwen-Agent深入学习(四)
  • sql server创建固定的链路服务器
  • kafka:使用flume自定义拦截器,将json文件抽取到kafka的消息队列(topic)中,再从topic中将数据抽取到hdfs上
  • 麒麟服务器工作站SP1 arm环境qt5.6.3源码编译
  • 如何处理 iOS 客户端内 Webview H5 中后台播放的音视频问题
  • Mac 使用mac 原生工具将mp4视频文件提取其中的 mp3 音频文件
  • git config是做什么的?
  • 如何在 Ubuntu 22.04 上安装 ownCloud
  • 数字IC后端实现之Innovus specifyCellEdgeSpacing和ICC2 set_placement_spacing_rule的应用
  • 低代码可视化-uniapp开关选择组件-低码生成器
  • 理解 C++ 中的 `const` 关键字
  • AI 模型:追求全能还是专精?
  • python 数据类型----可变数据类型
  • 在 RHEL 8 | CentOS Linux release 8.5.2111上安装 Zabbix 6
  • 网上怎么样可以挣钱,分享几种可以让你在家赚钱的兼职项目
  • linux虚拟机无法使用yum在线拉取
  • 开发语言中,堆区和栈区的区别
  • 自动化生成测试用例:利用OpenAI提升电商网站测试覆盖率
  • macOS 设置固定IP
  • 一文详解MacOS使用VSCode搭建SpringBoot+Gradle开发环境
  • HarmonyOS ArkUI(基于ArkTS) 开发布局 (上)