#概要
アプリケーションの一部機能、カート機能や予約機能をクライアントのページで作成する時に、ドメインを指定したいという要望に対してHTTPS接続なので、ACM証明書をこちらで追加する必要があります。今回は、その部分を自動化を行います。
##使用技術
・AWS ACM
https://aws.amazon.com/jp/certificate-manager/
・AWS SDK for PHP
https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html
##作業手順
- 特定の機能のURLにクライアント固有のidなど含めます。
- クライアントが、【使用したいドメイン】をフォームに入力を行う。(AWS SDKを使用し入力されたドメインをACMに追加 レスポンスに含まれる「エントリー名」「値」を表示)
- クライアントが、DNSサービスプロバイダで作成した【使用したいドメイン】にCNAMEで「1.のURL」 「エントリー名」 「値」を登録
上記の3ステップでクライアント側の操作のみで、SSL化されたドメインを割り当てれるようになります。
####AWS SDK for PHPを使用しACM登録処理,「エントリー名」 「値」を確認する
参考コード(for_laravel)
use App\Certification;
use Aws\Acm\AcmClient;
public function createACM(Request $request)
{
$client = new AcmClient([
'version' => 'latest',
'region' => 'ap-northeast-2',
'credentials' => [
'key' => config('aws.key'),
'secret' => config('aws.secret_key'),
],
]);
//ACM登録
$result = $client->requestCertificate([
'DomainName' => $request->url;,
'Tags' => [
[
'Key' => '<string>', // REQUIRED
'Value' => '<string>',
],
],
'ValidationMethod' => 'DNS',
]);
//こちらで、ACMの情報を呼び出します。
$resource_name = $result['CertificateArn'],
$results = $client->describeCertificate([
'CertificateArn' => $resource_name
]);
$エントリー名 = $results['Certificate']['DomainValidationOptions'][0]["ResourceRecord"]['Name'];
$値 = $results['Certificate']['DomainValidationOptions'][0]["ResourceRecord"]['Value'];
}
参考URL
https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-acm-2015-12-08.html#requestcertificate
##あとがき
半年ほど前に実装した機能で、上手く説明出来なかったのですが記事にして理解できました。
クラウドフロントのキャッシュ削除なんかも下記サイトをみて実装しました。めっちゃ便利です!
・AWS SDK for PHP
https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html