全部JavaScriptでどうにかしちゃおうというものぐさAWSシリーズ再開です。
今回はAmazon Certificate Manager(以下ACM)の証明書をJavaScriptで取得します。
必要最小限のコード
var AWS = require('aws-sdk');
var acm = new AWS.ACM({
apiVersion: '2015-12-08',
accessKeyId: "ACCESS_KEY_ID",
secretAccessKey: "SECRET_ACCESS_KEY",
region: "REGION"
});
var params = {
DomainName: "YOUR_DOMAIN_NAME",
DomainValidationOptions: [
{
DomainName: "YOUR_DOMAIN_NAME",
ValidationDomain: "YOUR_SUBDOMAIN_NAME"
},
]
};
acm.requestCertificate(params).promise().then(
(data) => {
console.log(data);
}
).catch(
(err) => {
console.log(err, err.stack);
}
);
参考になるかわからないメモ
ACMはメール認証オンリーです。
認識メールの送信先ですが、「DomainValidationOptions」の方のDomainNameに入れたドメインを使った以下のアドレス+ whoisに登録されたメールアドレスに送信されます。
admin@example.com
administrator@example.com
hostmaster@example.com
postmaster@example.com
webmaster@example.com
ValidationDomainにサブドメインを入れておくと、
admin@subdomain.example.com
administrator@subdomain.example.com
hostmaster@subdomain.example.com
postmaster@subdomain.example.com
webmaster@subdomain.example.com
にもメールを送信する様子です。サブドメイン特に使わない様子であれば全部同じ値でいいと思います。
「どのメアドも受信できねーよ!」という方は、S3とSESとRoute53を使ってメールをインターセプトする方法があるのでそれを参考にしてください。ちなみにここも頑張れば自動化できそうです。(ただしつらい)
戻り値
nodeをCLIから実行すると、以下のようになります。
$ node auto_acm.js
{ CertificateArn: 'arn:aws:acm:us-east-1:999999999999:certificate/aXXXXXX-99xx-99x9-9x99-x999x9999x99' }
ACMのarnが返ってきてますね。
おそらくこれを使って、このままCloudFrontやELBに証明書設定するスクリプトを書けというお告げだと思いますので、引き続きものぐさシリーズを続けていきたいと思います。