0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】 LambdaでRoute53にAレコードを登録する。

Last updated at Posted at 2023-08-31

はじめに

👋こんにちは!Web系の企業に勤務し、地方からフルリモート勤務をしている@takakouと申します🏙️✨

今回は、「Lamdaを用いて、Route53にAレコードを登録する」というテーマで記事をシェアします!📝

この記事を執筆しようと思った経緯としては、私自身が Lamdaを用いてAレコードRoute53に登録することについて言及しているリファレンスが少ないと思ったからです。💡

そこで、同じ疑問を持つ方の解消ができればと思い執筆しました🌟

正直、自分のメモのようなものなのでかなり見づらいと思いますが、ご了承いただけますと幸いです🙏

記事執筆は未熟者で、至らない点もあるかと思いますが、皆さんのコメントやフィードバックをお待ちしています!🚀💬

目次

  1. 対象者 👨
  2. 動作環境 🖥️
  3. 前提条件 🗒
  4. 導入手順 🚀
  5. 参考文献 📚
  6. おわりに 🎉

1. 対象者

  • Lamdaを使用したことがある方
  • Route53を使用したことがある方。
  • Lamdaを用いてRoute53にAレコードを登録したい方

本記事について
下記のように取得してあるドメインにAレコードを登録していきます。
用途としては、IPアドレスを固定にできない時などです。

  • (例)127-0-0-1.example.com
  • (例)127-0-0-2.example.com

2. 動作環境

  • AWS Consoleに入れれば問題ないです。

3. 前提条件

  • Route53でドメインを取得してあること。

4. 導入手順

Lamdaを作成する

  • あまり経験がない方は公式リファレンス等参照いただけると良いと思います。

注意点
index.mjs->index.jsに変更しておいて下さい

Roleについて

  • LamdaにアタッチするRoleにはAmazonRoute53FullAccessのポリシーを付与しておいて下さい。付与されていないとAレコードを作成する権限がなく、エラーになります。

Lamdaの処理

const { Route53Client, ChangeResourceRecordSetsCommand } = require("@aws-sdk/client-route-53"); 

exports.handler = async function (event, context) {
    // Route53への接続
    const route53 = new Route53Client();

    // 変更を行うドメイン名とhostedzoneIDを入力
    const hostedZoneId = '********';
    const recordName = 'example.com';
    
    // IPアドレスを取得
    const newIpAddress = event.body.address;

    //レコード名を作成('.'->'-'へ正規化した上で結合)
    const newRecordName=newIpAddress.replace(/\./g, '-')+'.'+recordName

    // Aレコードの変更リクエストを作成
    const changeBatch = {
        Changes: [
            {
                Action: 'UPSERT',
                ResourceRecordSet: {
                    Name: newRecordName,
                    Type: 'A',
                    TTL: 300,
                    ResourceRecords: [
                        { Value: newIpAddress }
                    ]
                }
            }
        ]
    };
    
    // レコードの変更を実行
    try {
        const command = new ChangeResourceRecordSetsCommand({
            HostedZoneId: hostedZoneId,
            ChangeBatch: changeBatch
        });

        const response = await route53.send(command);

        console.log(response);
        
        return {
            statusCode: 200,
            body: JSON.stringify(response)
        };
    } catch (error) {
        console.error(error);
        
        return {
            statusCode: 500,
            body: JSON.stringify(error.message)
        };
    }
};

testを実行する。

  • 今回は、送られてきたIPアドレスの.->-に変換した文字列を、ドメインの頭につける形でAレコードを登録します。
  • 下記のjsonでテストを行います。
{
  "body": {
    "address": "127.0.0.1"
  }
}

実行結果の確認

  • Route53で自分が選択したホストゾーン(exaple.com)Aレコードが下記のように登録されていたらOKです。
    image.png

5. 参考文献

6. おわりに

今回の記事では、 LamdaでRoute53にAレコードを登録 してみたい時に、Lamdaにどんな処理を書けばいいのか記述をしました。

今回の内容を応用すれば、IPアドレスの変更等を検知した場合や、EC2の起動を検知した場合などに、Aレコードを新しく登録もしくは更新するなどもできると思います。

もし興味を持っていただけましたら、ぜひ他の記事も読んでいただけるとうれしいです! 📖🌟

(最後に、気づいた方もいらっしゃると思うのですが、絵文字を入れるのは苦手なので、文章に沿った絵文字を挿入するのに、ChatGPTを利用させていただきましたが、いかがでしたでしょうか。不快に思われた方がいたら申し訳ございません 🙇‍♂️)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?